representable 1.8.2 → 1.8.3

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: 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: []