node_query 1.12.0 → 1.12.1

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: e489f2422c8b9f55da98a88393f23d1526759989feb8f34b9b1c822d6770250c
4
- data.tar.gz: 99c6229810c7ffc28be0c29903a1719f4b07cb78a801028f5c7c44e0db97358d
3
+ metadata.gz: 35243974bb269cb011bc7fb7c4ca8877ef0338cd4cfb8dc80785a06e9b40ee6f
4
+ data.tar.gz: ad100af634d93ddaa21bd37b89c3d0d542645007ee9bcd73c0f8fd28fe7211ae
5
5
  SHA512:
6
- metadata.gz: b34877880a1058c6895c7a23bd6fb66a3e0b326a924878240a7ac49054ad0c39a37085405c4163fd9a92483929d8cff096a6b97b3a1b875093e1a151c3ad64d9
7
- data.tar.gz: 1ddfb1d645b1636f20f85a207324783cf48207109d88b2e0bf9a60c65d84b47a432152207b63df3ed33996ec3982352e376ed6f81c1018eb8b2c19ef472ab393
6
+ metadata.gz: 656a13c7124f155c6ed96c5d39a901edd248b4ee1d4b19b2d2205c2f244ba0057dec372087b5a4ba08c5d00e784ae5655a0fee1656befe3061df780e8edc9e7b
7
+ data.tar.gz: e811b204f0cc9848b9c65a85295049e37e7f1bf2cb1897f79236093af95a941133962ae425d125c103e123da9019960d00ddf4c41850e868cf5fabd7c245f64a
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 1.12.1 (2023-04-06)
4
+
5
+ * Fix when `actual` is nil
6
+
3
7
  ## 1.12.0 (2023-01-16)
4
8
 
5
9
  * Drop `activesupport`
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- node_query (1.12.0)
4
+ node_query (1.12.1)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -38,14 +38,14 @@ GEM
38
38
  nenv (~> 0.1)
39
39
  shellany (~> 0.0)
40
40
  oedipus_lex (2.6.0)
41
- parser (3.1.2.0)
41
+ parser (3.2.1.1)
42
42
  ast (~> 2.4.1)
43
- parser_node_ext (0.4.0)
43
+ parser_node_ext (1.0.0)
44
44
  parser
45
45
  pry (0.14.1)
46
46
  coderay (~> 1.1)
47
47
  method_source (~> 1.0)
48
- racc (1.6.0)
48
+ racc (1.6.2)
49
49
  rake (13.0.6)
50
50
  rb-fsevent (0.11.1)
51
51
  rb-inotify (0.10.1)
data/README.md CHANGED
@@ -115,7 +115,7 @@ It matches class node whose parent class name is Base
115
115
  ### nql matches evaluated value
116
116
 
117
117
  ```
118
- .ivasgn[left_value="@{{right_value}}"]
118
+ .ivasgn[variable="@{{value}}"]
119
119
  ```
120
120
 
121
121
  It matches ivasgn node whose left value equals '@' plus the evaluated value of right value.
@@ -271,7 +271,7 @@ It matches send node whose parent is def node.
271
271
  #### Adjacent sibling combinator
272
272
 
273
273
  ```
274
- .send[left_value=@id] + .send
274
+ .send[variable=@id] + .send
275
275
  ```
276
276
 
277
277
  It matches send node only if it is immediately follows the send node whose left value is @id.
@@ -279,7 +279,7 @@ It matches send node only if it is immediately follows the send node whose left
279
279
  #### General sibling combinator
280
280
 
281
281
  ```
282
- .send[left_value=@id] ~ .send
282
+ .send[variable=@id] ~ .send
283
283
  ```
284
284
 
285
285
  It matches send node only if it is follows the send node whose left value is @id.
@@ -323,7 +323,7 @@ It matches the last def node.
323
323
  ### nql matches multiple expressions
324
324
 
