representable 1.8.2 → 1.8.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: c404fc7cc88d164d5e03512e8d112ad44b5b1b1d
4
- data.tar.gz: bfef2af61a347c39153f41f62bddf8324bf87026
3
+ metadata.gz: 05194fa7a0112822aaa674c38ab7240c59280756
4
+ data.tar.gz: 811cede2542e2e7e6dc47b0a42b918c70869d5d1
5
5
  SHA512:
6
- metadata.gz: 9a45dbbd0995024eedb480cc1c42fe976a7e654275cd93161b3f78745e0701fce278efd5e7a998dac9b6c81cc31d8587f7ac034581e6f21687802103de963bdb
7
- data.tar.gz: 5be6553990c8e27590d39f83ca171cb8fb96983f028d5a8d8a28817218ab05d7309da0295f8d188a4f579930d3fb52bcd596b6b9288ba71d26333682933bfb5b
6
+ metadata.gz: 3fe6b508f4a7ff32c7487f470f0e1821ca05f5e1ef920e164b551650f4d5616b4c134f75059606587afffce207a4a88a8ce0f2be1a7c03d7548a5f35dbe70005
7
+ data.tar.gz: 74efd603ec9dbe0e08ab4e3b118c06049b4b987450b6f68de014971df7599057b00dba2f61f33023a47928a289fbc88fdee1d2cafcb12800ad1138c39c51dabe
data/CHANGES.md CHANGED
@@ -1,5 +1,7 @@
1
- # 1.8.2
1
+ # 1.8.3
2
2
 
3
+ * Fix `JSON::Collection` and `JSON::Hash` (lonely arrays and hashes), they can now use inline representers. Thanks to @jandudulski for reporting.
4
+ * Added `:render_empty` option to suppress rendering of empty collections. This will default to true in 2.0.
3
5
  * Remove Virtus deprecations.
4
6
  * Add support for Rubinius.
5
7
  * `Definition#default` is public now, please don't use it anyway, it's a private concept.
data/README.md CHANGED
@@ -984,7 +984,7 @@ your `:if` may process the options.
984
984
  property :track, if: lambda { |opts| track > opts[:minimum_track] }
985
985
  ```
986
986
 
987
- ### False and Nil Values
987
+ ### False And Nil Values
988
988
 
989
989
  Since representable-1.2 `false` values _are_ considered when parsing and rendering. That particularly means properties that used to be unset (i.e. `nil`) after parsing might be `false` now. Vice versa, `false` properties that weren't included in the rendered document will be visible now.
990
990
 
@@ -994,6 +994,16 @@ If you want `nil` values to be included when rendering, use the `:render_nil` op
994
994
  property :track, render_nil: true
995
995
  ```
996
996
 
