synvert-core 0.30.0 → 0.31.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: d60fb908af77ff2aab17f451c37a9f89e2b2af54a5b9aa24b082906286378158
4
- data.tar.gz: a806d11b423f746ee2004b9467eb976132f1c3053b3986cb0e75e32291730dd6
3
+ metadata.gz: bf20c3a501940025291f9e0ae6f306d1613fb4db8ee5d5cf649d0ad7da4d1c5a
4
+ data.tar.gz: 425f42f736ec76ca6ade1f881ab252bfa6659f0e2cc8f3b55dd31153a4d8853a
5
5
  SHA512:
6
- metadata.gz: c24af6d0aa4fc55d3a6f35dca86fbcdca5fb66b3e6ba6a8d6e0404da07e0418a2b922ec6d2b4550878c2e422db1befa1f41010c9904eda246753e088bc1c9ea2
7
- data.tar.gz: c59443f7272ec4b13043fe79bf042b51d8de510143501fcf1d50e1a4fbc6d1d69cba79b007f6854550277bf98d74cef9f71c7aba15a7be6ffa34ea5c275e00da
6
+ metadata.gz: 52c43ad9b8986c68a4c77200e84b9cf7497fec7c46f0beb74fa695ed13d986f38519c167a3242d870dca79a0e09844fe6b564d6a54c258801801d4920be2f9da
7
+ data.tar.gz: 20aeb9c56536f335d8181e307bcf96ad8b3cbc7c02471077657a1ec0fa23db6c6f10269a4477aef3007ffc0b1dd07f3bb522289ecfed2c5f8f581abd49b3ee8b
data/CHANGELOG.md CHANGED
@@ -1,5 +1,9 @@
1
1
  # CHANGELOG
2
2
 
3
+ ## 0.31.0 (2021-04-27)
4
+
5
+ * Add `in` and `not_in` rules
6
+
3
7
  ## 0.30.0 (2021-04-26)
4
8
 
5
9
  * `goto_node` accepts multiple child node names
@@ -428,6 +428,14 @@ module Parser::AST
428
428
  actual = actual_value(self, multi_keys[0...-1])
429
429
  expected = expected_value(rules, multi_keys)
430
430
  !match_value?(actual, expected)
431
+ when :in
432
+ actual = actual_value(self, multi_keys[0...-1])
433
+ expected_values = expected_value(rules, multi_keys)
434
+ expected_values.any? { |expected| match_value?(actual, expected) }
435
+ when :not_in
436
+ actual = actual_value(self, multi_keys[0...-1])
437
+ expected_values = expected_value(rules, multi_keys)
438
+ expected_values.all? { |expected| !match_value?(actual, expected) }
431
439
  else
432
440
  actual = actual_value(self, multi_keys)
433
441
  expected = expected_value(rules, multi_keys)
@@ -3,4 +3,4 @@
3
3
  module Synvert::Core
4
4
  class Rewriter::AnyValue
5
5
  end
6
- end
6
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Synvert
4
4
  module Core
5
- VERSION = '0.30.0'
5
+ VERSION = '0.31.0'
6
6
  end
7
7
  end
@@ -404,6 +404,18 @@ describe Parser::AST::Node do
404
404
  node = parse(source)
405
405
  expect(node).not_to be_match(type: 'class', name: { not: 'Synvert' })
406
406
  end
407
+
408
+ it 'matches in' do
409
+ source = 'FactoryBot.create(:user)'
410
+ node = parse(source)
411
+ expect(node).to be_match(type: 'send', message: { in: [:create, :build] })
412
+ end
413
+
414
+ it 'matches not_in' do
415
+ source = 'FactoryBot.create(:user)'
416
+ node = parse(source)
417
+ expect(node).not_to be_match(type: 'send', message: { not_in: [:create, :build] })
418
+ end
407
419
  end
408
420
 
409
421
  describe '#child_node_range' do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: synvert-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.30.0
4
+ version: 0.31.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Richard Huang
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-26 00:00:00.000000000 Z
11
+ date: 2021-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport