tree_haver 5.0.5 → 7.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.
Files changed (59) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/LICENSE.md +13 -0
  4. data/README.md +299 -660
  5. data/lib/tree_haver/backend_api.rb +78 -35
  6. data/lib/tree_haver/backend_context.rb +28 -0
  7. data/lib/tree_haver/backend_registry.rb +119 -382
  8. data/lib/tree_haver/backends/citrus.rb +55 -53
  9. data/lib/tree_haver/backends/ffi.rb +105 -101
  10. data/lib/tree_haver/backends/java.rb +92 -76
  11. data/lib/tree_haver/backends/mri.rb +44 -39
  12. data/lib/tree_haver/backends/parslet.rb +53 -48
  13. data/lib/tree_haver/backends/prism.rb +140 -43
  14. data/lib/tree_haver/backends/psych.rb +30 -26
  15. data/lib/tree_haver/backends/rust.rb +21 -17
  16. data/lib/tree_haver/backends/tslp.rb +274 -0
  17. data/lib/tree_haver/base/comment.rb +320 -0
  18. data/lib/tree_haver/base/language.rb +2 -2
  19. data/lib/tree_haver/base/node.rb +39 -31
  20. data/lib/tree_haver/base/parser.rb +4 -0
  21. data/lib/tree_haver/base/point.rb +3 -3
  22. data/lib/tree_haver/base/tree.rb +1 -1
  23. data/lib/tree_haver/citrus_grammar_finder.rb +21 -26
  24. data/lib/tree_haver/contracts.rb +1025 -0
  25. data/lib/tree_haver/grammar_finder.rb +125 -70
  26. data/lib/tree_haver/kaitai_backend.rb +30 -0
  27. data/lib/tree_haver/language.rb +36 -37
  28. data/lib/tree_haver/language_pack.rb +41 -0
  29. data/lib/tree_haver/language_registry.rb +34 -3
  30. data/lib/tree_haver/library_path_utils.rb +7 -7
  31. data/lib/tree_haver/node.rb +40 -31
  32. data/lib/tree_haver/parser.rb +44 -37
  33. data/lib/tree_haver/parslet_grammar_finder.rb +19 -26
  34. data/lib/tree_haver/path_validator.rb +39 -36
  35. data/lib/tree_haver/peg_backends.rb +76 -0
  36. data/lib/tree_haver/rspec/dependency_tags.rb +23 -1363
  37. data/lib/tree_haver/rspec.rb +1 -31
  38. data/lib/tree_haver/tree.rb +16 -7
  39. data/lib/tree_haver/version.rb +5 -14
  40. data/lib/tree_haver.rb +536 -1240
  41. data/sig/tree_haver.rbs +1 -229
  42. data.tar.gz.sig +0 -0
  43. metadata +154 -70
  44. metadata.gz.sig +0 -0
  45. data/CHANGELOG.md +0 -1393
  46. data/CITATION.cff +0 -20
  47. data/CODE_OF_CONDUCT.md +0 -134
  48. data/CONTRIBUTING.md +0 -359
  49. data/FUNDING.md +0 -74
  50. data/LICENSE.txt +0 -21
  51. data/REEK +0 -0
  52. data/RUBOCOP.md +0 -71
  53. data/SECURITY.md +0 -21
  54. data/lib/tree_haver/base.rb +0 -12
  55. data/lib/tree_haver/compat.rb +0 -43
  56. data/lib/tree_haver/rspec/testable_node.rb +0 -217
  57. data/sig/tree_haver/backends.rbs +0 -352
  58. data/sig/tree_haver/grammar_finder.rbs +0 -29
  59. data/sig/tree_haver/path_validator.rbs +0 -32
data/sig/tree_haver.rbs CHANGED
@@ -1,234 +1,6 @@
1
- # Type definitions for TreeHaver
2
- #
3
- # TreeHaver is a cross-Ruby adapter for code parsing with 10 backends:
4
- # - Tree-sitter: MRI, Rust, FFI, Java
5
- # - Native parsers: Prism (Ruby), Psych (YAML), Commonmarker (Markdown), Markly (GFM)
6
- # - Pure Ruby: Citrus
7
-
8
1
  module TreeHaver
