simple-json 1.0.1 → 1.0.2

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.
@@ -84,7 +84,33 @@ class SimpleJSON
84
84
  if v.nil? || v == true || v == false
85
85
  r_data
86
86
  else
87
- v.to_a.inject(Hash.new) { |mem,obj| mem[obj[0]] = r_data[obj[0]]; mem }
87
+ v.to_a.inject(Hash.new) do |mem,obj|
88
+ if obj[1].nil? || obj[1] == true || obj[1] == false
89
+ mem[obj[0]] = r_data[obj[0]]
90
+ elsif obj[1].is_a?(Integer)
91
+ mem[obj[0]] = r_data[obj[0]][obj[1]]
92
+ elsif obj[1] == 'first'
93
+ mem[obj[0]] = r_data[obj[0]].first
94
+ elsif obj[1] == 'last'
95
+ mem[obj[0]] = r_data[obj[0]].last
96
+ elsif obj[1] =~ /^([^\.]+)(\.\.\.*)([^\.]+)$/
97
+ one = $1.to_i; three = $3.to_i
98
+ if one.is_a?(Integer) and three.is_a?(Integer)
99
+ if $2 == '..'
100
+ mem[obj[0]] = r_data[obj[0]][one..three]
101
+ elsif $2 == '...'
102
+ mem[obj[0]] = r_data[obj[0]][one...three]
103
+ else
104
+ mem[obj[0]] = {'error' => "Bad slice syntax, you wrote: < #{$2} >, should have been < .. > or < ... >."}
105
+ end
106
+ else
107
+ mem[obj[0]] = {'error' => "Bad slice syntax, must be 2 integers with dots in between... i.e. < 11..14 >"}
108
+ end
109
+ else
110
+ mem[obj[0]] = {'error' => "Unknown key fetching syntax: #{obj[1].inspect}"}
111
+ end
112
+ mem
113
+ end
88
114
  end
89
115
  end
90
116
 
@@ -129,7 +129,88 @@ class TestSimpleJSONDB < Test::Unit::TestCase
129
129
  assert(o_data[query][@@id].size == 2)
130
130
  end
131
131
 
132
- def test_13_delete
132
+ def test_13_get_array_item
133
+ o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item1'}}))[2])
134
+ assert(o_data[@@id] == true,'add more again?')
135
+ o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item2'}}))[2])
136
+ assert(o_data[@@id] == true,'add more again?')
137
+ o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item3'}}))[2])
138
+ assert(o_data[@@id] == true,'add more again?')
139
+ o_data = JSON.parse( SimpleJSON.rack_mock(:add, JSON.generate({@@id => {'list' => 'item4'}}))[2])
140
+ assert(o_data[@@id] == true,'add more again?')
141
+
142
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 0}}))[2])
143
+ assert(o_data.is_a?(Hash))
144
+ assert(o_data.include?(@@id))
145
+ assert(o_data[@@id].include?('list'))
146
+ assert(o_data[@@id]['list'] == 'item1')
147
+
148
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 1}}))[2])
149
+ assert(o_data[@@id]['list'] == 'item2')
150
+
151
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 2}}))[2])
152
+ assert(o_data[@@id]['list'] == 'item3')
153
+
154
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 3}}))[2])
155
+ assert(o_data[@@id]['list'] == 'item4')
156
+
157
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 'first'}}))[2])
158
+ assert(o_data[@@id]['list'] == 'item1')
159
+
160
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => 'last'}}))[2])
161
+ assert(o_data[@@id]['list'] == 'item4')
162
+
163
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => '2..-1'}}))[2])
164
+ assert(o_data[@@id]['list'].is_a?(Array))
165
+ assert(o_data[@@id]['list'].size == 2)
166
+ assert(o_data[@@id]['list'][0] == 'item3')
167
+ assert(o_data[@@id]['list'][1] == 'item4')
168
+
169
+ o_data = JSON.parse( SimpleJSON.rack_mock(:get, JSON.generate({@@id => {'list' => '0...2'}}))[2])
170
+ assert(o_data[@@id]['list'].size == 2)
171
+ assert(o_data[@@id]['list'][0] == 'item1')
172
+ assert(o_data[@@id]['list'][1] == 'item2')
173
+ end
174
+
175
+ def test_14_query_array_item
176
+ query = "['name' = '#{@@id}']"
177
+
178
+ t_data = {query => {'list' => 0}}
179
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
180
+ assert(o_data[query][@@id]['list'] == 'item1')
181
+
182
+ t_data = {query => {'list' => 1}}
183
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
184
+ assert(o_data[query][@@id]['list'] == 'item2')
185
+
186
+ t_data = {query => {'list' => 2}}
187
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
188
+ assert(o_data[query][@@id]['list'] == 'item3')
189
+
190
+ t_data = {query => {'list' => 3}}
191
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
192
+ assert(o_data[query][@@id]['list'] == 'item4')
193
+
194
+ t_data = {query => {'list' => 'first'}}
195
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
196
+ assert(o_data[query][@@id]['list'] == 'item1')
197
+
198
+ t_data = {query => {'list' => 'last'}}
199
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
200
+ assert(o_data[query][@@id]['list'] == 'item4')
201
+
202
+ t_data = {query => {'list' => '2..-1'}}
203
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
204
+ assert(o_data[query][@@id]['list'][0] == 'item3')
205
+ assert(o_data[query][@@id]['list'][1] == 'item4')
206
+
207
+ t_data = {query => {'list' => '0...2'}}
208
+ o_data = JSON.parse( SimpleJSON.rack_mock(:query, JSON.generate(t_data))[2])
209
+ assert(o_data[query][@@id]['list'][0] == 'item1')
210
+ assert(o_data[query][@@id]['list'][1] == 'item2')
211
+ end
212
+
213
+ def test_20_delete
133
214
  o_data = JSON.parse( SimpleJSON.rack_mock(:delete, JSON.generate({@@id => nil}))[2])
134
215
  assert(o_data.is_a?(Hash))
135
216
  assert(o_data.size == 1)
@@ -144,7 +225,7 @@ class TestSimpleJSONDB < Test::Unit::TestCase
144
225
  assert(o_data[@@id].empty?)
145
226
  end
146
227
 
147
- def test_14_other_config
228
+ def test_21_other_config
148
229
  domain = 'other_test_domain'
149
230
  o_data = JSON.parse( SimpleJSON.rack_mock(:delete, JSON.generate({@@id => nil}), {'AMAZON_DOMAIN' => domain})[2])
150
231
  assert(@@sdb.list_domains[0].include?(domain), 'other domain')
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: simple-json
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Louis-Philippe Perron