325
325
  ```
326
- .ivasgn[left_value=@id], .ivasgn[left_value=@name]
326
+ .ivasgn[variable=@id], .ivasgn[variable=@name]
327
327
  ```
328
328
 
329
329
  It matches ivasgn node whose left value is either @id or @name.
@@ -363,7 +363,7 @@ It matches class node whose parent class name is Base
363
363
  ### rules matches evaluated value
364
364
 
365
365
  ```
366
- { node_type: 'ivasgn', left_value: '@{{right_value}}' }
366
+ { node_type: 'ivasgn', variable: '@{{value}}' }
367
367
  ```
368
368
 
369
369
  It matches ivasgn node whose left value equals '@' plus the evaluated value of right value.
@@ -35,4 +35,4 @@ class NodeQuery::Adapter
35
35
  def get_siblings(node)
36
36
  raise NotImplementedError, 'get_siblings is not implemented'
37
37
  end
38
- end
38
+ end
@@ -18,7 +18,10 @@ module NodeQuery::Compiler
18
18
  def match?(node, base_node, _operator = '==')
19
19
  return false unless node
20
20
 
21
- @node_type.to_sym == NodeQuery.adapter.get_node_type(node) && (!@attribute_list || @attribute_list.match?(node, base_node))
21
+ @node_type.to_sym == NodeQuery.adapter.get_node_type(node) && (!@attribute_list || @attribute_list.match?(
22
+ node,
23
+ base_node
24
+ ))
22
25
  end
23
26
 
24
27
  def to_s
@@ -25,7 +25,9 @@ module NodeQuery::Compiler
25
25
  when '!='
26
26
  if expected.is_a?(::Array)
27
27
  !actual.is_a?(::Array) || actual.size != expected.size ||
28
- actual.zip(expected).any? { |actual_child, expected_child| expected_child.match?(actual_child, base_node, '!=') }
28
+ actual.zip(expected).any? { |actual_child, expected_child|
29
+ expected_child.match?(actual_child, base_node, '!=')
30
+ }
29
31
  else
30
32
  !is_equal?(actual, expected)
31
33
  end
@@ -66,7 +68,9 @@ module NodeQuery::Compiler
66
68
  else
67
69
  if expected.is_a?(::Array)
68
70
  actual.is_a?(::Array) && actual.size == expected.size &&
69
- actual.zip(expected).all? { |actual_child, expected_child| expected_child.match?(actual_child, base_node, '==') }
71
+ actual.zip(expected).all? { |actual_child, expected_child|
72
+ expected_child.match?(actual_child, base_node, '==')
73
+ }
70
74
  else
71
75
  is_equal?(actual, expected)
72
76
  end
@@ -110,7 +114,7 @@ module NodeQuery::Compiler
110
114
  # Get the expected value
111
115
  # @param base_node [Node] the base node for evaluated value
112
116
  # @return expected value, could be integer, float, string, boolean, nil, range, and etc.
113
- def expected_value(base_node)
117
+ def expected_value(_base_node)
114
118
  @value
115
119
  end
116
120
 
@@ -12,7 +12,15 @@ module NodeQuery::Compiler
12
12
  # @param attribute_list [NodeQuery::Compiler::AttributeList] the attribute list
13
13
  # @param pseudo_class [String] the pseudo class, can be <code>has</code> or <code>not_has</code>
14
14
  # @param pseudo_selector [NodeQuery::Compiler::Expression] the pseudo selector
15
- def initialize(goto_scope: nil, relationship: nil, rest: nil, basic_selector: nil, position: nil, pseudo_class: nil, pseudo_selector: nil)
15
+ def initialize(
16
+ goto_scope: nil,
17
+ relationship: nil,
18
+ rest: nil,
19
+ basic_selector: nil,
20
+ position: nil,
21
+ pseudo_class: nil,
22
+ pseudo_selector: nil
23
+ )
16
24
  @goto_scope = goto_scope
