ast-crispr-ruby-prism 7.1.8 → 7.1.10

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: 5cea0d230605b09f52e2d5c4b18cd3d382f3e3ad999d85d12a9d9aefcb2d3f03
4
- data.tar.gz: 16991f42c39b39a88609d7df149289903675fbf32cee6fa068e4144018ac632b
3
+ metadata.gz: 7ad2fc332edea870e506506c71dd779caa84870a502c5d551863cf37b8838eae
4
+ data.tar.gz: 539b8b9c7986c6c5f6b5c9fc59a2a70b46d44655bec2a7662d362c0b535b3c09
5
5
  SHA512:
6
- metadata.gz: '08f55065b901afaf44764d5a802ef7f6f737bf5495dba7937f156c6ec552e793a1d856a93737f4652f5e49796379246a2578130057fce6bf17d0870728243eff'
7
- data.tar.gz: 60cde3b25b34af0323f0ab3cde291db824b5fa18e1a14ed52504669b322ae319573610c40b975ec4fe1897a165ff5aaede97f0b482c261c7e46c2b1d20b4a501
6
+ metadata.gz: 1b3614da6e67904a8d59837fde603e3900204fae159025f20caae58976c7ea637dbb675e29bb6df9d47df4cbf907e04d2f0ab685113fc301bd71c871602fa204
7
+ data.tar.gz: 444d4b066e515426885d8ea176acabf7226ea3c9113b2a44ed29c49e51ed1ad245dda09e66b0e30e9aa00dc5de006e0e9daa4dcdf17aa0bf3c096109d72c705c
checksums.yaml.gz.sig CHANGED
Binary file
@@ -7,7 +7,7 @@ module Ast
7
7
  # Version namespace for this gem.
8
8
  module Version
9
9
  # Current gem version.
10
- VERSION = '7.1.8'
10
+ VERSION = '7.1.10'
11
11
  end
12
12
  # Current gem version exposed at the traditional constant location.
13
13
  VERSION = Version::VERSION # Traditional Constant Location
@@ -2,6 +2,7 @@
2
2
 
3
3
  require 'ast/crispr'
4
4
  require 'prism/merge'
5
+ require 'tree_haver'
5
6
  require_relative 'prism/version'
6
7
 
7
8
  module Ast
@@ -36,6 +37,8 @@ module Ast
36
37
  case owner_scope
37
38
  when :shared_default, :line_bound_statements, :top_level_statements
38
39
  analysis.statements
40
+ when :all_statements
41
+ statement_groups(document).flatten(1)
39
42
  when :ruby_comments
40
43
  analysis.parse_result.comments
41
44
  else
@@ -45,7 +48,12 @@ module Ast
45
48
 
46
49
  def comment_regions_for(document, owner, region: :leading, owner_scope: :shared_default)
47
50
  analysis = document.ast
48
- owners = structural_owners(document, owner_scope: owner_scope)
51
+ owners = case owner_scope
52
+ when :all_statements
53
+ statement_groups(document).find { |group| group.include?(owner) } || []
54
+ else
55
+ structural_owners(document, owner_scope: owner_scope)
56
+ end
49
57
 
50
58
  case region
51
59
  when :leading
@@ -68,6 +76,13 @@ module Ast
68
76
  supported_comment_regions: [:leading],
69
77
  metadata: { adapter: :prism }
70
78
  )
79
+ when :all_statements
80
+ Ast::Crispr::StructureProfile.new(
81
+ owner_scope: owner_scope,
82
+ owner_selector: :line_bound_statements,
83
+ supported_comment_regions: [:leading],
84
+ metadata: { adapter: :prism, selector: :all_statements }
85
+ )
71
86
  when :ruby_comments
