json_logic 0.4.1 → 0.4.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/core_ext/deep_fetch.rb +4 -2
- data/lib/json_logic/operation.rb +10 -9
- data/lib/json_logic/truthy.rb +6 -0
- data/lib/json_logic/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e640de58f90a24c07975b01b93b5235ef902c321
|
4
|
+
data.tar.gz: c1b524a74b39da1f2ace7ea288a42a7d14cd4a66
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3172a26349b36c7979f74ce161fa29bc5b8cb51ddd8935f2767bd402cb13812b35e5a0d262a28a7a85347395154cc6a516506225bcc59d7e86c937817f80253
|
7
|
+
data.tar.gz: ff0f4ecf016e9fb90a27e01d1442e70154b0b2bec139bad29a21108953d9c8424b3861315af5449b6e177c2e4c1d2c08db73408964186f2322efb09dcc433563
|
data/lib/core_ext/deep_fetch.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
class Hash
|
2
2
|
def deep_fetch(key, default = nil)
|
3
3
|
keys = key.to_s.split('.')
|
4
|
-
dig(*keys)
|
4
|
+
value = dig(*keys) rescue default
|
5
|
+
value.nil? ? default : value # value can be false (Boolean)
|
5
6
|
end
|
6
7
|
end
|
7
8
|
|
8
9
|
class Array
|
9
10
|
def deep_fetch(index, default = nil)
|
10
11
|
indexes = index.to_s.split('.').map(&:to_i)
|
11
|
-
dig(*indexes)
|
12
|
+
value = dig(*indexes) rescue default
|
13
|
+
value.nil? ? default : value # value can be false (Boolean)
|
12
14
|
end
|
13
15
|
end
|
data/lib/json_logic/operation.rb
CHANGED
@@ -79,17 +79,18 @@ module JSONLogic
|
|
79
79
|
result.nil? ? v.last : result
|
80
80
|
},
|
81
81
|
'?:' => ->(v, d) { LAMBDAS['if'].call(v, d) },
|
82
|
-
'>' => ->(v, d) { v.map(&:
|
83
|
-
'>=' => ->(v, d) { v.map(&:
|
84
|
-
'<' => ->(v, d) { v.map(&:
|
85
|
-
'<=' => ->(v, d) { v.map(&:
|
86
|
-
'max' => ->(v, d) { v.map(&:
|
87
|
-
'min' => ->(v, d) { v.map(&:
|
88
|
-
'+' => ->(v, d) { v.map(&:
|
89
|
-
'-' => ->(v, d) { v.map!(&:
|
90
|
-
'*' => ->(v, d) { v.map(&:
|
82
|
+
'>' => ->(v, d) { v.map(&:to_f).each_cons(2).all? { |i, j| i > j } },
|
83
|
+
'>=' => ->(v, d) { v.map(&:to_f).each_cons(2).all? { |i, j| i >= j } },
|
84
|
+
'<' => ->(v, d) { v.map(&:to_f).each_cons(2).all? { |i, j| i < j } },
|
85
|
+
'<=' => ->(v, d) { v.map(&:to_f).each_cons(2).all? { |i, j| i <= j } },
|
86
|
+
'max' => ->(v, d) { v.map(&:to_f).max },
|
87
|
+
'min' => ->(v, d) { v.map(&:to_f).min },
|
88
|
+
'+' => ->(v, d) { v.map(&:to_f).reduce(:+) },
|
89
|
+
'-' => ->(v, d) { v.map!(&:to_f); v.size == 1 ? -v.first : v.reduce(:-) },
|
90
|
+
'*' => ->(v, d) { v.map(&:to_f).reduce(:*) },
|
91
91
|
'/' => ->(v, d) { v.map(&:to_f).reduce(:/) },
|
92
92
|
'%' => ->(v, d) { v.map(&:to_i).reduce(:%) },
|
93
|
+
'^' => ->(v, d) { v.map(&:to_f).reduce(:**) },
|
93
94
|
'merge' => ->(v, d) { v.flatten },
|
94
95
|
'in' => ->(v, d) { v[1].include? v[0] },
|
95
96
|
'cat' => ->(v, d) { v.map(&:to_s).join },
|
data/lib/json_logic/truthy.rb
CHANGED
data/lib/json_logic/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: json_logic
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Kenneth Geerts
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-03-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|