ruby_tree_sitter 0.20.6.4-x86_64-darwin-20
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 +7 -0
- data/LICENSE +21 -0
- data/README.md +152 -0
- data/ext/tree_sitter/encoding.c +29 -0
- data/ext/tree_sitter/extconf.rb +172 -0
- data/ext/tree_sitter/input.c +126 -0
- data/ext/tree_sitter/input_edit.c +42 -0
- data/ext/tree_sitter/language.c +134 -0
- data/ext/tree_sitter/logger.c +212 -0
- data/ext/tree_sitter/macros.h +163 -0
- data/ext/tree_sitter/node.c +310 -0
- data/ext/tree_sitter/parser.c +203 -0
- data/ext/tree_sitter/point.c +26 -0
- data/ext/tree_sitter/quantifier.c +43 -0
- data/ext/tree_sitter/query.c +157 -0
- data/ext/tree_sitter/query_capture.c +28 -0
- data/ext/tree_sitter/query_cursor.c +103 -0
- data/ext/tree_sitter/query_error.c +41 -0
- data/ext/tree_sitter/query_match.c +44 -0
- data/ext/tree_sitter/query_predicate_step.c +83 -0
- data/ext/tree_sitter/range.c +35 -0
- data/ext/tree_sitter/symbol_type.c +46 -0
- data/ext/tree_sitter/tree.c +144 -0
- data/ext/tree_sitter/tree_cursor.c +97 -0
- data/ext/tree_sitter/tree_sitter.c +32 -0
- data/ext/tree_sitter/tree_sitter.h +107 -0
- data/lib/tree_sitter/node.rb +164 -0
- data/lib/tree_sitter/tree_sitter.bundle +0 -0
- data/lib/tree_sitter/version.rb +5 -0
- data/lib/tree_sitter.rb +13 -0
- data/test/README.md +15 -0
- data/test/test_helper.rb +9 -0
- data/test/tree_sitter/language_test.rb +68 -0
- data/test/tree_sitter/logger_test.rb +69 -0
- data/test/tree_sitter/node_test.rb +355 -0
- data/test/tree_sitter/parser_test.rb +140 -0
- data/test/tree_sitter/query_test.rb +153 -0
- data/test/tree_sitter/tree_cursor_test.rb +83 -0
- data/test/tree_sitter/tree_test.rb +51 -0
- data/tree_sitter.gemspec +32 -0
- metadata +192 -0
@@ -0,0 +1,153 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
ruby = TreeSitter.lang('ruby')
|
6
|
+
parser = TreeSitter::Parser.new
|
7
|
+
parser.language = ruby
|
8
|
+
|
9
|
+
program = <<~RUBY
|
10
|
+
def mul(a, b)
|
11
|
+
res = a * b
|
12
|
+
puts res.inspect
|
13
|
+
return res
|
14
|
+
end
|
15
|
+
RUBY
|
16
|
+
|
17
|
+
tree = parser.parse_string(nil, program)
|
18
|
+
root = tree.root_node
|
19
|
+
|
20
|
+
pattern = '(method_parameters)'
|
21
|
+
capture = '(method_parameters (_)+ @args)'
|
22
|
+
predicate = '(method_parameters (_)+ @args (#match? @args "\w"))'
|
23
|
+
combined = "#{pattern} #{capture}"
|
24
|
+
# string = '(method_parameters (_)+ @args)'
|
25
|
+
|
26
|
+
# NOTE: It' still unclear to me what a captured string is.
|
27
|
+
|
28
|
+
describe 'pattern/capture/string' do
|
29
|
+
it 'must return an Integer for pattern count' do
|
30
|
+
query = TreeSitter::Query.new(ruby, pattern)
|
31
|
+
assert_equal 1, query.pattern_count
|
32
|
+
assert_equal 0, query.capture_count
|
33
|
+
assert_equal 0, query.string_count
|
34
|
+
end
|
35
|
+
|
36
|
+
it 'must return an Integer for pattern count' do
|
37
|
+
query = TreeSitter::Query.new(ruby, capture)
|
38
|
+
assert_equal 1, query.pattern_count
|
39
|
+
assert_equal 1, query.capture_count
|
40
|
+
assert_equal 0, query.string_count
|
41
|
+
end
|
42
|
+
|
43
|
+
it 'must return an Integer for combined patterns' do
|
44
|
+
query = TreeSitter::Query.new(ruby, combined)
|
45
|
+
assert_equal 2, query.pattern_count
|
46
|
+
assert_equal 1, query.capture_count
|
47
|
+
assert_equal 0, query.string_count
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'must return an Integer for pattern start byte' do
|
51
|
+
query = TreeSitter::Query.new(ruby, combined)
|
52
|
+
assert_equal 0, query.start_byte_for_pattern(0)
|
53
|
+
assert_equal pattern.bytesize + 1, query.start_byte_for_pattern(1)
|
54
|
+
end
|
55
|
+
|
56
|
+
it 'must return an array of predicates for a pattern' do
|
57
|
+
query = TreeSitter::Query.new(ruby, combined)
|
58
|
+
|
59
|
+
preds0 = query.predicates_for_pattern(0)
|
60
|
+
assert_instance_of Array, preds0
|
61
|
+
assert_equal 0, preds0.size
|
62
|
+
|
63
|
+
preds1 = query.predicates_for_pattern(1)
|
64
|
+
assert_instance_of Array, preds1
|
65
|
+
assert_equal 0, preds1.size
|
66
|
+
|
67
|
+
query = TreeSitter::Query.new(ruby, predicate)
|
68
|
+
preds2 = query.predicates_for_pattern(0)
|
69
|
+
assert_instance_of Array, preds2
|
70
|
+
assert_equal 4, preds2.size
|
71
|
+
end
|
72
|
+
|
73
|
+
it 'must return string names, quanitfier, and string value for capture id' do
|
74
|
+
query = TreeSitter::Query.new(ruby, predicate)
|
75
|
+
query.predicates_for_pattern(0).each do |step|
|
76
|
+
next if step.type != TreeSitter::QueryPredicateStep::CAPTURE
|
77
|
+
|
78
|
+
assert_equal 'args', query.capture_name_for_id(step.value_id)
|
79
|
+
assert_equal TreeSitter::Quantifier::ONE_OR_MORE, query.capture_quantifier_for_id(0, step.value_id)
|
80
|
+
assert_equal 'match?', query.string_value_for_id(step.value_id)
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
84
|
+
it 'must disable captures but keep it in count' do
|
85
|
+
query = TreeSitter::Query.new(ruby, capture)
|
86
|
+
query.disable_capture('@args')
|
87
|
+
assert_equal 1, query.capture_count
|
88
|
+
end
|
89
|
+
|
90
|
+
it 'must disable captures but keep it in count' do
|
91
|
+
query = TreeSitter::Query.new(ruby, capture)
|
92
|
+
query.disable_pattern(0)
|
93
|
+
assert_equal 1, query.pattern_count
|
94
|
+
end
|
95
|
+
# TODO: pattern guaranteed at step
|
96
|
+
end
|
97
|
+
|
98
|
+
describe 'query_cursor' do
|
99
|
+
before do
|
100
|
+
@query = TreeSitter::Query.new(ruby, capture)
|
101
|
+
@cursor = TreeSitter::QueryCursor.exec(@query, root)
|
102
|
+
end
|
103
|
+
|
104
|
+
it 'must work with limits' do
|
105
|
+
@cursor.match_limit = 1
|
106
|
+
assert_equal 1, @cursor.match_limit
|
107
|
+
refute @cursor.exceed_match_limit?
|
108
|
+
refute_nil @cursor.next_capture
|
109
|
+
assert @cursor.exceed_match_limit?
|
110
|
+
end
|
111
|
+
|
112
|
+
it 'must work with byte range' do
|
113
|
+
child = root.child(0).child(0)
|
114
|
+
@cursor.set_byte_range(child.start_byte, child.end_byte)
|
115
|
+
assert_nil @cursor.next_capture
|
116
|
+
end
|
117
|
+
|
118
|
+
it 'must work with point range' do
|
119
|
+
child = root.child(0).child(0)
|
120
|
+
@cursor.set_point_range(child.start_point, child.end_point)
|
121
|
+
assert_nil @cursor.next_capture
|
122
|
+
end
|
123
|
+
|
124
|
+
it 'must work with next/remove' do
|
125
|
+
assert_equal 0, @cursor.next_match.id
|
126
|
+
@cursor.remove_match(1)
|
127
|
+
assert_nil @cursor.next_match
|
128
|
+
end
|
129
|
+
end
|
130
|
+
|
131
|
+
describe 'querying anonymous nodes' do
|
132
|
+
it 'must match & capture the correct nodes' do
|
133
|
+
binary = '(binary left: (identifier) operator: "*" right: (identifier)) @binary'
|
134
|
+
prog = <<~RUBY
|
135
|
+
c + d
|
136
|
+
a * b
|
137
|
+
e / f
|
138
|
+
RUBY
|
139
|
+
prog_tree = parser.parse_string(nil, prog)
|
140
|
+
prog_root = prog_tree.root_node
|
141
|
+
query = TreeSitter::Query.new(ruby, binary)
|
142
|
+
cursor = TreeSitter::QueryCursor.exec(query, prog_root)
|
143
|
+
|
144
|
+
while match = cursor.next_match
|
145
|
+
refute_nil(match)
|
146
|
+
assert_equal(1, match.captures.size)
|
147
|
+
|
148
|
+
node = match.captures.first.node
|
149
|
+
assert_equal 'a * b', prog[node.start_byte...node.end_byte]
|
150
|
+
end
|
151
|
+
assert_nil(match)
|
152
|
+
end
|
153
|
+
end
|
@@ -0,0 +1,83 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../test_helper'
|
4
|
+
|
5
|
+
ruby = TreeSitter.lang('ruby')
|
6
|
+
parser = TreeSitter::Parser.new
|
7
|
+
parser.language = ruby
|
8
|
+
|
9
|
+
program = <<~RUBY
|
10
|
+
def mul(a, b)
|
11
|
+
res = a * b
|
12
|
+
puts res.inspect
|
13
|
+
return res
|
14
|
+
end
|
15
|
+
RUBY
|
16
|
+
|
17
|
+
tree = parser.parse_string(nil, program)
|
18
|
+
root = tree.root_node
|
19
|
+
|
20
|
+
describe 'TreeCursor should work properly' do
|
21
|
+
before do
|
22
|
+
@cursor = TreeSitter::TreeCursor.new(root)
|
23
|
+
end
|
24
|
+
|
25
|
+
it 'must return root node when created' do
|
26
|
+
assert_equal root, @cursor.current_node
|
27
|
+
end
|
28
|
+
|
29
|
+
it 'must return root node when reset after creation' do
|
30
|
+
@cursor.reset(root)
|
31
|
+
assert_equal root, @cursor.current_node
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'must reset to an arbitrary node' do
|
35
|
+
@cursor.reset(root.child(0).child(0))
|
36
|
+
assert_equal root.child(0).child(0), @cursor.current_node
|
37
|
+
end
|
38
|
+
|
39
|
+
it 'must move on the tree properly' do
|
40
|
+
@cursor.goto_first_child
|
41
|
+
assert_equal root.child(0), @cursor.current_node
|
42
|
+
|
43
|
+
@cursor.goto_first_child
|
44
|
+
@cursor.goto_next_sibling
|
45
|
+
assert_equal root.child(0).child(0).next_sibling, @cursor.current_node
|
46
|
+
|
47
|
+
@cursor.goto_parent
|
48
|
+
assert_equal root.child(0), @cursor.current_node
|
49
|
+
|
50
|
+
@cursor.reset(root)
|
51
|
+
assert_equal root, @cursor.current_node
|
52
|
+
end
|
53
|
+
|
54
|
+
it 'must return a String when current_field_name is called on a named child, or nil otherwise' do
|
55
|
+
assert_nil @cursor.current_field_name
|
56
|
+
|
57
|
+
@cursor.goto_first_child
|
58
|
+
@cursor.goto_first_child
|
59
|
+
@cursor.goto_next_sibling
|
60
|
+
|
61
|
+
assert_equal 'name', @cursor.current_field_name
|
62
|
+
assert_instance_of Integer, @cursor.current_field_id
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'must return proper child for given byte' do
|
66
|
+
@cursor.goto_first_child_for_byte(0)
|
67
|
+
assert_equal root.child(0), @cursor.current_node
|
68
|
+
end
|
69
|
+
|
70
|
+
it 'must return proper child for given point' do
|
71
|
+
@cursor.goto_first_child_for_point(root.start_point)
|
72
|
+
assert_equal root.child(0), @cursor.current_node
|
73
|
+
end
|
74
|
+
|
75
|
+
it 'must return proper child for given point' do
|
76
|
+
@cursor.goto_first_child_for_point(root.start_point)
|
77
|
+
assert_equal root.child(0), @cursor.current_node
|
78
|
+
end
|
79
|
+
|
80
|
+
it 'must return a distinct copy on copy' do
|
81
|
+
refute_equal @cursor, @cursor.copy
|
82
|
+
end
|
83
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require_relative '../test_helper.rb'
|
4
|
+
|
5
|
+
ruby = TreeSitter.lang('ruby')
|
6
|
+
parser = TreeSitter::Parser.new
|
7
|
+
parser.language = ruby
|
8
|
+
|
9
|
+
program = <<~RUBY
|
10
|
+
def mul(a, b)
|
11
|
+
res = a* b
|
12
|
+
puts res.inspect
|
13
|
+
return res
|
14
|
+
end
|
15
|
+
RUBY
|
16
|
+
|
17
|
+
tree = parser.parse_string(nil, program)
|
18
|
+
|
19
|
+
describe 'copy' do
|
20
|
+
it 'must make a new copy' do
|
21
|
+
copy = tree.copy
|
22
|
+
refute_equal tree, copy
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
describe 'root_node' do
|
27
|
+
it 'must be of type TreeSitter::Node' do
|
28
|
+
root = tree.root_node
|
29
|
+
assert_instance_of TreeSitter::Node, root
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
describe 'language' do
|
34
|
+
it 'must be identical to parser language' do
|
35
|
+
assert_equal parser.language, tree.language
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
describe 'print_dot_graph' do
|
40
|
+
it 'must save to disk' do
|
41
|
+
dot = File.expand_path('tmp/tree-dot.gv', FileUtils.getwd)
|
42
|
+
tree.print_dot_graph(dot)
|
43
|
+
|
44
|
+
assert File.exist?(dot), 'dot file must be exist'
|
45
|
+
assert File.file?(dot), 'dot file must be a file'
|
46
|
+
refute_equal 0, File.size(dot)
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
# TODO: edit
|
51
|
+
# TODO: changed_ranges
|
data/tree_sitter.gemspec
ADDED
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
4
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
5
|
+
|
6
|
+
require 'tree_sitter/version'
|
7
|
+
|
8
|
+
Gem::Specification.new do |spec|
|
9
|
+
spec.required_ruby_version = '>= 2.7'
|
10
|
+
|
11
|
+
spec.authors = ['Firas al-Khalil']
|
12
|
+
spec.email = ['firasalkhalil@gmail.com']
|
13
|
+
spec.homepage = 'https://www.github.com/Faveod/ruby-tree-sitter'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
spec.name = 'ruby_tree_sitter'
|
16
|
+
spec.summary = 'Ruby bindings for Tree-Sitter'
|
17
|
+
spec.version = TreeSitter::VERSION
|
18
|
+
|
19
|
+
spec.extensions = %(ext/tree_sitter/extconf.rb)
|
20
|
+
spec.files = %w(LICENSE README.md tree_sitter.gemspec)
|
21
|
+
spec.files += Dir.glob('ext/**/*.[ch]')
|
22
|
+
spec.files += Dir.glob('lib/**/*.rb')
|
23
|
+
spec.test_files = Dir.glob('test/**/*')
|
24
|
+
|
25
|
+
spec.add_development_dependency('minitest', '~> 5.16')
|
26
|
+
spec.add_development_dependency('minitest-color', '~> 0.0.2')
|
27
|
+
spec.add_development_dependency('pry', '~> 0.14')
|
28
|
+
spec.add_development_dependency('rake', '~> 13.0')
|
29
|
+
spec.add_development_dependency('rake-compiler', '~> 1.2')
|
30
|
+
spec.add_development_dependency('rake-compiler-dock', '~> 1.2')
|
31
|
+
spec.add_development_dependency('ruby_memcheck', '~> 1.0')
|
32
|
+
end
|
metadata
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: ruby_tree_sitter
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.20.6.4
|
5
|
+
platform: x86_64-darwin-20
|
6
|
+
authors:
|
7
|
+
- Firas al-Khalil
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2023-04-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: minitest
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '5.16'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '5.16'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest-color
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.2
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.2
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: pry
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '0.14'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0.14'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '13.0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '13.0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rake-compiler
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '1.2'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '1.2'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rake-compiler-dock
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - "~>"
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '1.2'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - "~>"
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '1.2'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: ruby_memcheck
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - "~>"
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '1.0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - "~>"
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '1.0'
|
111
|
+
description:
|
112
|
+
email:
|
113
|
+
- firasalkhalil@gmail.com
|
114
|
+
executables: []
|
115
|
+
extensions: []
|
116
|
+
extra_rdoc_files: []
|
117
|
+
files:
|
118
|
+
- LICENSE
|
119
|
+
- README.md
|
120
|
+
- ext/tree_sitter/encoding.c
|
121
|
+
- ext/tree_sitter/extconf.rb
|
122
|
+
- ext/tree_sitter/input.c
|
123
|
+
- ext/tree_sitter/input_edit.c
|
124
|
+
- ext/tree_sitter/language.c
|
125
|
+
- ext/tree_sitter/logger.c
|
126
|
+
- ext/tree_sitter/macros.h
|
127
|
+
- ext/tree_sitter/node.c
|
128
|
+
- ext/tree_sitter/parser.c
|
129
|
+
- ext/tree_sitter/point.c
|
130
|
+
- ext/tree_sitter/quantifier.c
|
131
|
+
- ext/tree_sitter/query.c
|
132
|
+
- ext/tree_sitter/query_capture.c
|
133
|
+
- ext/tree_sitter/query_cursor.c
|
134
|
+
- ext/tree_sitter/query_error.c
|
135
|
+
- ext/tree_sitter/query_match.c
|
136
|
+
- ext/tree_sitter/query_predicate_step.c
|
137
|
+
- ext/tree_sitter/range.c
|
138
|
+
- ext/tree_sitter/symbol_type.c
|
139
|
+
- ext/tree_sitter/tree.c
|
140
|
+
- ext/tree_sitter/tree_cursor.c
|
141
|
+
- ext/tree_sitter/tree_sitter.c
|
142
|
+
- ext/tree_sitter/tree_sitter.h
|
143
|
+
- lib/tree_sitter.rb
|
144
|
+
- lib/tree_sitter/node.rb
|
145
|
+
- lib/tree_sitter/tree_sitter.bundle
|
146
|
+
- lib/tree_sitter/version.rb
|
147
|
+
- test/README.md
|
148
|
+
- test/test_helper.rb
|
149
|
+
- test/tree_sitter/language_test.rb
|
150
|
+
- test/tree_sitter/logger_test.rb
|
151
|
+
- test/tree_sitter/node_test.rb
|
152
|
+
- test/tree_sitter/parser_test.rb
|
153
|
+
- test/tree_sitter/query_test.rb
|
154
|
+
- test/tree_sitter/tree_cursor_test.rb
|
155
|
+
- test/tree_sitter/tree_test.rb
|
156
|
+
- tree_sitter.gemspec
|
157
|
+
homepage: https://www.github.com/Faveod/ruby-tree-sitter
|
158
|
+
licenses:
|
159
|
+
- MIT
|
160
|
+
metadata: {}
|
161
|
+
post_install_message:
|
162
|
+
rdoc_options: []
|
163
|
+
require_paths:
|
164
|
+
- lib
|
165
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
166
|
+
requirements:
|
167
|
+
- - ">="
|
168
|
+
- !ruby/object:Gem::Version
|
169
|
+
version: '3.2'
|
170
|
+
- - "<"
|
171
|
+
- !ruby/object:Gem::Version
|
172
|
+
version: 3.3.dev
|
173
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
requirements: []
|
179
|
+
rubygems_version: 3.4.10
|
180
|
+
signing_key:
|
181
|
+
specification_version: 4
|
182
|
+
summary: Ruby bindings for Tree-Sitter
|
183
|
+
test_files:
|
184
|
+
- test/README.md
|
185
|
+
- test/test_helper.rb
|
186
|
+
- test/tree_sitter/language_test.rb
|
187
|
+
- test/tree_sitter/logger_test.rb
|
188
|
+
- test/tree_sitter/node_test.rb
|
189
|
+
- test/tree_sitter/parser_test.rb
|
190
|
+
- test/tree_sitter/query_test.rb
|
191
|
+
- test/tree_sitter/tree_cursor_test.rb
|
192
|
+
- test/tree_sitter/tree_test.rb
|