72
87
  Ast::Crispr::StructureProfile.new(
73
88
  owner_scope: owner_scope,
@@ -79,6 +94,30 @@ module Ast
79
94
  raise Ast::Crispr::Error.new('Unsupported CRISPR owner scope', details: { owner_scope: owner_scope })
80
95
  end
81
96
  end
97
+
98
+ private
99
+
100
+ # Every StatementsNode body found anywhere in the tree (the
101
+ # top-level program body, and every nested block/def/class/etc.
102
+ # body), each kept as its own group so leading-comment ownership
103
+ # can be resolved against a node's real local siblings rather
104
+ # than a single flattened, cross-scope list. Built from the same
105
+ # ::Prism::ParseResult document.ast already parsed and memoizes,
106
+ # so node identity stays consistent with #statements and
107
+ # #parse_result.comments — no separate re-parse.
108
+ def statement_groups(document)
109
+ root = TreeHaver::Backends::Prism::Node.new(document.ast.parse_result.value, document.content)
110
+ groups = []
111
+ walk_statement_groups(root, groups)
112
+ groups
113
+ end
114
+
115
+ def walk_statement_groups(node, groups)
116
+ return unless node
117
+
118
+ groups << node.inner_node.body if node.inner_node.is_a?(::Prism::StatementsNode)
119
+ node.children.each { |child| walk_statement_groups(child, groups) }
120
+ end
82
121
  end
83
122
 
84
123
  module Selectors
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ast-crispr-ruby-prism
3
3
  version: !ruby/object:Gem::Version
4
- version: 7.1.8
4
+ version: 7.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -43,28 +43,42 @@ dependencies:
43
43
  requirements:
44
44
  - - '='
45
45
  - !ruby/object:Gem::Version
46
- version: 7.1.8
46
+ version: 7.1.10
47
47
  type: :runtime
48
48
  prerelease: false
49
49
  version_requirements: !ruby/object:Gem::Requirement
50
50
  requirements:
51
51
  - - '='
52
52
  - !ruby/object:Gem::Version
53
- version: 7.1.8
53
+ version: 7.1.10
54
54
  - !ruby/object:Gem::Dependency
55
55
  name: prism-merge
56
56
  requirement: !ruby/object:Gem::Requirement
57
57
  requirements:
58
58
  - - '='
59
59
  - !ruby/object:Gem::Version
60
- version: 7.1.8
60
+ version: 7.1.10
61
61
  type: :runtime
62
62
  prerelease: false
63
63
  version_requirements: !ruby/object:Gem::Requirement
64
64
  requirements:
65
65
  - - '='
66
66
  - !ruby/object:Gem::Version
67
- version: 7.1.8
67
+ version: 7.1.10
68
+ - !ruby/object:Gem::Dependency
69
+ name: tree_haver
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - '='
73
+ - !ruby/object:Gem::Version
74
+ version: 7.1.10
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - '='
80
+ - !ruby/object:Gem::Version
81
+ version: 7.1.10
68
82
  - !ruby/object:Gem::Dependency
69
83
  name: version_gem
70
84
  requirement: !ruby/object:Gem::Requirement
@@ -91,20 +105,20 @@ dependencies:
91
105
  requirements:
92
106
  - - "~>"
93
107
  - !ruby/object:Gem::Version
94
- version: '3.0'
108
+ version: '3.1'
95
109
  - - ">="
96
110
  - !ruby/object:Gem::Version
97
- version: 3.0.31
111
+ version: 3.1.8
98
112
  type: :development
99
113
  prerelease: false
100
114
  version_requirements: !ruby/object:Gem::Requirement
101
115
  requirements:
102
116
  - - "~>"
103
117
  - !ruby/object:Gem::Version
104
- version: '3.0'
118
+ version: '3.1'
105
119
  - - ">="
106
120
  - !ruby/object:Gem::Version
107
- version: 3.0.31
121
+ version: 3.1.8
108
122
  - !ruby/object:Gem::Dependency
109
123
  name: bundler-audit
110
124
  requirement: !ruby/object:Gem::Requirement
@@ -182,7 +196,7 @@ dependencies:
182
196
  version: '3.2'
183
197
  - - ">="
184
198
  - !ruby/object:Gem::Version
185
- version: 3.2.3
199
+ version: 3.2.5
186
200
  type: :development
187
201
  prerelease: false
188
202
  version_requirements: !ruby/object:Gem::Requirement
@@ -192,7 +206,7 @@ dependencies:
192
206
  version: '3.2'
193
207
  - - ">="
194
208
  - !ruby/object:Gem::Version
195
- version: 3.2.3
209
+ version: 3.2.5
196
210
  - !ruby/object:Gem::Dependency
197
211
  name: kettle-test
198
212
  requirement: !ruby/object:Gem::Requirement
@@ -202,7 +216,7 @@ dependencies:
202
216
  version: '2.0'
203
217
  - - ">="
204
218
  - !ruby/object:Gem::Version
205
- version: 2.0.21
219
+ version: 2.0.23
206
220
  type: :development
207
221
  prerelease: false
208
222
  version_requirements: !ruby/object:Gem::Requirement
@@ -212,7 +226,7 @@ dependencies:
212
226
  version: '2.0'
213
227
  - - ">="
214
228
  - !ruby/object:Gem::Version
215
- version: 2.0.21
229
+ version: 2.0.23
216
230
  - !ruby/object:Gem::Dependency
217
231
  name: turbo_tests2
218
232
  requirement: !ruby/object:Gem::Requirement
@@ -222,7 +236,7 @@ dependencies:
222
236
  version: '3.2'
223
237
  - - ">="
224
238
  - !ruby/object:Gem::Version
225
- version: 3.2.7
239
+ version: 3.2.14
226
240
  type: :development
227
241
  prerelease: false
228
242
  version_requirements: !ruby/object:Gem::Requirement
@@ -232,7 +246,7 @@ dependencies:
232
246
  version: '3.2'
233
247
  - - ">="
234
248
  - !ruby/object:Gem::Version
235
- version: 3.2.7
249
+ version: 3.2.14
236
250
  - !ruby/object:Gem::Dependency
237
251
  name: ruby-progressbar
238
252
  requirement: !ruby/object:Gem::Requirement
@@ -256,7 +270,7 @@ dependencies:
256
270
  version: '1.0'
257
271
  - - ">="
258
272
  - !ruby/object:Gem::Version
259
- version: 1.0.8
273
+ version: 1.0.9
260
274
  type: :development
261
275
  prerelease: false
262
276
  version_requirements: !ruby/object:Gem::Requirement
@@ -266,7 +280,7 @@ dependencies:
266
280
  version: '1.0'
267
281
  - - ">="
268
282
  - !ruby/object:Gem::Version
269
- version: 1.0.8
283
+ version: 1.0.9
270
284
  - !ruby/object:Gem::Dependency
271
285
  name: gitmoji-regex
272
286
  requirement: !ruby/object:Gem::Requirement
@@ -276,7 +290,7 @@ dependencies:
276
290
  version: '2.0'
277
291
  - - ">="
278
292
  - !ruby/object:Gem::Version
279
- version: 2.0.12
293
+ version: 2.0.15
280
294
  type: :development
281
295
  prerelease: false
282
296
  version_requirements: !ruby/object:Gem::Requirement
@@ -286,7 +300,7 @@ dependencies:
286
300
  version: '2.0'
287
301
  - - ">="
288
302
  - !ruby/object:Gem::Version
289
- version: 2.0.12
303
+ version: 2.0.15
290
304
  description: "\U0001F9EC Ruby/Prism structural owner selectors and edit helpers for
291
305
  ast-crispr."
292
306
  email:
@@ -307,10 +321,10 @@ licenses:
307
321
  - PolyForm-Small-Business-1.0.0
308
322
  metadata:
309
323
  homepage_uri: https://structuredmerge.org
310
- source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.8
311
- changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.8/CHANGELOG.md
324
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.10
325
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.10/CHANGELOG.md
312
326
  bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
313
- documentation_uri: https://www.rubydoc.info/gems/ast-crispr-ruby-prism/7.1.8
327
+ documentation_uri: https://www.rubydoc.info/gems/ast-crispr-ruby-prism/7.1.10
314
328
  funding_uri: https://github.com/sponsors/pboling
315
329
  wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
316
330
  news_uri: https://www.railsbling.com/tags/ast-crispr-ruby-prism
@@ -340,7 +354,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
340
354
  - !ruby/object:Gem::Version
341
355
  version: '0'
342
356
  requirements: []
343
- rubygems_version: 4.0.17
357
+ rubygems_version: 4.0.20
344
358
  specification_version: 4
345
359
  summary: "\U0001F9EC Prism adapter for AST CRISPR structural edits"
346
360
  test_files: []
metadata.gz.sig CHANGED
Binary file