17
25
  @relationship = relationship
18
26
  @rest = rest
@@ -36,7 +44,10 @@ module NodeQuery::Compiler
36
44
  return false
37
45
  end
38
46
  end
39
- NodeQuery.adapter.is_node?(node) && (!@basic_selector || (operator == "!=" ? !@basic_selector.match?(node, base_node) : @basic_selector.match?(node, base_node))) && match_pseudo_class?(node)
47
+ NodeQuery.adapter.is_node?(node) && (!@basic_selector || (operator == "!=" ? !@basic_selector.match?(
48
+ node,
49
+ base_node
50
+ ) : @basic_selector.match?(node, base_node))) && match_pseudo_class?(node)
40
51
  end
41
52
 
42
53
  # Query nodes by the selector.
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeQuery::Helper
4
- class <<self
4
+ class << self
5
5
  # Get target node by the keys.
6
6
  # @param node [Node] ast node
7
7
  # @param keys [String|Array] keys of child node.
@@ -43,7 +43,7 @@ class NodeQuery::Helper
43
43
  # Evaluate node value.
44
44
  # @example
45
45
  # source code of the node is @id = id
46
- # evaluated_node_value(node, "@{{right_value}}") # => @id
46
+ # evaluated_node_value(node, "@{{value}}") # => @id
47
47
  # @param node [Node] ast node
48
48
  # @param str [String] string to be evaluated
49
49
  # @return [String] evaluated string
@@ -63,4 +63,4 @@ class NodeQuery::Helper
63
63
  node.to_s
64
64
  end
65
65
  end
66
- end
66
+ end
@@ -22,7 +22,7 @@ class NodeQuery::NodeRules
22
22
  return match_node?(node) ? [node] : []
23
23
  end
24
24
 
25
- matching_nodes = []
25
+ matching_nodes = []
26
26
  if options[:including_self] && match_node?(node)
27
27
  matching_nodes.push(node)
28
28
  return matching_nodes if options[:stop_at_first_match]
@@ -51,9 +51,10 @@ class NodeQuery::NodeRules
51
51
  def match_node?(node)
52
52
  flat_hash(@rules).keys.all? do |multi_keys|
53
53
  last_key = multi_keys.last
54
- actual = KEYWORDS.include?(last_key) ?
55
- NodeQuery::Helper.get_target_node(node, multi_keys[0...-1].join('.')) :
56
- NodeQuery::Helper.get_target_node(node, multi_keys.join('.'))
54
+ actual =
55
+ KEYWORDS.include?(last_key) ?
56
+ NodeQuery::Helper.get_target_node(node, multi_keys[0...-1].join('.')) :
57
+ NodeQuery::Helper.get_target_node(node, multi_keys.join('.'))
57
58
  expected = expected_value(@rules, multi_keys)
58
59
  expected = NodeQuery::Helper.evaluate_node_value(node, expected) if expected.is_a?(String)
59
60
  case last_key
@@ -131,9 +132,9 @@ class NodeQuery::NodeRules
131
132
  actual == expected
132
133
  end
133
134
  when TrueClass
134
- :true == actual.type
135
+ :true == actual&.type
135
136
  when FalseClass
136
- :false == actual.type
137
+ :false == actual&.type
137
138
  when Parser::AST::Node
138
139
  actual == expected
139
140
  else
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  class NodeQuery
4
- VERSION = "1.12.0"
4
+ VERSION = "1.12.1"
5
5
  end
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.12.0
4
+ version: 1.12.1
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-01-16 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: ast node query language
14
14
  email:
@@ -77,7 +77,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
77
77
  - !ruby/object:Gem::Version
78
78
  version: '0'
79
79
  requirements: []
80
- rubygems_version: 3.4.1
80
+ rubygems_version: 3.4.10
81
81
  signing_key:
82
82
  specification_version: 4
83
83
  summary: ast node query language