node_query 1.14.1 → 1.15.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: 7ca6c90b61fc096a8827b28f96e8af9c2f3bf114e09a0bc6f4fa4c2b6b0a5dcb
4
- data.tar.gz: 14f2604eb60f8482d0c9182e2aa0054bbec3130c49504f519936d95d03a7611c
3
+ metadata.gz: 9215c4354d5f17a61bd0703869547d2dc4eca4b074c5e689451034073c9554da
4
+ data.tar.gz: d602ad70ae5d1d8c53ea7192a1c401cbe67450ece27523fa4040e520e9b85558
5
5
  SHA512:
6
- metadata.gz: 7d40bbebba507b8bf52b9c6981c060a07c827f01a30c78cf5dec7a916fb085f0377e1b3ca19a5ed8cef8117c3850cb1ff5055fcb48599522648bd22340d8397d
7
- data.tar.gz: a9c3edcb83f845e350f5004a21278735e67c6357d28096011b8acd1908290bf1fa2e44d4f0223c0fcd4ace273bbdfc317043b509c160d6ea7bfd4f79fbe542fd
6
+ metadata.gz: 4edce7905bb8b5835d0024f80d2e6a34e01602040c67250873e34d3ebd9c2396df5175608ffe1995048c36f681627b3570571a4f293fd35c9d93da76bb33c0aa
7
+ data.tar.gz: 9d812e03d9045f344a00a950dbc503ae185cb469844d3f62b98cb3db64659786552e9e46d2209ef809f6a189eae55b98c1a16bf9c2106d12f75519a24dc75d7f
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.15.0 (2024-02-10)
4
+
5
+ * Support `prism`
6
+
3
7
  ## 1.14.1 (2023-11-27)
4
8
 
5
9
  * Fix `ArrayValue` with `adapter` parameter
data/Gemfile CHANGED
@@ -14,6 +14,6 @@ gem "guard-rspec"
14
14
  gem "guard-rake"
15
15
  gem "oedipus_lex"
16
16
  gem "racc"
17
- gem "parser"
18
17
  gem "parser_node_ext"
19
18
  gem "syntax_tree_ext"