9
- VERSION: String
10
-
11
- # Base error class
12
- class Error < StandardError
13
- end
14
-
15
- # Raised when a backend or feature is not available
16
- class NotAvailable < Error
17
- end
18
-
19
- # Module namespace for backend implementations
20
- module Backends
21
- end
22
-
23
- # Get the current backend selection
24
- def self.backend: () -> Symbol
25
-
26
- # Set the backend to use
27
- def self.backend=: (Symbol | String | nil name) -> (Symbol | nil)
28
-
29
- # Reset backend selection memoization
30
- def self.reset_backend!: (?to: Symbol | String | nil) -> void
31
-
32
- # Determine the concrete backend module to use
33
- def self.backend_module: () -> Module?
34
-
35
- # Get capabilities of the current backend
36
- def self.capabilities: () -> Hash[Symbol, untyped]
37
-
38
- # Register a language helper by name
39
- def self.register_language: (Symbol | String name, path: String, ?symbol: String?) -> void
40
-
41
- # Unregister a previously registered language helper
42
- def self.unregister_language: (Symbol | String name) -> void
43
-
44
- # Clear all registered languages
45
- def self.clear_languages!: () -> void
46
-
47
- # Fetch a registered language entry
48
- def self.registered_language: (Symbol | String name) -> Hash[Symbol, String?]?
49
-
50
- # Represents a tree-sitter language grammar
51
- class Language
52
- # Load a language grammar from a shared library
53
- def self.from_library: (String path, ?symbol: String?, ?name: String?) -> Language
54
-
55
- # Alias for from_library
56
- def self.from_path: (String path, ?symbol: String?, ?name: String?) -> Language
57
-
58
- def self.method_missing: (Symbol method_name, *untyped args, **untyped kwargs) ?{ () -> untyped } -> Language
59
-
60
- def self.respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
61
- end
62
-
63
- # Represents a tree-sitter parser instance
64
- class Parser
65
- # Create a new parser instance
66
- def initialize: () -> void
67
-
68
- # Set the language grammar for this parser
69
- def language=: (Language lang) -> Language
70
-
71
- # Parse source code into a syntax tree
72
- def parse: (String source) -> Tree
73
-
74
- # Parse with optional incremental parsing support
75
- def parse_string: (Tree? old_tree, String source) -> Tree
76
-
77
- private
78
-
79
- @impl: untyped
80
- end
81
-
82
- # Represents a parsed syntax tree
83
- class Tree
84
- attr_reader inner_tree: untyped
85
- attr_reader source: String?
86
-
87
- # Get the root node of the syntax tree
88
- def root_node: () -> Node?
89
-
90
- # Edit the tree for incremental parsing
91
- def edit: (
92
- start_byte: Integer,
93
- old_end_byte: Integer,
94
- new_end_byte: Integer,
95
- start_point: Hash[Symbol, Integer],
96
- old_end_point: Hash[Symbol, Integer],
97
- new_end_point: Hash[Symbol, Integer]
98
- ) -> void
99
-
100
- # Check if the current backend supports incremental parsing
101
- def supports_editing?: () -> bool
102
-
103
- # String representation
104
- def inspect: () -> String
105
-
106
- # Check if tree responds to a method (includes delegation to inner_tree)
107
- def respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
108
-
109
- # Delegate unknown methods to the underlying backend-specific tree
110
- def method_missing: (Symbol method_name, *untyped args, **untyped kwargs) ?{ () -> untyped } -> untyped
111
-
112
- private
113
-
114
- def initialize: (untyped inner_tree, ?source: String?) -> void
115
- end
116
-
117
- # Represents a node in the syntax tree
118
- class Node
119
- attr_reader inner_node: untyped
120
- attr_reader source: String?
121
-
122
- # Get the type name of this node
123
- def type: () -> String
124
-
125
- # Get the text content of this node
126
- def text: () -> String?
127
-
128
- # Get the start byte offset
129
- def start_byte: () -> Integer
130
-
131
- # Get the end byte offset
132
- def end_byte: () -> Integer
133
-
134
- # Get the start point (row, column)
135
- def start_point: () -> Point
136
-
137
- # Get the end point (row, column)
138
- def end_point: () -> Point
139
-
140
- # Position API - consistent across all backends
141
- # Get 1-based line number where node starts
142
- def start_line: () -> Integer
143
-
144
- # Get 1-based line number where node ends
145
- def end_line: () -> Integer
146
-
147
- # Get complete position information as hash
148
- # Returns {start_line:, end_line:, start_column:, end_column:}
149
- def source_position: () -> Hash[Symbol, Integer]
150
-
151
- # Get first child node (convenience method)
152
- def first_child: () -> Node?
153
-
154
- # Get the number of child nodes
155
- def child_count: () -> Integer
156
-
157
- # Get a child node by index
158
- def child: (Integer index) -> Node?
159
-
160
- # Get all children as an array
161
- def children: () -> Array[Node]
162
-
163
- # Iterate over child nodes
164
- def each: () { (Node child) -> void } -> nil
165
- | () -> Enumerator[Node, nil]
166
-
167
- # Get a named child by field name
168
- def child_by_field_name: (String | Symbol field_name) -> Node?
169
-
170
- # Get the parent node
171
- def parent: () -> Node?
172
-
173
- # Get the next sibling node
174
- def next_sibling: () -> Node?
175
-
176
- # Get the previous sibling node
177
- def prev_sibling: () -> Node?
178
-
179
- # Check if node responds to a method (includes delegation to inner_node)
180
- def respond_to_missing?: (Symbol method_name, ?bool include_private) -> bool
181
-
182
- # Delegate unknown methods to the underlying backend-specific node
183
- def method_missing: (Symbol method_name, *untyped args, **untyped kwargs) ?{ () -> untyped } -> untyped
184
-
185
- private
186
-
187
- def initialize: (untyped inner_node, ?source: String?) -> void
188
- end
189
-
190
- # Position in source code that works as both object and hash
191
- class Point
192
- attr_reader row: Integer
193
- attr_reader column: Integer
194
-
195
- def initialize: (row: Integer, column: Integer) -> void
196
-
197
- # Hash-style access
198
- def []: (Symbol key) -> Integer?
199
-
200
- # Convert to hash
201
- def to_h: () -> Hash[Symbol, Integer]
202
-
203
- # String representation
204
- def inspect: () -> String
205
- end
206
-
207
- # Thread-safe language registrations and cache
208
- module LanguageRegistry
209
- # Register a language helper by name
210
- def self.register: (Symbol | String name, path: String, ?symbol: String?) -> void
211
-
212
- # Unregister a previously registered language helper
213
- def self.unregister: (Symbol | String name) -> void
214
-
215
- # Fetch a registration entry
216
- def self.registered: (Symbol | String name) -> Hash[Symbol, String?]?
217
-
218
- # Clear all registrations
219
- def self.clear_registrations!: () -> void
220
-
221
- # Fetch a cached language by key or compute and store it
222
- def self.fetch: [T] (Array[untyped] key) { () -> T } -> T
223
-
224
- # Clear the language cache
225
- def self.clear_cache!: () -> void
226
-
227
- # Clear everything (registrations and cache)
228
- def self.clear_all!: () -> void
229
- end
230
-
231
2
  module Version
