node_query 1.15.0 → 1.15.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 9215c4354d5f17a61bd0703869547d2dc4eca4b074c5e689451034073c9554da
4
- data.tar.gz: d602ad70ae5d1d8c53ea7192a1c401cbe67450ece27523fa4040e520e9b85558
3
+ metadata.gz: 73328f35ddead7666ea7205aec6775a739ac3875addb68f0716787186149aac5
4
+ data.tar.gz: b789b58e27ad38de762a2b4f41f2cd0fc4747ef92c8db84ee13204a2f7f72cf0
5
5
  SHA512:
6
- metadata.gz: 4edce7905bb8b5835d0024f80d2e6a34e01602040c67250873e34d3ebd9c2396df5175608ffe1995048c36f681627b3570571a4f293fd35c9d93da76bb33c0aa
7
- data.tar.gz: 9d812e03d9045f344a00a950dbc503ae185cb469844d3f62b98cb3db64659786552e9e46d2209ef809f6a189eae55b98c1a16bf9c2106d12f75519a24dc75d7f
6
+ metadata.gz: 74fac5a891c4271fa838b955846c7ee816ef26efc557be71b70474225152c1f3ea84209a6301683bb40c6c0fe19aaddf0fec2aa8f934c1a8aa412eb131d19f3c
7
+ data.tar.gz: d8b25d7069670207d470760b024f47affcc013ecc31b89acb6ec985fb8e8b5716451ff991dceed202703c293fe2f4e5ddb41e8801e6b11692a21cb3f31208a16
data/CHANGELOG.md CHANGED
@@ -1,5 +1,18 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.15.2 (2024-04-07)
4
+
5
+ * Update `prism_ext` to 0.3.0
6
+ * Update `syntax_tree_ext` to 0.8.1
7
+ * Update `parser_node_ext` to 1.3.0
8
+ * Require `parent_node_ext` only when necessary
9
+
10
+ ## 1.15.1 (2024-02-16)
11
+
12
+ * Use `deconstruct_keys` to get prism children
13
+ * Get `PrismAdapter`
14
+ * Read prism node type
15
+
3
16
  ## 1.15.0 (2024-02-10)
4
17
 
5
18
  * Support `prism`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_query (1.15.0)
4
+ node_query (1.15.2)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -41,11 +41,11 @@ GEM
41
41
  parser (3.3.0.5)
42
42
  ast (~> 2.4.1)
43
43
  racc
44
- parser_node_ext (1.2.2)
44
+ parser_node_ext (1.3.0)
45
45
  parser
46
46
  prettier_print (1.2.1)
47
- prism (0.22.0)
48
- prism_ext (0.2.0)
47
+ prism (0.25.0)
48
+ prism_ext (0.3.0)
49
49
  prism
50
50
  pry (0.14.1)
51
51
  coderay (~> 1.1)
@@ -71,7 +71,7 @@ GEM
71
71
  shellany (0.0.1)
72
72
  syntax_tree (6.2.0)
73
73
  prettier_print (>= 1.2.0)
74
- syntax_tree_ext (0.7.0)
74
+ syntax_tree_ext (0.8.1)
75
75
  syntax_tree
76
76
  thor (1.2.1)
77
77
 
data/README.md CHANGED
@@ -1,5 +1,8 @@
1
1
  # NodeQuery
2
2
 