19
+ gem "prism_ext"
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_query (1.14.1)
4
+ node_query (1.15.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -38,16 +38,19 @@ GEM
38
38
  nenv (~> 0.1)
39
39
  shellany (~> 0.0)
40
40
  oedipus_lex (2.6.0)
41
- parser (3.2.2.3)
41
+ parser (3.3.0.5)
42
42
  ast (~> 2.4.1)
43
43
  racc
44
- parser_node_ext (1.2.1)
44
+ parser_node_ext (1.2.2)
45
45
  parser
46
46
  prettier_print (1.2.1)
47
+ prism (0.22.0)
48
+ prism_ext (0.2.0)
49
+ prism
47
50
  pry (0.14.1)
48
51
  coderay (~> 1.1)
49
52
  method_source (~> 1.0)
50
- racc (1.6.2)
53
+ racc (1.7.3)
51
54
  rake (13.0.6)
52
55
  rb-fsevent (0.11.1)
53
56
  rb-inotify (0.10.1)
@@ -66,15 +69,16 @@ GEM
66
69
  rspec-support (~> 3.11.0)
67
70
  rspec-support (3.11.0)
68
71
  shellany (0.0.1)
69
- syntax_tree (6.1.1)
72
+ syntax_tree (6.2.0)
70
73
  prettier_print (>= 1.2.0)
71
- syntax_tree_ext (0.6.4)
74
+ syntax_tree_ext (0.7.0)
72
75
  syntax_tree
73
76
  thor (1.2.1)
74
77
 
75
78
  PLATFORMS
76
79
  x86_64-darwin-21
77
80
  x86_64-darwin-22
81
+ x86_64-darwin-23
78
82
  x86_64-linux
79
83
 
80
84
  DEPENDENCIES
@@ -83,8 +87,8 @@ DEPENDENCIES
83
87
  guard-rspec
84
88
  node_query!
85
89
  oedipus_lex
86
- parser
87
90
  parser_node_ext
91
+ prism_ext
88
92
  racc
89
93
  rake (~> 13.0)
90
94
  rspec (~> 3.0)
data/README.md CHANGED
@@ -258,7 +258,7 @@ It matches def node whose arguments are either id or name.
258
258
  .class .send
259
259
  ```
260
260
 
261
- It matches send node whose ansestor is class node.
261
+ It matches send node whose ancestor is class node.
262
262
 
263
263
  #### Child combinator
264
264
 
@@ -0,0 +1,33 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'prism'
4
+ require 'prism_ext'
5
+
6
+ class NodeQuery::PrismAdapter
7
+ def is_node?(node)
8
+ node.is_a?(Prism::Node)
9
+ end
10
+
11
+ def get_node_type(node)
12
+ node.class.name.split('::').last.to_sym
13
+ end
14
+
15
+ def get_source(node)
16
+ node.slice
17
+ end
18
+
19
+ def get_children(node)
20
+ node.child_nodes
21
+ end
22
+
23
+ def get_siblings(node)
24
+ child_nodes = node.parent_node.child_nodes
25
+ if child_nodes.is_a?(Array) && child_nodes.size == 1 && child_nodes.first.is_a?(Array)
26
+ index = child_nodes.first.index(node)
27
+ return child_nodes.first[index + 1...]
28
+ end
29
+
30
+ index = child_nodes.index(node)
31
+ child_nodes[index + 1...]
32
+ end
33
+ end
@@ -29,6 +29,13 @@ class NodeQuery::SyntaxTreeAdapter
29
29
  end
30
30
 
31
31
  def get_siblings(node)
32
- node.siblings
32
+ child_nodes = node.parent_node.deconstruct_keys([]).except(:location, :comments).values
33
+ if child_nodes.is_a?(Array) && child_nodes.size == 1 && child_nodes.first.is_a?(Array)
34
+ index = child_nodes.first.index(node)
35
+ return child_nodes.first[index + 1...]
36
+ end
37
+
38
+ index = child_nodes.index(node)
39
+ child_nodes[index + 1...]
33
40
  end
34
41
  end
@@ -93,7 +93,7 @@ module NodeQuery::Compiler
93
93
  end
94
94
  end
95
95
  else
96
- NodeQuery.adapter.get_children(node).each do |child_node|
96
+ @adapter.get_children(node).each do |child_node|
97
97
  if match?(child_node, child_node)
98
98
  nodes << child_node
99
99
  break if options[:stop_at_first_match]
@@ -171,10 +171,10 @@ module NodeQuery::Compiler
171
171
  end
172
172
  end
173
173
  when '+'
174
- next_sibling = node.siblings.first
174
+ next_sibling = @adapter.get_siblings(node).first
175
175
  nodes << next_sibling if @rest.match?(next_sibling, next_sibling)
176
176
  when '~'
177
- node.siblings.each do |sibling_node|
177
+ @adapter.get_siblings(node).each do |sibling_node|
178
178
  nodes << sibling_node if @rest.match?(sibling_node, sibling_node)
179
179
  end
180
180
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeQuery
4
- VERSION = "1.14.1"
4
+ VERSION = "1.15.0"
5
5
  end
data/lib/node_query.rb CHANGED
@@ -11,6 +11,7 @@ class NodeQuery
11
11
  autoload :Adapter, "node_query/adapter"
12
12
  autoload :ParserAdapter, "node_query/adapter/parser"
13
13
  autoload :SyntaxTreeAdapter, "node_query/adapter/syntax_tree"
14
+ autoload :PrismAdapter, "node_query/adapter/prism"
14
15
  autoload :Compiler, "node_query/compiler"
15
16
  autoload :Helper, "node_query/helper"
16
17
  autoload :NodeRules, "node_query/node_rules"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: node_query
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.14.1
4
+ version: 1.15.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2023-11-27 00:00:00.000000000 Z
11
+ date: 2024-02-10 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ast node query language
14
14
  email:
@@ -27,6 +27,7 @@ files:
27
27
  - lib/node_query.rb
28
28
  - lib/node_query/adapter.rb
29
29
  - lib/node_query/adapter/parser.rb
30
+ - lib/node_query/adapter/prism.rb
30
31
  - lib/node_query/adapter/syntax_tree.rb
31
32
  - lib/node_query/compiler.rb
32
33
  - lib/node_query/compiler/array_value.rb
@@ -78,7 +79,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
78
79
  - !ruby/object:Gem::Version
79
80
  version: '0'
80
81
  requirements: []
81
- rubygems_version: 3.4.20
82
+ rubygems_version: 3.5.3
82
83
  signing_key:
83
84
  specification_version: 4
84
85
  summary: ast node query language