232
3
  VERSION: String
233
4
  end
5
+ VERSION: String
234
6
  end
data.tar.gz.sig CHANGED
Binary file
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tree_haver
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.0.5
4
+ version: 7.1.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Peter H. Boling
@@ -37,6 +37,54 @@ cert_chain:
37
37
  -----END CERTIFICATE-----
38
38
  date: 1980-01-02 00:00:00.000000000 Z
39
39
  dependencies:
40
+ - !ruby/object:Gem::Dependency
41
+ name: citrus
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '3.0'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '3.0'
54
+ - !ruby/object:Gem::Dependency
55
+ name: parslet
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - "~>"
59
+ - !ruby/object:Gem::Version
60
+ version: '2.0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - "~>"
66
+ - !ruby/object:Gem::Version
67
+ version: '2.0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: tree_sitter_language_pack
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - ">="
73
+ - !ruby/object:Gem::Version
74
+ version: 1.13.2
75
+ - - "<"
76
+ - !ruby/object:Gem::Version
77
+ version: '2.0'
78
+ type: :runtime
79
+ prerelease: false
80
+ version_requirements: !ruby/object:Gem::Requirement
81
+ requirements:
82
+ - - ">="
83
+ - !ruby/object:Gem::Version
84
+ version: 1.13.2
85
+ - - "<"
86
+ - !ruby/object:Gem::Version
87
+ version: '2.0'
40
88
  - !ruby/object:Gem::Dependency
