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.
- checksums.yaml +4 -4
- checksums.yaml.gz.sig +0 -0
- data/LICENSE.md +13 -0
- data/README.md +299 -660
- data/lib/tree_haver/backend_api.rb +78 -35
- data/lib/tree_haver/backend_context.rb +28 -0
- data/lib/tree_haver/backend_registry.rb +119 -382
- data/lib/tree_haver/backends/citrus.rb +55 -53
- data/lib/tree_haver/backends/ffi.rb +105 -101
- data/lib/tree_haver/backends/java.rb +92 -76
- data/lib/tree_haver/backends/mri.rb +44 -39
- data/lib/tree_haver/backends/parslet.rb +53 -48
- data/lib/tree_haver/backends/prism.rb +140 -43
- data/lib/tree_haver/backends/psych.rb +30 -26
- data/lib/tree_haver/backends/rust.rb +21 -17
- data/lib/tree_haver/backends/tslp.rb +274 -0
- data/lib/tree_haver/base/comment.rb +320 -0
- data/lib/tree_haver/base/language.rb +2 -2
- data/lib/tree_haver/base/node.rb +39 -31
- data/lib/tree_haver/base/parser.rb +4 -0
- data/lib/tree_haver/base/point.rb +3 -3
- data/lib/tree_haver/base/tree.rb +1 -1
- data/lib/tree_haver/citrus_grammar_finder.rb +21 -26
- data/lib/tree_haver/contracts.rb +1025 -0
- data/lib/tree_haver/grammar_finder.rb +125 -70
- data/lib/tree_haver/kaitai_backend.rb +30 -0
- data/lib/tree_haver/language.rb +36 -37
- data/lib/tree_haver/language_pack.rb +41 -0
- data/lib/tree_haver/language_registry.rb +34 -3
- data/lib/tree_haver/library_path_utils.rb +7 -7
- data/lib/tree_haver/node.rb +40 -31
- data/lib/tree_haver/parser.rb +44 -37
- data/lib/tree_haver/parslet_grammar_finder.rb +19 -26
- data/lib/tree_haver/path_validator.rb +39 -36
- data/lib/tree_haver/peg_backends.rb +76 -0
- data/lib/tree_haver/rspec/dependency_tags.rb +23 -1363
- data/lib/tree_haver/rspec.rb +1 -31
- data/lib/tree_haver/tree.rb +16 -7
- data/lib/tree_haver/version.rb +5 -14
- data/lib/tree_haver.rb +536 -1240
- data/sig/tree_haver.rbs +1 -229
- data.tar.gz.sig +0 -0
- metadata +154 -70
- metadata.gz.sig +0 -0
- data/CHANGELOG.md +0 -1393
- data/CITATION.cff +0 -20
- data/CODE_OF_CONDUCT.md +0 -134
- data/CONTRIBUTING.md +0 -359
- data/FUNDING.md +0 -74
- data/LICENSE.txt +0 -21
- data/REEK +0 -0
- data/RUBOCOP.md +0 -71
- data/SECURITY.md +0 -21
- data/lib/tree_haver/base.rb +0 -12
- data/lib/tree_haver/compat.rb +0 -43
- data/lib/tree_haver/rspec/testable_node.rb +0 -217
- data/sig/tree_haver/backends.rbs +0 -352
- data/sig/tree_haver/grammar_finder.rbs +0 -29
- 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:
|
|
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.
|
|
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.
|
|
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: '
|
|
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: '
|
|
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:
|
|
177
|
+
name: anonymous_loader
|
|
124
178
|
requirement: !ruby/object:Gem::Requirement
|
|
125
179
|
requirements:
|
|
126
180
|
- - "~>"
|
|
127
181
|
- !ruby/object:Gem::Version
|
|
128
|
-
version: '
|
|
182
|
+
version: '0.1'
|
|
129
183
|
- - ">="
|
|
130
184
|
- !ruby/object:Gem::Version
|
|
131
|
-
version:
|
|
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: '
|
|
192
|
+
version: '0.1'
|
|
139
193
|
- - ">="
|
|
140
194
|
- !ruby/object:Gem::Version
|
|
141
|
-
version:
|
|
195
|
+
version: 0.1.3
|
|
142
196
|
- !ruby/object:Gem::Dependency
|
|
143
|
-
name:
|
|
197
|
+
name: appraisal2
|
|
144
198
|
requirement: !ruby/object:Gem::Requirement
|
|
145
199
|
requirements:
|
|
146
200
|
- - "~>"
|
|
147
201
|
- !ruby/object:Gem::Version
|
|
148
|
-
version: '
|
|
202
|
+
version: '3.2'
|
|
149
203
|
- - ">="
|
|
150
204
|
- !ruby/object:Gem::Version
|
|
151
|
-
version:
|
|
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: '
|
|
212
|
+
version: '3.2'
|
|
159
213
|
- - ">="
|
|
160
214
|
- !ruby/object:Gem::Version
|
|
161
|
-
version:
|
|
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: '
|
|
222
|
+
version: '2.0'
|
|
169
223
|
- - ">="
|
|
170
224
|
- !ruby/object:Gem::Version
|
|
171
|
-
version:
|
|
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: '
|
|
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:
|
|
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.
|
|
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.
|
|
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: '
|
|
296
|
+
version: '2.0'
|
|
223
297
|
- - ">="
|
|
224
298
|
- !ruby/object:Gem::Version
|
|
225
|
-
version:
|
|
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: '
|
|
306
|
+
version: '2.0'
|
|
233
307
|
- - ">="
|
|
234
308
|
- !ruby/object:Gem::Version
|
|
235
|
-
version:
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
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
|
-
-
|
|
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/
|
|
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/
|
|
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
|
-
|
|
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
|
-
-
|
|
388
|
+
- AGPL-3.0-only
|
|
389
|
+
- PolyForm-Small-Business-1.0.0
|
|
307
390
|
metadata:
|
|
308
|
-
homepage_uri: https://
|
|
309
|
-
source_code_uri: https://github.com/
|
|
310
|
-
changelog_uri: https://github.com/
|
|
311
|
-
bug_tracker_uri: https://github.com/
|
|
312
|
-
documentation_uri: https://www.rubydoc.info/gems/tree_haver/
|
|
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/
|
|
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
|
|
321
|
-
|
|
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:
|
|
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.
|
|
426
|
+
rubygems_version: 4.0.17
|
|
343
427
|
specification_version: 4
|
|
344
|
-
summary: "\U0001F334
|
|
345
|
-
|
|
428
|
+
summary: "\U0001F334 Structured Merge parser abstraction and process analysis for
|
|
429
|
+
Ruby"
|
|
346
430
|
test_files: []
|
metadata.gz.sig
CHANGED
|
Binary file
|