msfl 1.1.4 → 1.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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