41
89
  name: version_gem
42
90
  requirement: !ruby/object:Gem::Requirement
@@ -46,7 +94,7 @@ dependencies:
46
94
  version: '1.1'
47
95
  - - ">="
48
96
  - !ruby/object:Gem::Version
49
- version: 1.1.9
97
+ version: 1.1.15
50
98
  type: :runtime
51
99
  prerelease: false
52
100
  version_requirements: !ruby/object:Gem::Requirement
@@ -56,21 +104,27 @@ dependencies:
56
104
  version: '1.1'
57
105
  - - ">="
58
106
  - !ruby/object:Gem::Version
59
- version: 1.1.9
107
+ version: 1.1.15
60
108
  - !ruby/object:Gem::Dependency
61
109
  name: kettle-dev
62
110
  requirement: !ruby/object:Gem::Requirement
63
111
  requirements:
64
112
  - - "~>"
65
113
  - !ruby/object:Gem::Version
66
- version: '1.2'
114
+ version: '2.5'
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 2.5.17
67
118
  type: :development
68
119
  prerelease: false
69
120
  version_requirements: !ruby/object:Gem::Requirement
70
121
  requirements:
71
122
  - - "~>"
72
123
  - !ruby/object:Gem::Version
73
- version: '1.2'
124
+ version: '2.5'
125
+ - - ">="
126
+ - !ruby/object:Gem::Version
127
+ version: 2.5.17
74
128
  - !ruby/object:Gem::Dependency
75
129
  name: bundler-audit
76
130
  requirement: !ruby/object:Gem::Requirement
@@ -120,65 +174,85 @@ dependencies:
120
174
  - !ruby/object:Gem::Version
121
175
  version: 1.0.4
122
176
  - !ruby/object:Gem::Dependency
123
- name: appraisal2
177
+ name: anonymous_loader
124
178
  requirement: !ruby/object:Gem::Requirement
125
179
  requirements:
126
180
  - - "~>"
127
181
  - !ruby/object:Gem::Version
128
- version: '3.0'
182
+ version: '0.1'
129
183
  - - ">="
130
184
  - !ruby/object:Gem::Version
131
- version: 3.0.6
185
+ version: 0.1.3
132
186
  type: :development
133
187
  prerelease: false
134
188
  version_requirements: !ruby/object:Gem::Requirement
135
189
  requirements:
136
190
  - - "~>"
137
191
  - !ruby/object:Gem::Version
138
- version: '3.0'
192
+ version: '0.1'
139
193
  - - ">="
140
194
  - !ruby/object:Gem::Version
141
- version: 3.0.6
195
+ version: 0.1.3
142
196
  - !ruby/object:Gem::Dependency
143
- name: kettle-soup-cover
197
+ name: appraisal2
144
198
  requirement: !ruby/object:Gem::Requirement
145
199
  requirements:
146
200
  - - "~>"
147
201
  - !ruby/object:Gem::Version
148
- version: '1.1'
202
+ version: '3.2'
149
203
  - - ">="
150
204
  - !ruby/object:Gem::Version
151
- version: 1.1.1
205
+ version: 3.2.0
152
206
  type: :development
153
207
  prerelease: false
154
208
  version_requirements: !ruby/object:Gem::Requirement
155
209
  requirements:
156
210
  - - "~>"
157
211
  - !ruby/object:Gem::Version
158
- version: '1.1'
212
+ version: '3.2'
159
213
  - - ">="
160
214
  - !ruby/object:Gem::Version
161
- version: 1.1.1
215
+ version: 3.2.0
162
216
  - !ruby/object:Gem::Dependency
163
217
  name: kettle-test
164
218
  requirement: !ruby/object:Gem::Requirement
165
219
  requirements:
166
220
  - - "~>"
167
221
  - !ruby/object:Gem::Version
168
- version: '1.0'
222
+ version: '2.0'
169
223
  - - ">="
170
224
  - !ruby/object:Gem::Version
171
- version: 1.0.10
225
+ version: 2.0.19
172
226
  type: :development
173
227
  prerelease: false
174
228
  version_requirements: !ruby/object:Gem::Requirement
175
229
  requirements:
176
230
  - - "~>"
177
231
  - !ruby/object:Gem::Version
178
- version: '1.0'
232
+ version: '2.0'
233
+ - - ">="
234
+ - !ruby/object:Gem::Version
235
+ version: 2.0.19
236
+ - !ruby/object:Gem::Dependency
237
+ name: turbo_tests2
238
+ requirement: !ruby/object:Gem::Requirement
239
+ requirements:
240
+ - - "~>"
241
+ - !ruby/object:Gem::Version
242
+ version: '3.2'
179
243
  - - ">="
180
244
  - !ruby/object:Gem::Version
181
- version: 1.0.10
245
+ version: 3.2.4
246
+ type: :development
247
+ prerelease: false
248
+ version_requirements: !ruby/object:Gem::Requirement
249
+ requirements:
250
+ - - "~>"
251
+ - !ruby/object:Gem::Version
252
+ version: '3.2'
253
+ - - ">="
254
+ - !ruby/object:Gem::Version
255
+ version: 3.2.4
182
256
  - !ruby/object:Gem::Dependency
183
257
  name: ruby-progressbar
184
258
  requirement: !ruby/object:Gem::Requirement
@@ -202,7 +276,7 @@ dependencies:
202
276
  version: '1.0'
203
277
  - - ">="
204
278
  - !ruby/object:Gem::Version
205
- version: 1.0.3
279
+ version: 1.0.8
206
280
  type: :development
207
281
  prerelease: false
208
282
  version_requirements: !ruby/object:Gem::Requirement
@@ -212,60 +286,68 @@ dependencies:
212
286
  version: '1.0'
213
287
  - - ">="
214
288
  - !ruby/object:Gem::Version
215
- version: 1.0.3
289
+ version: 1.0.8
216
290
  - !ruby/object:Gem::Dependency
217
291
  name: gitmoji-regex
218
292
  requirement: !ruby/object:Gem::Requirement
219
293
  requirements:
220
294
  - - "~>"
221
295
  - !ruby/object:Gem::Version
222
- version: '1.0'
296
+ version: '2.0'
223
297
  - - ">="
224
298
  - !ruby/object:Gem::Version
225
- version: 1.0.3
299
+ version: 2.0.11
226
300
  type: :development
227
301
  prerelease: false
228
302
  version_requirements: !ruby/object:Gem::Requirement
229
303
  requirements:
230
304
  - - "~>"
231
305
  - !ruby/object:Gem::Version
232
- version: '1.0'
306
+ version: '2.0'
233
307
  - - ">="
234
308
  - !ruby/object:Gem::Version