997
+ ### Empty Collections
998
+
999
+ Per default, empty collections are rendered (unless they're `nil`). You can suppress rendering.
1000
+
1001
+ ```ruby
1002
+ collection :songs, render_empty: false
1003
+ ```
1004
+
1005
+ This will be the default behaviour in 2.0.
1006
+
997
1007
 
998
1008
  ### Overriding Serialize And Deserialize
999
1009
 
@@ -109,11 +109,11 @@ private
109
109
  property(name, options, &block)
110
110
  end
111
111
 
112
- def hash(name=nil, options={})
112
+ def hash(name=nil, options={}, &block)
113
113
  return super() unless name # allow Object.hash.
114
114
 
115
115
  options[:hash] = true
116
- property(name, options)
116
+ property(name, options, &block)
117
117
  end
118
118
 
119
119
  private
@@ -52,7 +52,7 @@ module Representable
52
52
  end
53
53
 
54
54
  def write_fragment_for(value, doc)
55
- return if skipable_nil_value?(value)
55
+ return if skipable_empty_value?(value)
56
56
  write(doc, value)
57
57
  end
58
58
 
@@ -67,9 +67,11 @@ module Representable
67
67
  self[:extend]
68
68
  end
69
69
 
70
- def skipable_nil_value?(value)
70
+ def skipable_empty_value?(value)
71
+ return true if array? and self[:render_empty] == false and value and value.size == 0 # TODO: change in 2.0, don't render emtpy.
71
72
  value.nil? and not self[:render_nil]
72
73
  end
74
+ alias_method :skipable_nil_value?, :skipable_empty_value? # TODO: remove in 1.9 .
73
75
 
74
76
  def create_binding(*args)
75
77
  self[:binding].call(self, *args)
@@ -6,13 +6,14 @@ module Representable::Hash
6
6
  base.class_eval do
7
7
  include Representable
8
8
  extend ClassMethods
9
+ extend Representable::Hash::ClassMethods # ::representer_engine.
9
10
  end
10
11
  end
11
12
 
12
13
 
13
14
  module ClassMethods
14
- def items(options)
15
- collection :_self, options.merge(:getter => lambda { |*| self })
15
+ def items(options, &block)
16
+ collection(:_self, options.merge(:getter => lambda { |*| self }), &block)
16
17
  end
17
18
  end
18
19
 
@@ -10,13 +10,14 @@ module Representable::JSON
10
10
  base.class_eval do
11
11
  include Representable
12
12
  extend ClassMethods
13
+ extend Representable::Hash::ClassMethods # ::representer_engine.
13
14
  end
14
15
  end
15
16
 
16
17
 
17
18
  module ClassMethods
18
- def values(options)
19
- hash :_self, options
19
+ def values(options, &block)
20
+ hash(:_self, options, &block)
20
21
  end
21
22
  end
22
23
 
@@ -1,3 +1,3 @@
1
1
  module Representable
2
- VERSION = "1.8.2"
2
+ VERSION = "1.8.3"
3
3
  end
@@ -1,7 +1,6 @@
1
1
  require 'test_helper'
2
2
 
3
- class GenericTest < MiniTest::Spec
4
- # one day, this file will contain all engine-independent test cases. one day...
3
+ class GenericTest < MiniTest::Spec # TODO: rename/restructure to CollectionTest.
5
4
  let (:new_album) { OpenStruct.new.extend(representer) }
6
5
  let (:album) { OpenStruct.new(:songs => ["Fuck Armageddon"]).extend(representer) }
7
6
  let (:song) { OpenStruct.new(:title => "Resist Stance") }
@@ -70,6 +69,28 @@ class GenericTest < MiniTest::Spec
70
69
  end
71
70
  end
72
71
  end
72
+
73
+
74
+ # when collection is [], suppress rendering when render_empty: false.
75
+ for_formats(
76
+ :hash => [Representable::Hash, {}],
77
+ #:xml => [Representable::XML, "<open_struct><songs/></open_struct>"],
78
+ :yaml => [Representable::YAML, "--- {}\n"],
79
+ ) do |format, mod, output, input|
80
+
81
+ describe "render_empty [#{format}]" do
82
+ let (:format) { format }
83
+
84
+ representer!(:module => mod) do
85
+ collection :songs, :render_empty => false
86
+ self.representation_wrap = :album if format == :xml
87
+ end
88
+
89
+ let (:album) { OpenStruct.new(:songs => []).extend(representer) }
90
+
91
+ it { render(album).must_equal_document output }
92
+ end
93
+ end
73
94
  end
74
95
 
75
96
 
@@ -443,129 +443,4 @@ end
443
443
  end
444
444
  end
445
445
  end
446
-
447
-
448
- require 'representable/json/collection'
449
- require 'representable/json/hash'
450
- class LonelyRepresenterTest < MiniTest::Spec
451
- module SongRepresenter
452
- include Representable::JSON
453
- property :name
454
- end
455
-
456
- let (:decorator) { rpr = representer; Class.new(Representable::Decorator) { include rpr } }
457
-
458
- describe "JSON::Collection" do
459
- describe "with contained objects" do
460
- let (:representer) {
461
- Module.new do
462
- include Representable::JSON::Collection
463
- items :class => Song, :extend => SongRepresenter
464
- end
465
- }
466
- let (:songs) { [Song.new("Days Go By"), Song.new("Can't Take Them All")] }
467
- let (:json) { "[{\"name\":\"Days Go By\"},{\"name\":\"Can't Take Them All\"}]" }
468
-
469
- it "renders array" do
470
- assert_json json, songs.extend(representer).to_json
471
- end
472
-
473
- it "renders array with decorator" do
474
- assert_json json, decorator.new(songs).to_json
475
- end
476
-
477
- it "parses array" do
478
- [].extend(representer).from_json(json).must_equal songs
479
- end
480
-
481
- it "parses array with decorator" do
482
- decorator.new([]).from_json(json).must_equal songs
483
- end
484
- end
485
-
486
- describe "with contained text" do
487
- let (:representer) {
488
- Module.new do
489
- include Representable::JSON::Collection
490
- end
491
- }
492
- let (:songs) { ["Days Go By", "Can't Take Them All"] }
493
- let (:json) { "[\"Days Go By\",\"Can't Take Them All\"]" }
494
-
495
- it "renders contained items #to_json" do
496
- assert_json json, songs.extend(representer).to_json
497
- end
498
-
499
- it "returns objects array from #from_json" do
500
- [].extend(representer).from_json(json).must_equal songs
501
- end
502
- end
503
- end
504
-
505
-
506
- describe "JSON::Hash" do # TODO: move to HashTest.
507
- describe "with contained objects" do
508
- let (:representer) {
509
- Module.new do
510
- include Representable::JSON::Hash
511
- values :class => Song, :extend => SongRepresenter
512
- end
513
- }
514
- let (:json) { "{\"one\":{\"name\":\"Days Go By\"},\"two\":{\"name\":\"Can't Take Them All\"}}" }
515
- let (:songs) { {"one" => Song.new("Days Go By"), "two" => Song.new("Can't Take Them All")} }
516
-
517
- describe "#to_json" do
518
- it "renders hash" do
519
- songs.extend(representer).to_json.must_equal json
520
- end
521
-
522
- it "renders hash with decorator" do
523
- decorator.new(songs).to_json.must_equal json
524
- end
525
-
526
- it "respects :exclude" do
527
- assert_json "{\"two\":{\"name\":\"Can't Take Them All\"}}", {:one => Song.new("Days Go By"), :two => Song.new("Can't Take Them All")}.extend(representer).to_json(:exclude => [:one])
528
- end
529
-
530
- it "respects :include" do
531
- assert_json "{\"two\":{\"name\":\"Can't Take Them All\"}}", {:one => Song.new("Days Go By"), :two => Song.new("Can't Take Them All")}.extend(representer).to_json(:include => [:two])
532
- end
533
- end
534
-
535
- describe "#from_json" do
536
- it "returns objects array" do
537
- {}.extend(representer).from_json(json).must_equal songs
538
- end
539
-
540
- it "parses hash with decorator" do
541
- decorator.new({}).from_json(json).must_equal songs
542
- end
543
-
544
- it "respects :exclude" do
545
- assert_equal({"two" => Song.new("Can't Take Them All")}, {}.extend(representer).from_json(json, :exclude => [:one]))
546
- end
547
-
548
- it "respects :include" do
549
- assert_equal({"one" => Song.new("Days Go By")}, {}.extend(representer).from_json(json, :include => [:one]))
550
- end
551
- end
552
- end
553
-
554
- describe "with contained text" do
555
- before do
556
- @songs_representer = Module.new do
557
- include Representable::JSON::Collection
558
- end
559
- end
560
-
561
- it "renders contained items #to_json" do
562
- assert_json "[\"Days Go By\",\"Can't Take Them All\"]", ["Days Go By", "Can't Take Them All"].extend(@songs_representer).to_json
563
- end
564
-
565
- it "returns objects array from #from_json" do
566
- assert_equal ["Days Go By", "Can't Take Them All"], [].extend(@songs_representer).from_json("[\"Days Go By\",\"Can't Take Them All\"]")
567
- end
568
- end
569
- end
570
- end
571
446
  end
@@ -0,0 +1,152 @@
1
+ require 'test_helper'
2
+
3
+ require 'representable/json/collection'
4
+ require 'representable/json/hash'
5
+
6
+ class LonelyRepresenterTest < MiniTest::Spec
7
+ module SongRepresenter
8
+ include Representable::JSON
9
+ property :name
10
+ end
11
+
12
+ let (:decorator) { rpr = representer; Class.new(Representable::Decorator) { include rpr } }
13
+
14
+ describe "JSON::Collection" do
15
+ let (:songs) { [Song.new("Days Go By"), Song.new("Can't Take Them All")] }
16
+ let (:json) { "[{\"name\":\"Days Go By\"},{\"name\":\"Can't Take Them All\"}]" }
17
+
18
+ describe "with contained objects" do
19
+ let (:representer) {
20
+ Module.new do
21
+ include Representable::JSON::Collection
22
+ items :class => Song, :extend => SongRepresenter
23
+ end
24
+ }
25
+
26
+
27
+ it "renders array" do
28
+ assert_json json, songs.extend(representer).to_json
29
+ end
30
+
31
+ it "renders array with decorator" do
32
+ assert_json json, decorator.new(songs).to_json
33
+ end
34
+
35
+ it "parses array" do
36
+ [].extend(representer).from_json(json).must_equal songs
37
+ end
38
+
39
+ it "parses array with decorator" do
40
+ decorator.new([]).from_json(json).must_equal songs
41
+ end
42
+ end
43
+
44
+ describe "with inline representer" do
45
+ representer!(:module => Representable::JSON::Collection) do
46
+ items :class => Song do
47
+ property :name
48
+ end
49
+ end
50
+
51
+ it { songs.extend(representer).to_json.must_equal json }
52
+ it { [].extend(representer).from_json(json).must_equal songs }
53
+ end
54
+
55
+ describe "with contained text" do
56
+ let (:representer) {
57
+ Module.new do
58
+ include Representable::JSON::Collection
59
+ end
60
+ }
61
+ let (:songs) { ["Days Go By", "Can't Take Them All"] }
62
+ let (:json) { "[\"Days Go By\",\"Can't Take Them All\"]" }
63
+
64
+ it "renders contained items #to_json" do
65
+ assert_json json, songs.extend(representer).to_json
66
+ end
67
+
68
+ it "returns objects array from #from_json" do
69
+ [].extend(representer).from_json(json).must_equal songs
70
+ end
71
+ end
72
+ end
73
+
74
+
75
+ describe "JSON::Hash" do # TODO: move to HashTest.
76
+ describe "with contained objects" do
77
+ let (:representer) {
78
+ Module.new do
79
+ include Representable::JSON::Hash
80
+ values :class => Song, :extend => SongRepresenter
81
+ end
82
+ }
83
+ let (:json) { "{\"one\":{\"name\":\"Days Go By\"},\"two\":{\"name\":\"Can't Take Them All\"}}" }
84
+ let (:songs) { {"one" => Song.new("Days Go By"), "two" => Song.new("Can't Take Them All")} }
85
+
86
+ describe "#to_json" do
87
+ it "renders hash" do
88
+ songs.extend(representer).to_json.must_equal json
89
+ end
90
+
91
+ it "renders hash with decorator" do
92
+ decorator.new(songs).to_json.must_equal json
93
+ end
94
+
95
+ it "respects :exclude" do
96
+ assert_json "{\"two\":{\"name\":\"Can't Take Them All\"}}", {:one => Song.new("Days Go By"), :two => Song.new("Can't Take Them All")}.extend(representer).to_json(:exclude => [:one])
97
+ end
98
+
99
+ it "respects :include" do
100
+ assert_json "{\"two\":{\"name\":\"Can't Take Them All\"}}", {:one => Song.new("Days Go By"), :two => Song.new("Can't Take Them All")}.extend(representer).to_json(:include => [:two])
101
+ end
102
+ end
103
+
104
+ describe "#from_json" do
105
+ it "returns objects array" do
106
+ {}.extend(representer).from_json(json).must_equal songs
107
+ end
108
+
109
+ it "parses hash with decorator" do
110
+ decorator.new({}).from_json(json).must_equal songs
111
+ end
112
+
113
+ it "respects :exclude" do
114
+ assert_equal({"two" => Song.new("Can't Take Them All")}, {}.extend(representer).from_json(json, :exclude => [:one]))
115
+ end
116
+
117
+ it "respects :include" do
118
+ assert_equal({"one" => Song.new("Days Go By")}, {}.extend(representer).from_json(json, :include => [:one]))
119
+ end
120
+ end
121
+
122
+
123
+ describe "with inline representer" do
124
+ representer!(:module => Representable::JSON::Hash) do
125
+ values :class => Song do
126
+ property :name
127
+ end
128
+ end
129
+
130
+ it { songs.extend(representer).to_json.must_equal json }
131
+ it { {}.extend(representer).from_json(json).must_equal songs }
132
+ end
133
+ end
134
+
135
+
136
+ describe "with contained text" do
137
+ before do
138
+ @songs_representer = Module.new do
139
+ include Representable::JSON::Collection
140
+ end
141
+ end
142
+
143
+ it "renders contained items #to_json" do
144
+ assert_json "[\"Days Go By\",\"Can't Take Them All\"]", ["Days Go By", "Can't Take Them All"].extend(@songs_representer).to_json
145
+ end
146
+
147
+ it "returns objects array from #from_json" do
148
+ assert_equal ["Days Go By", "Can't Take Them All"], [].extend(@songs_representer).from_json("[\"Days Go By\",\"Can't Take Them All\"]")
149
+ end
150
+ end
151
+ end
152
+ end
metadata CHANGED
@@ -1,153 +1,153 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: representable
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.8.2
4
+ version: 1.8.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nick Sutterer
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-05-16 00:00:00.000000000 Z
11
+ date: 2014-05-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - ">="
17
+ - - '>='
18
18
  - !ruby/object:Gem::Version
19
19
  version: '0'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
- - - ">="
24
+ - - '>='
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: multi_json
29
29
  requirement: !ruby/object:Gem::Requirement
30
30
  requirements:
31
- - - ">="
31
+ - - '>='
32
32
  - !ruby/object:Gem::Version
33
33
  version: '0'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - ">="
38
+ - - '>='
39
39
  - !ruby/object:Gem::Version
40
40
  version: '0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: uber
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - ">="
45
+ - - '>='
46
46
  - !ruby/object:Gem::Version
47
47
  version: '0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
- - - ">="
52
+ - - '>='
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: rake
57
57
  requirement: !ruby/object:Gem::Requirement
58
58
  requirements:
59
- - - ">="
59
+ - - '>='
60
60
  - !ruby/object:Gem::Version
61
61
  version: '0'
62
62
  type: :development
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
- - - ">="
66
+ - - '>='
67
67
  - !ruby/object:Gem::Version
68
68
  version: '0'
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: test_xml
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
- - - ">="
73
+ - - '>='
74
74
  - !ruby/object:Gem::Version
75
75
  version: 0.1.6
76
76
  type: :development
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
- - - ">="
80
+ - - '>='
81
81
  - !ruby/object:Gem::Version
82
82
  version: 0.1.6
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: minitest
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
- - - "~>"
87
+ - - ~>
88
88
  - !ruby/object:Gem::Version
89
89
  version: 5.0.0
90
90
  type: :development
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
- - - "~>"
94
+ - - ~>
95
95
  - !ruby/object:Gem::Version
96
96
  version: 5.0.0
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: mocha
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
- - - ">="
101
+ - - '>='
102
102
  - !ruby/object:Gem::Version
103
103
  version: 0.13.0
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
- - - ">="
108
+ - - '>='
109
109
  - !ruby/object:Gem::Version
110
110
  version: 0.13.0
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: mongoid
113
113
  requirement: !ruby/object:Gem::Requirement
114
114
  requirements:
115
- - - ">="
115
+ - - '>='
116
116
  - !ruby/object:Gem::Version
117
117
  version: '0'
118
118
  type: :development
119
119
  prerelease: false
120
120
  version_requirements: !ruby/object:Gem::Requirement
121
121
  requirements:
122
- - - ">="
122
+ - - '>='
123
123
  - !ruby/object:Gem::Version
124
124
  version: '0'
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: virtus
127
127
  requirement: !ruby/object:Gem::Requirement
128
128
  requirements:
129
- - - "~>"
129
+ - - ~>
130
130
  - !ruby/object:Gem::Version
131
131
  version: 0.5.0
132
132
  type: :development
133
133
  prerelease: false
134
134
  version_requirements: !ruby/object:Gem::Requirement
135
135
  requirements:
136
- - - "~>"
136
+ - - ~>
137
137
  - !ruby/object:Gem::Version
138
138
  version: 0.5.0
139
139
  - !ruby/object:Gem::Dependency
140
140
  name: json
141
141
  requirement: !ruby/object:Gem::Requirement
142
142
  requirements:
143
- - - "~>"
143
+ - - ~>
144
144
  - !ruby/object:Gem::Version
145
145
  version: 1.7.7
146
146
  type: :development
147
147
  prerelease: false
148
148
  version_requirements: !ruby/object:Gem::Requirement
149
149
  requirements:
150
- - - "~>"
150
+ - - ~>
151
151
  - !ruby/object:Gem::Version
152
152
  version: 1.7.7
153
153
  description: Renders and parses JSON/XML/YAML documents from and to Ruby objects.
@@ -158,8 +158,8 @@ executables: []
158
158
  extensions: []
159
159
  extra_rdoc_files: []
160
160
  files:
161
- - ".gitignore"
162
- - ".travis.yml"
161
+ - .gitignore
162
+ - .travis.yml
163
163
  - CHANGES.md
164
164
  - Gemfile
165
165
  - LICENSE
@@ -215,6 +215,7 @@ files:
215
215
  - test/instance_test.rb
216
216
  - test/is_representable_test.rb
217
217
  - test/json_test.rb
218
+ - test/lonely_test.rb
218
219
  - test/mongoid_test.rb
219
220
  - test/nested_test.rb
220
221
  - test/parse_strategy_test.rb
@@ -239,55 +240,19 @@ require_paths:
239
240
  - lib
240
241
  required_ruby_version: !ruby/object:Gem::Requirement
241
242
  requirements:
242
- - - ">="
243
+ - - '>='
243
244
  - !ruby/object:Gem::Version
244
245
  version: '0'
245
246
  required_rubygems_version: !ruby/object:Gem::Requirement
246
247
  requirements:
247
- - - ">="
248
+ - - '>='
248
249
  - !ruby/object:Gem::Version
249
250
  version: '0'
250
251
  requirements: []
251
252
  rubyforge_project:
252
- rubygems_version: 2.2.1
253
+ rubygems_version: 2.2.2
253
254
  signing_key:
254
255
  specification_version: 4
255
256
  summary: Renders and parses JSON/XML/YAML documents from and to Ruby objects. Includes
256
257
  plain properties, collections, nesting, coercion and more.
257
- test_files:
258
- - test/as_test.rb
259
- - test/class_test.rb
260
- - test/coercion_test.rb
261
- - test/config_test.rb
262
- - test/decorator_scope_test.rb
263
- - test/decorator_test.rb
264
- - test/definition_test.rb
265
- - test/example.rb
266
- - test/exec_context_test.rb
267
- - test/generic_test.rb
268
- - test/getter_setter_test.rb
269
- - test/hash_bindings_test.rb
270
- - test/hash_test.rb
271
- - test/if_test.rb
272
- - test/inherit_test.rb
273
- - test/inheritance_test.rb
274
- - test/inline_test.rb
275
- - test/instance_test.rb
276
- - test/is_representable_test.rb
277
- - test/json_test.rb
278
- - test/mongoid_test.rb
279
- - test/nested_test.rb
280
- - test/parse_strategy_test.rb
281
- - test/pass_options_test.rb
282
- - test/prepare_test.rb
283
- - test/reader_writer_test.rb
284
- - test/representable_test.rb
285
- - test/serialize_deserialize_test.rb
286
- - test/stringify_hash_test.rb
287
- - test/test_helper.rb
288
- - test/test_helper_test.rb
289
- - test/wrap_test.rb
290
- - test/xml_bindings_test.rb
291
- - test/xml_test.rb
292
- - test/yaml_test.rb
293
- has_rdoc:
258
+ test_files: []