synvert-core 0.30.0 → 0.31.0

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: 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