235
- version: 1.0.3
236
- description: "\U0001F334 TreeHaver is a cross-Ruby adapter for many AST parsing libraries;
237
- supporting MRI Ruby, JRuby, & TruffleRuby. Provides unified parsing API & AST when
238
- using ruby_tree_sitter, parslet, citrus, ffi, tree_stump (Rust), JRuby JARs, etc.
239
- As Faraday is to HTTP clients, this is for ASTs: 'Learn once & write once & run
240
- anywhere'"
309
+ version: 2.0.11
310
+ - !ruby/object:Gem::Dependency
311
+ name: toml
312
+ requirement: !ruby/object:Gem::Requirement
313
+ requirements:
314
+ - - "~>"
315
+ - !ruby/object:Gem::Version
316
+ version: '0.3'
317
+ type: :development
318
+ prerelease: false
319
+ version_requirements: !ruby/object:Gem::Requirement
320
+ requirements:
321
+ - - "~>"
322
+ - !ruby/object:Gem::Version
323
+ version: '0.3'
324
+ - !ruby/object:Gem::Dependency
325
+ name: toml-rb
326
+ requirement: !ruby/object:Gem::Requirement
327
+ requirements:
328
+ - - "~>"
329
+ - !ruby/object:Gem::Version
330
+ version: '4.1'
331
+ type: :development
332
+ prerelease: false
333
+ version_requirements: !ruby/object:Gem::Requirement
334
+ requirements:
335
+ - - "~>"
336
+ - !ruby/object:Gem::Version
337
+ version: '4.1'
338
+ description: "\U0001F334 Backend registry, parser request/result contracts, and tree-sitter
339
+ language-pack integration for Structured Merge."
241
340
  email:
242
341
  - floss@galtzo.com
243
342
  executables: []
244
343
  extensions: []
245
- extra_rdoc_files:
246
- - CHANGELOG.md
247
- - CITATION.cff
248
- - CODE_OF_CONDUCT.md
249
- - CONTRIBUTING.md
250
- - FUNDING.md
251
- - LICENSE.txt
252
- - README.md
253
- - REEK
254
- - RUBOCOP.md
255
- - SECURITY.md
344
+ extra_rdoc_files: []
256
345
  files:
257
- - CHANGELOG.md
258
- - CITATION.cff
259
- - CODE_OF_CONDUCT.md
260
- - CONTRIBUTING.md
261
- - FUNDING.md
262
- - LICENSE.txt
346
+ - LICENSE.md
263
347
  - README.md
264
- - REEK
265
- - RUBOCOP.md
266
- - SECURITY.md
267
348
  - lib/tree_haver.rb
268
349
  - lib/tree_haver/backend_api.rb
350
+ - lib/tree_haver/backend_context.rb
269
351
  - lib/tree_haver/backend_registry.rb
270
352
  - lib/tree_haver/backends/citrus.rb
271
353
  - lib/tree_haver/backends/ffi.rb
@@ -275,50 +357,52 @@ files:
275
357
  - lib/tree_haver/backends/prism.rb
276
358
  - lib/tree_haver/backends/psych.rb
277
359
  - lib/tree_haver/backends/rust.rb
278
- - lib/tree_haver/base.rb
360
+ - lib/tree_haver/backends/tslp.rb
361
+ - lib/tree_haver/base/comment.rb
279
362
  - lib/tree_haver/base/language.rb
280
363
  - lib/tree_haver/base/node.rb
281
364
  - lib/tree_haver/base/parser.rb
282
365
  - lib/tree_haver/base/point.rb
283
366
  - lib/tree_haver/base/tree.rb
284
367
  - lib/tree_haver/citrus_grammar_finder.rb
285
- - lib/tree_haver/compat.rb
368
+ - lib/tree_haver/contracts.rb
286
369
  - lib/tree_haver/grammar_finder.rb
370
+ - lib/tree_haver/kaitai_backend.rb
287
371
  - lib/tree_haver/language.rb
372
+ - lib/tree_haver/language_pack.rb
288
373
  - lib/tree_haver/language_registry.rb
289
374
  - lib/tree_haver/library_path_utils.rb
290
375
  - lib/tree_haver/node.rb
291
376
  - lib/tree_haver/parser.rb
292
377
  - lib/tree_haver/parslet_grammar_finder.rb
293
378
  - lib/tree_haver/path_validator.rb
379
+ - lib/tree_haver/peg_backends.rb
294
380
  - lib/tree_haver/point.rb
295
381
  - lib/tree_haver/rspec.rb
296
382
  - lib/tree_haver/rspec/dependency_tags.rb
297
- - lib/tree_haver/rspec/testable_node.rb
298
383
  - lib/tree_haver/tree.rb
299
384
  - lib/tree_haver/version.rb
300
385
  - sig/tree_haver.rbs
301
- - sig/tree_haver/backends.rbs
302
- - sig/tree_haver/grammar_finder.rbs
303
- - sig/tree_haver/path_validator.rbs
304
- homepage: https://github.com/kettle-rb/tree_haver
386
+ homepage: https://github.com/structuredmerge/structuredmerge-ruby
305
387
  licenses:
306
- - MIT
388
+ - AGPL-3.0-only
389
+ - PolyForm-Small-Business-1.0.0
307
390
  metadata:
308
- homepage_uri: https://tree-haver.galtzo.com/
309
- source_code_uri: https://github.com/kettle-rb/tree_haver/tree/v5.0.5
310
- changelog_uri: https://github.com/kettle-rb/tree_haver/blob/v5.0.5/CHANGELOG.md
311
- bug_tracker_uri: https://github.com/kettle-rb/tree_haver/issues
312
- documentation_uri: https://www.rubydoc.info/gems/tree_haver/5.0.5
391
+ homepage_uri: https://structuredmerge.org
392
+ source_code_uri: https://github.com/structuredmerge/structuredmerge-ruby/tree/v7.1.0
393
+ changelog_uri: https://github.com/structuredmerge/structuredmerge-ruby/blob/v7.1.0/CHANGELOG.md
394
+ bug_tracker_uri: https://github.com/structuredmerge/structuredmerge-ruby/issues
395
+ documentation_uri: https://www.rubydoc.info/gems/tree_haver/7.1.0
313
396
  funding_uri: https://github.com/sponsors/pboling
314
- wiki_uri: https://github.com/kettle-rb/tree_haver/wiki
397
+ wiki_uri: https://github.com/structuredmerge/structuredmerge-ruby/wiki
315
398
  news_uri: https://www.railsbling.com/tags/tree_haver
316
399
  discord_uri: https://discord.gg/3qme4XHNKN
400
+ mailing_list_uri: https://www.rubyforum.org/tag/tree_haver
317
401
  rubygems_mfa_required: 'true'
318
402
  rdoc_options:
319
403
  - "--title"
320
- - "tree_haver - \U0001F334 Cross-Ruby adapter for AST parsing libraries, like tree-sitter,
321
- citrus, & parslet; works on MRI, JRuby, and TruffleRuby"
404
+ - "tree_haver - \U0001F334 Structured Merge parser abstraction and process analysis
405
+ for Ruby"
322
406
  - "--main"
323
407
  - README.md
324
408
  - "--exclude"
@@ -332,15 +416,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
332
416
  requirements:
333
417
  - - ">="
334
418
  - !ruby/object:Gem::Version
335
- version: 3.2.0
419
+ version: 4.0.0
336
420
  required_rubygems_version: !ruby/object:Gem::Requirement
337
421
  requirements:
338
422
  - - ">="
339
423
  - !ruby/object:Gem::Version
340
424
  version: '0'
341
425
  requirements: []
342
- rubygems_version: 4.0.5
426
+ rubygems_version: 4.0.17
343
427
  specification_version: 4
344
- summary: "\U0001F334 Cross-Ruby adapter for AST parsing libraries, like tree-sitter,
345
- citrus, & parslet; works on MRI, JRuby, and TruffleRuby"
428
+ summary: "\U0001F334 Structured Merge parser abstraction and process analysis for
429
+ Ruby"
346
430
  test_files: []
metadata.gz.sig CHANGED
Binary file