msfl 1.1.4 → 1.1.5

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: 2dabe6bd0c5afed3d7dd3b5a684397066966a9dd
4
- data.tar.gz: a4a87bc6566ac6a61cb316b7406580a0f022059b
3
+ metadata.gz: 177a30d02e7d96f90d3a86fd31804f7dcfacae54
4
+ data.tar.gz: 5e6ddff54fcc8f8380e51967a81b6a8b48931ec8
5
5
  SHA512:
6
- metadata.gz: 8d1efc78665649567fead825ddc15e982241e29a4dcef21a975062dc913a26ea877eb2a29d8bb02fe7844800d3f7606961c936bf674775847582c33a5de75d19
7
- data.tar.gz: 06f45d034877d6201d457c9dd89404fd207ae5501498414881c5b171a47bebc15a567d46831a7095fc62ccaa0d13775cfb706bd956235e54650edf93130f5ef0
6
+ metadata.gz: 69c76fe997453a7ad780a7ebeb6f91558777075b5f2085c6aa2c2b0a4282d10c91eec1e18fa7267c0c058ddb9eeb6f129b446352bacaf55565aa60ea4e46af76
7
+ data.tar.gz: 1329571a071f77f574acd92223f79d7fad3dfbf94a63a4d88eca1acc782a354a336ae20120f73a8dc68b92a54721aa4529d180e9e0ce51d63583e9fb9083d79a
@@ -37,15 +37,21 @@ module MSFL
37
37
 
38
38
  # { year: { start: 2001, end: 2005 } }
39
39
  # => { year: { between: { start: 2001, end: 2015 } } }
40
- def implicit_between_to_explicit_recursively(obj)
41
- if obj.is_a? Hash
40
+ def implicit_between_to_explicit_recursively(obj, parent_key = nil)
41
+ if parent_key == :between
42
+ # The immediately ancestor key is :between, so don't do anything special with :start and :end
43
+ result = Hash.new
44
+ obj.each do |k, v|
45
+ result[k] = implicit_between_to_explicit_recursively(v)
46
+ end
47
+ elsif obj.is_a? Hash
42
48
  # if the hash has two keys :start and :end, nest it inside a between and recurse on the values
43
49
  if obj.has_key?(:start) && obj.has_key?(:end)
44
50
  result = { between: { start: implicit_between_to_explicit_recursively(obj[:start]), end: implicit_between_to_explicit_recursively(obj[:end]) } }
45
51
  else
46
52
  result = Hash.new
47
53
  obj.each do |k, v|
48
- result[k] = implicit_between_to_explicit_recursively(v)
54
+ result[k] = implicit_between_to_explicit_recursively(v, k)
49
55
  end
50
56
  end
51
57
  elsif obj.is_a? Types::Set
data/msfl.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |s|
2
2
  s.name = 'msfl'
3
- s.version = '1.1.4'
3
+ s.version = '1.1.5'
4
4
  s.date = '2015-04-01'
5
5
  s.summary = "MSFL in Ruby"
6
6
  s.description = "Serializers, validators, and other tasty goodness for the Mattermark Semantic Filter Language in Ruby."
@@ -77,6 +77,46 @@ describe "MSFL::Converters::Operator" do
77
77
 
78
78
  subject
79
79
  end
80
+
81
+ context "when the object to be converted is { investor_id: { between: { start: 10, end: 50 } } }" do
82
+
83
+ let(:test_instance) { MSFL::Converters::Operator.new }
84
+
85
+ let(:obj) { { investor_id: { between: { start: 10, end: 50 } } } }
86
+
87
+ let(:expected) do
88
+ { and: MSFL::Types::Set.new([
89
+ { investor_id: { gte: 10 } },
90
+ { investor_id: { lte: 50 } }
91
+ ])}
92
+ end
93
+
94
+ let(:conversions_to_run) { nil }
95
+
96
+ it "is the the ANDed gte / lte equivalent expression" do
97
+ expect(subject).to eq expected
98
+ end
99
+ end
100
+
101
+ context "when the object to be converted is { investor_id: { start: 10, end: 50 } }" do
102
+
103
+ let(:test_instance) { MSFL::Converters::Operator.new }
104
+
105
+ let(:obj) { { investor_id: { start: 10, end: 50 } } }
106
+
107
+ let(:expected) do
108
+ { and: MSFL::Types::Set.new([
109
+ { investor_id: { gte: 10 } },
110
+ { investor_id: { lte: 50 } }
111
+ ])}
112
+ end
113
+
114
+ let(:conversions_to_run) { nil }
115
+
116
+ it "is the the ANDed gte / lte equivalent expression" do
117
+ expect(subject).to eq expected
118
+ end
119
+ end
80
120
  end
81
121
 
82
122
 
@@ -201,6 +241,17 @@ describe "MSFL::Converters::Operator" do
201
241
  expect(subject).to eq expected
202
242
  end
203
243
  end
244
+
245
+ context "when there is an explicit BETWEEN" do
246
+
247
+ let(:arg) { { investor_id: { between: { start: 10, end: 50 } } } }
248
+
249
+ let(:expected) { arg }
250
+
251
+ it "is unchanged" do
252
+ expect(subject).to eq expected
253
+ end
254
+ end
204
255
  end
205
256
  end
206
257
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: msfl
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.4
4
+ version: 1.1.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Courtland Caldwell