Skip to content

Commit 3815c7d

Browse files
authored
Merge pull request #13 from eropple/interpolation-for-in-operator
Interpolation for in operator
2 parents 8327464 + 512c3f6 commit 3815c7d

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

json_logic.gemspec

+1
Original file line numberDiff line numberDiff line change
@@ -23,4 +23,5 @@ Gem::Specification.new do |spec|
2323
spec.add_development_dependency 'bundler', '~> 1.13'
2424
spec.add_development_dependency 'rake', '~> 10.0'
2525
spec.add_development_dependency 'minitest', '~> 5.0'
26+
spec.add_development_dependency 'pry'
2627
end

lib/json_logic/operation.rb

+1-1
Original file line numberDiff line numberDiff line change
@@ -92,7 +92,7 @@ class Operation
9292
'%' => ->(v, d) { v.map(&:to_i).reduce(:%) },
9393
'^' => ->(v, d) { v.map(&:to_f).reduce(:**) },
9494
'merge' => ->(v, d) { v.flatten },
95-
'in' => ->(v, d) { v[1].include? v[0] },
95+
'in' => ->(v, d) { interpolated_block(v[1], d).include? v[0] },
9696
'cat' => ->(v, d) { v.map(&:to_s).join },
9797
'log' => ->(v, d) { puts v }
9898
}

test/json_logic_test.rb

+22
Original file line numberDiff line numberDiff line change
@@ -70,4 +70,26 @@ def test_array_with_logic
7070
{ "x" => true, "y" => 42}
7171
)
7272
end
73+
74+
def test_in_with_variable
75+
assert_equal true, JSONLogic.apply(
76+
{
77+
"in" => [
78+
{"var" => "x"},
79+
{"var" => "x"}
80+
]
81+
},
82+
{ "x" => "foo"}
83+
)
84+
85+
assert_equal false, JSONLogic.apply(
86+
{
87+
"in" => [
88+
{"var" => "x"},
89+
{"var" => "y"},
90+
]
91+
},
92+
{ "x" => "foo", "y" => "bar" }
93+
)
94+
end
7395
end

0 commit comments

Comments
 (0)