3
+ [![Build Status](https://github.com/synvert-hq/node-query-ruby/actions/workflows/main.yml/badge.svg)](https://github.com/synvert-hq/node-query-ruby/actions/workflows/main.yml)
4
+ [![Gem Version](https://img.shields.io/gem/v/node_query.svg)](https://rubygems.org/gems/node_query)
5
+
3
6
  NodeQuery defines a NQL (node query language) and node rules to query AST nodes.
4
7
 
5
8
  ## Table of Contents
@@ -475,7 +478,7 @@ It matches def node whose arguments are id and name.
475
478
  ## Write Adapter
476
479
 
477
480
  Different parser, like parser, syntax_tree, will generate different AST nodes, to make NodeQuery work for them all,
478
- we define an [Adapter](https://github.com/xinminlabs/node-query-ruby/blob/main/lib/node_query/adapter.rb) interface,
481
+ we define an [Adapter](https://github.com/synvert-hq/node-query-ruby/blob/main/lib/node_query/adapter.rb) interface,
479
482
  if you implement the Adapter interface, you can set it as NodeQuery's adapter.
480
483
 
481
484
  It provides 2 adapters
@@ -491,4 +494,4 @@ To install this gem onto your local machine, run `bundle exec rake install`. To
491
494
 
492
495
  ## Contributing
493
496
 
494
- Bug reports and pull requests are welcome on GitHub at https://github.com/xinminlabs/node-query-ruby.
497
+ Bug reports and pull requests are welcome on GitHub at https://github.com/synvert-hq/node-query-ruby.
@@ -9,7 +9,7 @@ class NodeQuery::PrismAdapter
9
9
  end
10
10
 
11
11
  def get_node_type(node)
12
- node.class.name.split('::').last.to_sym
12
+ node.type
13
13
  end
14
14
 
15
15
  def get_source(node)
@@ -17,11 +17,29 @@ class NodeQuery::PrismAdapter
17
17
  end
18
18
 
19
19
  def get_children(node)
20
- node.child_nodes
20
+ keys = []
21
+ children = []
22
+ node.deconstruct_keys([]).each do |key, value|
23
+ next if [:flags, :location].include?(key)
24
+
25
+ if key.to_s.end_with?('_loc')
26
+ new_key = key.to_s[0..-5]
27
+ unless keys.include?(new_key)
28
+ keys << new_key
29
+ children << node.send(new_key)
30
+ end
31
+ else
32
+ unless keys.include?(key.to_s)
33
+ keys << key.to_s
34
+ children << value
35
+ end
36
+ end
37
+ end
38
+ children
21
39
  end
22
40
 
23
41
  def get_siblings(node)
24
- child_nodes = node.parent_node.child_nodes
42
+ child_nodes = get_children(node.parent_node)
25
43
  if child_nodes.is_a?(Array) && child_nodes.size == 1 && child_nodes.first.is_a?(Array)
26
44
  index = child_nodes.first.index(node)
27
45
  return child_nodes.first[index + 1...]
@@ -3,14 +3,6 @@
3
3
  require 'syntax_tree'
4
4
  require 'syntax_tree_ext'
5
5
 
6
- if RUBY_VERSION.to_i < 3
7
- class Hash
8
- def except(*keys)
9
- self.reject { |k, _| keys.include?(k) }
10
- end
11
- end
12
- end
13
-
14
6
  class NodeQuery::SyntaxTreeAdapter
15
7
  def is_node?(node)
16
8
  node.is_a?(SyntaxTree::Node)
@@ -25,11 +17,12 @@ class NodeQuery::SyntaxTreeAdapter
25
17
  end
26
18
 
27
19
  def get_children(node)
28
- node.deconstruct_keys([]).except(:location, :comments).values
20
+ node.deconstruct_keys([]).filter { |key, _value| ![:location, :comments].include?(key) }
21
+ .values
29
22
  end
30
23
 
31
24
  def get_siblings(node)
32
- child_nodes = node.parent_node.deconstruct_keys([]).except(:location, :comments).values
25
+ child_nodes = get_children(node.parent_node)
33
26
  if child_nodes.is_a?(Array) && child_nodes.size == 1 && child_nodes.first.is_a?(Array)
34
27
  index = child_nodes.first.index(node)
35
28
  return child_nodes.first[index + 1...]
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeQuery
4
- VERSION = "1.15.0"
4
+ VERSION = "1.15.2"
5
5
  end
data/lib/node_query.rb CHANGED
@@ -66,6 +66,8 @@ class NodeQuery
66
66
  ParserAdapter.new
67
67
  when :syntax_tree
68
68
  SyntaxTreeAdapter.new
69
+ when :prism
70
+ PrismAdapter.new
69
71
  else
70
72
  raise InvalidAdapterError, "adapter #{adapter} is not supported"
71
73
  end
data/node_query.gemspec CHANGED
@@ -10,12 +10,12 @@ Gem::Specification.new do |spec|
10
10
 
11
11
  spec.summary = "ast node query language"
12
12
  spec.description = "ast node query language"
13
- spec.homepage = "https://github.com/xinminlabs/node-query-ruby"
13
+ spec.homepage = "https://github.com/synvert-hq/node-query-ruby"
14
14
  spec.required_ruby_version = ">= 2.6.0"
15
15
 
16
16
  spec.metadata["homepage_uri"] = spec.homepage
17
- spec.metadata["source_code_uri"] = "https://github.com/xinminlabs/node-query-ruby"
18
- spec.metadata["changelog_uri"] = "https://github.com/xinminlabs/node-query-ruby/blob/master/CHANGELOG.md"
17
+ spec.metadata["source_code_uri"] = "https://github.com/synvert-hq/node-query-ruby"
18
+ spec.metadata["changelog_uri"] = "https://github.com/synvert-hq/node-query-ruby/blob/master/CHANGELOG.md"
19
19
 
20
20
  # Specify which files should be added to the gem when it is released.
21
21
  # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
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.15.0
4
+ version: 1.15.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-02-10 00:00:00.000000000 Z
11
+ date: 2024-04-07 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ast node query language
14
14
  email:
@@ -58,12 +58,12 @@ files:
58
58
  - node_query.gemspec
59
59
  - sig/node_query.rbs
60
60
  - sig/node_query/adapter.rbs
61
- homepage: https://github.com/xinminlabs/node-query-ruby
61
+ homepage: https://github.com/synvert-hq/node-query-ruby
62
62
  licenses: []
63
63
  metadata:
64
- homepage_uri: https://github.com/xinminlabs/node-query-ruby
65
- source_code_uri: https://github.com/xinminlabs/node-query-ruby
66
- changelog_uri: https://github.com/xinminlabs/node-query-ruby/blob/master/CHANGELOG.md
64
+ homepage_uri: https://github.com/synvert-hq/node-query-ruby
65
+ source_code_uri: https://github.com/synvert-hq/node-query-ruby
66
+ changelog_uri: https://github.com/synvert-hq/node-query-ruby/blob/master/CHANGELOG.md
67
67
  post_install_message:
68
68
  rdoc_options: []
69
69
  require_paths: