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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 677b105ac790d969a647b1244272dec1d489ce8f
4
- data.tar.gz: 2c2541c2edc2616d65e408084cb069350551dfa4
3
+ metadata.gz: e640de58f90a24c07975b01b93b5235ef902c321
4
+ data.tar.gz: c1b524a74b39da1f2ace7ea288a42a7d14cd4a66
5
5
  SHA512:
6
- metadata.gz: 061f7d199adc1ddd4482aa446e10ea3cfadaeca343e4f4ec1de6629eab3db944828065ef4d123ac5153dcf16d8860a5767ec4f30767c411c4a0055233f5d4a45
7
- data.tar.gz: 8451f7ac97031790f913c6b223d243ec476ddf71e1205f19b1f604c6a182960aa860bbffee0117aa98e1d245e6ffd38ad0bf74ed5d69ff139d4c8f213ec7a3b0
6
+ metadata.gz: e3172a26349b36c7979f74ce161fa29bc5b8cb51ddd8935f2767bd402cb13812b35e5a0d262a28a7a85347395154cc6a516506225bcc59d7e86c937817f80253
7
+ data.tar.gz: ff0f4ecf016e9fb90a27e01d1442e70154b0b2bec139bad29a21108953d9c8424b3861315af5449b6e177c2e4c1d2c08db73408964186f2322efb09dcc433563
@@ -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) || default rescue default
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) || default rescue default
12
+ value = dig(*indexes) rescue default
13
+ value.nil? ? default : value # value can be false (Boolean)
12
14
  end
13
15
  end
@@ -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(&:to_i).each_cons(2).all? { |i, j| i > j } },
83
- '>=' => ->(v, d) { v.map(&:to_i).each_cons(2).all? { |i, j| i >= j } },
84
- '<' => ->(v, d) { v.map(&:to_i).each_cons(2).all? { |i, j| i < j } },
85
- '<=' => ->(v, d) { v.map(&:to_i).each_cons(2).all? { |i, j| i <= j } },
86
- 'max' => ->(v, d) { v.map(&:to_i).max },
87
- 'min' => ->(v, d) { v.map(&:to_i).min },
88
- '+' => ->(v, d) { v.map(&:to_i).reduce(:+) },
89
- '-' => ->(v, d) { v.map!(&:to_i); v.size == 1 ? -v.first : v.reduce(:-) },
90
- '*' => ->(v, d) { v.map(&:to_i).reduce(:*) },
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 },
@@ -35,6 +35,12 @@ class Integer
35
35
  end
36
36
  end
37
37
 
38
+ class Float
39
+ def falsy?
40
+ zero?
41
+ end
42
+ end
43
+
38
44
  class Array
39
45
  def falsy?
40
46
  empty?
@@ -1,3 +1,3 @@
1
1
  module JSONLogic
2
- VERSION = '0.4.1'
2
+ VERSION = '0.4.3'
3
3
  end
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.1
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: 2018-10-31 00:00:00.000000000 Z
12
+ date: 2019-03-27 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler