pump 0.6.3 → 0.6.4

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: b23d242fff172d8de112af6c2fc6f326e101bd14
4
- data.tar.gz: 4e369b0d6f692526571a487c1e692199b21d1efb
3
+ metadata.gz: 27f8a3e058da84aed35138707b6be1836abb45e8
4
+ data.tar.gz: 7d4e25c6424008b13f67aef733eb6bddbc586afd
5
5
  SHA512:
6
- metadata.gz: 3593cfcda6c0a33bd2f1cdf0d7010fb6f1b627a11a33c675fa2ab0854771e8b3cd109137d26bb8cf557e41ea21345b4c2b018f0b6a0b3105fa73bfc1c16917e3
7
- data.tar.gz: 6c366d3a85852a28c5bb536bd2daed8eaf23f1e2d14972e73fd3c951c00d0dd8dd1895450b65a21d6ab33d1d2ad13529fa0ebc5e949616c7e42969f4019d3c24
6
+ metadata.gz: dbede9b7e563335f30ed7682644ce43eb974dc21ce2bae10257d44b9520cd29a63523f3b2e87f9b61bc9a662d3ec8bf83ec7d53d8da08a8e0c5b7c86f61f368e
7
+ data.tar.gz: 32020a5f3bc48ca51f9cb1e2b6872547e8dbfff045607549ce431076a7d11d503e1369714d5b99f7f6eb4a285c95df495147002265b3a6036ffaccbfd41e393d
data/CHANGES.md CHANGED
@@ -1,8 +1,14 @@
1
1
  ### dev
2
2
 
3
- [full changelog](http://github.com/yolk/pump/compare/v0.6.3...master)
3
+ [full changelog](http://github.com/yolk/pump/compare/v0.6.4...master)
4
4
 
5
- ### 0.6.3 / 2013-07-26
5
+ ### 0.6.4 / 2013-11-08
6
+
7
+ [full changelog](http://github.com/yolk/valvat/compare/v0.6.3...v0.6.4)
8
+
9
+ * :fields option is now supported on array in JSON and XML
10
+
11
+ ### 0.6.3 / 2013-11-08
6
12
 
7
13
  [full changelog](http://github.com/yolk/valvat/compare/v0.6.2...v0.6.3)
8
14
 
data/lib/pump/encoder.rb CHANGED
@@ -56,7 +56,11 @@ module Pump
56
56
  object = object.to_a if defined?(ActiveRecord::Relation) && object.is_a?(ActiveRecord::Relation)
57
57
  fields_to_hash(options)
58
58
  if object.is_a?(Array)
59
- encode_array(object, options)
59
+ if options[:fields]
60
+ encode_partial_array(object, options)
61
+ else
62
+ encode_array(object, options)
63
+ end
60
64
  elsif options[:fields]
61
65
  encode_partial_single(object, options)
62
66
  else
data/lib/pump/json.rb CHANGED
@@ -47,6 +47,20 @@ module Pump
47
47
  end
48
48
  end, OJ_OPTIONS)
49
49
  end
50
+
51
+ def encode_partial_array(objects, options)
52
+ Oj.dump(if options[:exclude_root_in_json]
53
+ objects.map do |object|
54
+ #{partial_main}
55
+ json
56
+ end
57
+ else
58
+ objects.map do |object|
59
+ #{partial_main}
60
+ { :'#{format_name(root_name)}' => json }
61
+ end
62
+ end, OJ_OPTIONS)
63
+ end
50
64
  EOV
51
65
  end
52
66
 
data/lib/pump/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Pump
2
- VERSION = "0.6.3"
2
+ VERSION = "0.6.4"
3
3
  end
data/lib/pump/xml.rb CHANGED
@@ -20,6 +20,11 @@ module Pump
20
20
  field_hash = options[:fields]
21
21
  "#{Tag.new(root_name, {}, sub_tags(true), tag_options)}"
22
22
  end
23
+
24
+ def encode_partial_array(objects, options)
25
+ field_hash = options[:fields]
26
+ "#{TagArray.new(root_name, {}, sub_tags(true), tag_options)}"
27
+ end
23
28
  EOV
24
29
  end
25
30
 
@@ -291,6 +291,21 @@ describe Pump::Json do
291
291
  )
292
292
  end
293
293
  end
294
+
295
+ context "with array of objects" do
296
+ let(:people) {
297
+ [
298
+ Struct.new(:name, :age, :children).new('Gustav', 2),
299
+ Struct.new(:name, :age, :children).new('Mary', 1)
300
+ ]
301
+ }
302
+
303
+ let(:json) { Pump::Json.new('person', [{:name => :name}, {:age => :age}]) }
304
+
305
+ it "returns only specified fields" do
306
+ json.encode(people, :fields => ['name']).should eql("[{\"person\":{\"name\":\"Gustav\"}},{\"person\":{\"name\":\"Mary\"}}]")
307
+ end
308
+ end
294
309
  end
295
310
  end
296
311
  end
@@ -378,6 +378,21 @@ describe Pump::Xml do
378
378
  )
379
379
  end
380
380
  end
381
+
382
+ context "with array of objects" do
383
+ let(:people) {
384
+ [
385
+ Struct.new(:name, :age, :children).new('Gustav', 2),
386
+ Struct.new(:name, :age, :children).new('Mary', 1)
387
+ ]
388
+ }
389
+
390
+ let(:xml) { Pump::Xml.new('person', [{:name => :name}, {:age => :age}]) }
391
+
392
+ it "returns only specified fields" do
393
+ xml.encode(people, :fields => ['name']).should eql("#{XML_INSTRUCT}<people type=\"array\">\n <person>\n <name>Gustav</name>\n </person>\n <person>\n <name>Mary</name>\n </person>\n</people>\n")
394
+ end
395
+ end
381
396
  end
382
397
  end
383
398
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pump
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.6.3
4
+ version: 0.6.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sebastian Munz