sirop 0.8.3 → 1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5d626e8c25209085b021149621145861b6bf871246c60b5a845d53afc1cc92ee
4
- data.tar.gz: 414de510672f1f5dcb7d3b9d5deadf6ba9c507eeca7c499bb7c7f70038fbd4a8
3
+ metadata.gz: 446af1cdbbef6f8200df2e7bcf140d2df0cf756178ac5fdce5d2572ee1245abb
4
+ data.tar.gz: b04ab75762c1ec845c46a8271ad088575b7e6b6a5608b23f5d7cd345bfbe8b61
5
5
  SHA512:
6
- metadata.gz: dcf3ac4365b06e6b64671b8b72722b4905f114f289498bc2b2b78824b1903ff9e48b5cf89a77b009424676f7ddb7326f73443a7813fec7d45de751d58ceac7ec
7
- data.tar.gz: 5b44ac736d2c3e527bfb5912a788ad330af99f4648869a396977a3add8ce360ec1f58536b0a493eace402c800cafe777277e7e8de3779175ec1fab9fb4a3384d
6
+ metadata.gz: 553ea6a8548d976a1153c4e4f9cc6271c4df857bdcb0ea9aa2343ec9eab1aedef1c1bad09bbdf44456433b6fd0768b6d463061d4f1d70ca27cf1d86cdc8b40a6
7
+ data.tar.gz: b061bc9ac84cb24abffda697f1d31b9ab0ddaa5ed5a3666c2bf668233afa0d1080ebb9af636b07684c7d3b0662224965a4cd561f60063eed4d20090a4f8c9c69
data/CHANGELOG.md CHANGED
@@ -1,3 +1,11 @@
1
+ # 1.0 2025-10-08
2
+
3
+ - Add support for getting AST of procs/methods defined in IRB session
4
+
5
+ # 0.9 2025-08-17
6
+
7
+ - Add advance_to_end option to `Sourcifier#adjust_whitespace`
8
+
1
9
  # 0.8.3 2025-08-08
2
10
 
3
11
  - Add support for `it`
@@ -122,11 +122,11 @@ module Sirop
122
122
  end
123
123
 
124
124
  def emit(str)
125
- update_source_map
125
+ update_source_map(str)
126
126
  @buffer << str
127
127
  end
128
128
 
129
- def update_source_map
129
+ def update_source_map(str = nil)
130
130
  return if !@source_map
131
131
 
132
132
  buffer_cur_line = @buffer.count("\n") + 1
@@ -134,7 +134,7 @@ module Sirop
134
134
  @source_map[buffer_cur_line + @source_map_line_ofs] ||= orig_source_cur_line
135
135
  end
136
136
 
137
- def adjust_whitespace(loc)
137
+ def adjust_whitespace(loc, advance_to_end: true)
138
138
  return if loc.is_a?(Sirop::Injection)
139
139
 
140
140
  if @last_loc_start
@@ -154,7 +154,7 @@ module Sirop
154
154
  end
155
155
  @last_loc = loc
156
156
  @last_loc_start = loc_start(loc)
157
- @last_loc_end = loc_end(loc)
157
+ @last_loc_end = advance_to_end ? loc_end(loc) : @last_loc_start
158
158
  end
159
159
 
160
160
  def emit_code(loc, semicolon: false, chomp: false)
data/lib/sirop/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  module Sirop
2
2
  # Sirop version
3
- VERSION = '0.8.3'
3
+ VERSION = '1.0'
4
4
  end
data/lib/sirop.rb CHANGED
@@ -36,7 +36,7 @@ module Sirop
36
36
 
37
37
  def proc_ast(proc)
38
38
  fn, lineno = proc.source_location
39
- pr = Prism.parse(IO.read(fn), filepath: fn)
39
+ pr = Prism.parse(get_source(fn), filepath: fn)
40
40
  program = pr.value
41
41
 
42
42
  Finder.find(program, proc) do
@@ -62,7 +62,7 @@ module Sirop
62
62
 
63
63
  def method_ast(method)
64
64
  fn, lineno = method.source_location
65
- pr = Prism.parse(IO.read(fn), filepath: fn)
65
+ pr = Prism.parse(get_source(fn), filepath: fn)
66
66
  program = pr.value
67
67
 
68
68
  Finder.find(program, method) do
@@ -72,5 +72,17 @@ module Sirop
72
72
  end
73
73
  end
74
74
  end
75
+
76
+ def get_source(fn)
77
+ return get_irb_source if fn == '(irb)'
78
+
79
+ IO.read(fn)
80
+ end
81
+
82
+ def get_irb_source
83
+ io = IRB.CurrentContext.io
84
+ last_line = io.instance_variable_get(:@line_no)
85
+ (1..last_line).map { io.line(it) }.join
86
+ end
75
87
  end
76
88
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sirop
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: '1.0'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
@@ -15,14 +15,14 @@ dependencies:
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: 1.4.0
18
+ version: 1.5.1
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: 1.4.0
25
+ version: 1.5.1
26
26
  - !ruby/object:Gem::Dependency
27
27
  name: minitest
28
28
  requirement: !ruby/object:Gem::Requirement
@@ -37,6 +37,20 @@ dependencies:
37
37
  - - "~>"
38
38
  - !ruby/object:Gem::Version
39
39
  version: 5.25.5
40
+ - !ruby/object:Gem::Dependency
41
+ name: irb
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: 1.15.2
47
+ type: :development
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: 1.15.2
40
54
  email: sharon@noteflakes.com
41
55
  executables: []
42
56
  extensions: []
@@ -76,7 +90,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
76
90
  - !ruby/object:Gem::Version
77
91
  version: '0'
78
92
  requirements: []
79
- rubygems_version: 3.6.9
93
+ rubygems_version: 3.7.0.dev
80
94
  specification_version: 4
81
95
  summary: 'Sirop: Ruby code rewriter'
82
96
  test_files: []