representable 0.10.2 → 0.10.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.
- data/CHANGES.textile +6 -1
- data/README.rdoc +1 -1
- data/lib/representable.rb +13 -4
- data/lib/representable/bindings/json_bindings.rb +1 -10
- data/lib/representable/bindings/xml_bindings.rb +1 -9
- data/lib/representable/definition.rb +3 -1
- data/lib/representable/json.rb +5 -5
- data/lib/representable/version.rb +1 -1
- data/lib/representable/xml.rb +4 -4
- data/test/bindings_test.rb +0 -11
- data/test/definition_test.rb +16 -0
- data/test/json_test.rb +51 -5
- data/test/representable_test.rb +12 -0
- data/test/xml_test.rb +5 -3
- metadata +101 -72
data/CHANGES.textile
CHANGED
@@ -1,6 +1,11 @@
|
|
1
|
+
h2. 0.10.3
|
2
|
+
|
3
|
+
* Added @representable_property :default => ...@ option which is considered for both serialization and deserialization. The default is applied when the value is @nil@. Note that an empty string ain't @nil@.
|
4
|
+
* @representable_attrs@ are now pushed to instance level as soon as possible.
|
5
|
+
|
1
6
|
h2. 0.10.2
|
2
7
|
|
3
|
-
* Added
|
8
|
+
* Added @representable_property :accessors => false@ option to suppress adding accessors.
|
4
9
|
* @Representable.representation_wrap@ is no longer inherited.
|
5
10
|
* Representers can now be defined in modules. They inherit to including modules.
|
6
11
|
|
data/README.rdoc
CHANGED
@@ -37,7 +37,7 @@ Since you keep forgetting the heroes of your childhood you decide to implement a
|
|
37
37
|
|
38
38
|
This declares two simple properties. Representable will automatically add accessors to the class.
|
39
39
|
|
40
|
-
|
40
|
+
Alternatively, if you don't want declarations in your models, use a module.
|
41
41
|
|
42
42
|
module HeroRepresentation
|
43
43
|
include Representable
|
data/lib/representable.rb
CHANGED
@@ -14,10 +14,10 @@ module Representable
|
|
14
14
|
|
15
15
|
# Reads values from +doc+ and sets properties accordingly.
|
16
16
|
def update_properties_from(doc, &block)
|
17
|
-
|
17
|
+
representable_bindings.each do |bin|
|
18
18
|
next if eval_property_block(bin, &block) # skip if block is false.
|
19
19
|
|
20
|
-
value = bin.read(doc)
|
20
|
+
value = bin.read(doc) || bin.definition.default
|
21
21
|
send(bin.definition.setter, value)
|
22
22
|
end
|
23
23
|
self
|
@@ -26,10 +26,10 @@ module Representable
|
|
26
26
|
private
|
27
27
|
# Compiles the document going through all properties.
|
28
28
|
def create_representation_with(doc, &block)
|
29
|
-
|
29
|
+
representable_bindings.each do |bin|
|
30
30
|
next if eval_property_block(bin, &block) # skip if block is false.
|
31
31
|
|
32
|
-
value = send(bin.definition.getter) # DISCUSS: eventually move back to Ref.
|
32
|
+
value = send(bin.definition.getter) || bin.definition.default # DISCUSS: eventually move back to Ref.
|
33
33
|
bin.write(doc, value) if value
|
34
34
|
end
|
35
35
|
doc
|
@@ -42,6 +42,14 @@ private
|
|
42
42
|
block_given? and not yield binding.definition.name.to_sym
|
43
43
|
end
|
44
44
|
|
45
|
+
def representable_attrs
|
46
|
+
@representable_attrs ||= self.class.representable_attrs # DISCUSS: copy, or better not?
|
47
|
+
end
|
48
|
+
|
49
|
+
def representable_bindings
|
50
|
+
representable_attrs.map {|attr| binding_for_definition(attr) }
|
51
|
+
end
|
52
|
+
|
45
53
|
|
46
54
|
module ClassMethods # :nodoc:
|
47
55
|
module Declarations
|
@@ -62,6 +70,7 @@ private
|
|
62
70
|
# representable_property :name, :from => :title
|
63
71
|
# representable_property :name, :as => Name
|
64
72
|
# representable_property :name, :accessors => false
|
73
|
+
# representable_property :name, :default => "Mike"
|
65
74
|
def representable_property(name, options={})
|
66
75
|
attr = add_representable_property(name, options)
|
67
76
|
|
@@ -8,14 +8,10 @@ module Representable
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def read(hash)
|
11
|
-
value_from_hash(hash)
|
11
|
+
value_from_hash(hash)
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
|
-
def default
|
16
|
-
""
|
17
|
-
end
|
18
|
-
|
19
15
|
def collect_for(hash)
|
20
16
|
nodes = hash[definition.from] or return
|
21
17
|
nodes = [nodes] unless nodes.is_a?(Array)
|
@@ -51,16 +47,11 @@ module Representable
|
|
51
47
|
end
|
52
48
|
|
53
49
|
private
|
54
|
-
def default
|
55
|
-
[]
|
56
|
-
end
|
57
|
-
|
58
50
|
def value_from_hash(hash)
|
59
51
|
collect_for(hash) do |node|
|
60
52
|
definition.sought_type.from_hash(node) # call #from_hash as it's already deserialized.
|
61
53
|
end
|
62
54
|
end
|
63
|
-
|
64
55
|
end
|
65
56
|
end
|
66
57
|
end
|
@@ -8,14 +8,10 @@ module Representable
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def read(xml)
|
11
|
-
value_from_node(xml)
|
11
|
+
value_from_node(xml)
|
12
12
|
end
|
13
13
|
|
14
14
|
private
|
15
|
-
def default
|
16
|
-
""
|
17
|
-
end
|
18
|
-
|
19
15
|
def xpath
|
20
16
|
definition.from
|
21
17
|
end
|
@@ -80,10 +76,6 @@ module Representable
|
|
80
76
|
end
|
81
77
|
|
82
78
|
private
|
83
|
-
def default
|
84
|
-
[]
|
85
|
-
end
|
86
|
-
|
87
79
|
# Deserializes the ref's element from +xml+.
|
88
80
|
def value_from_node(xml)
|
89
81
|
collect_for(xml) do |node|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Representable
|
2
2
|
# Created at class compile time. Keeps configuration options for one property.
|
3
3
|
class Definition
|
4
|
-
attr_reader :name, :sought_type, :from
|
4
|
+
attr_reader :name, :sought_type, :from, :default
|
5
5
|
alias_method :getter, :name
|
6
6
|
|
7
7
|
def initialize(sym, options={})
|
@@ -9,6 +9,8 @@ module Representable
|
|
9
9
|
@array = options[:collection]
|
10
10
|
@from = (options[:from] || name).to_s
|
11
11
|
@sought_type = options[:as] || :text
|
12
|
+
@default = options[:default]
|
13
|
+
@default ||= [] if array?
|
12
14
|
|
13
15
|
# FIXME: move me to xml.
|
14
16
|
if options[:from].to_s =~ /^@/
|
data/lib/representable/json.rb
CHANGED
@@ -14,17 +14,13 @@ module Representable
|
|
14
14
|
|
15
15
|
def self.included(base)
|
16
16
|
base.class_eval do
|
17
|
-
include Representable
|
17
|
+
include Representable # either in Hero or HeroRepresentation.
|
18
18
|
extend ClassMethods
|
19
19
|
end
|
20
20
|
end
|
21
21
|
|
22
22
|
|
23
23
|
module ClassMethods
|
24
|
-
def binding_for_definition(definition)
|
25
|
-
(BINDING_FOR_TYPE[definition.sought_type] or ObjectBinding).new(definition)
|
26
|
-
end
|
27
|
-
|
28
24
|
# Creates a new object from the passed JSON document.
|
29
25
|
def from_json(*args, &block)
|
30
26
|
new.from_json(*args, &block)
|
@@ -61,5 +57,9 @@ module Representable
|
|
61
57
|
def to_json(*args, &block)
|
62
58
|
to_hash(*args, &block).to_json
|
63
59
|
end
|
60
|
+
|
61
|
+
def binding_for_definition(definition)
|
62
|
+
(BINDING_FOR_TYPE[definition.sought_type] or ObjectBinding).new(definition)
|
63
|
+
end
|
64
64
|
end
|
65
65
|
end
|
data/lib/representable/xml.rb
CHANGED
@@ -19,10 +19,6 @@ module Representable
|
|
19
19
|
|
20
20
|
|
21
21
|
module ClassMethods
|
22
|
-
def binding_for_definition(definition)
|
23
|
-
(BINDING_FOR_TYPE[definition.sought_type] or ObjectBinding).new(definition)
|
24
|
-
end
|
25
|
-
|
26
22
|
# Creates a new Ruby object from XML using mapping information declared in the class.
|
27
23
|
#
|
28
24
|
# Accepts a block yielding the currently iterated Definition. If the block returns false
|
@@ -59,5 +55,9 @@ module Representable
|
|
59
55
|
def to_xml(*args, &block)
|
60
56
|
to_node(*args, &block).to_s
|
61
57
|
end
|
58
|
+
|
59
|
+
def binding_for_definition(definition)
|
60
|
+
(BINDING_FOR_TYPE[definition.sought_type] or ObjectBinding).new(definition)
|
61
|
+
end
|
62
62
|
end
|
63
63
|
end
|
data/test/bindings_test.rb
CHANGED
@@ -1,17 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class BindingsTest < MiniTest::Spec
|
4
|
-
describe "ObjectRef with []" do
|
5
|
-
before do
|
6
|
-
@ref = Representable::XML::ObjectBinding.new(Representable::Definition.new(:songs, :as => [Hash]))
|
7
|
-
end
|
8
|
-
|
9
|
-
it "responds to #default" do
|
10
|
-
assert_equal [], @ref.send(:default)
|
11
|
-
end
|
12
|
-
end
|
13
|
-
|
14
|
-
|
15
4
|
describe "TextRef#read" do
|
16
5
|
def parse_xml(xml); Nokogiri::XML(xml).root; end
|
17
6
|
|
data/test/definition_test.rb
CHANGED
@@ -62,6 +62,10 @@ class DefinitionTest < MiniTest::Spec
|
|
62
62
|
it "responds to #sought_type" do
|
63
63
|
assert_equal :text, @def.sought_type
|
64
64
|
end
|
65
|
+
|
66
|
+
it "responds to #default" do
|
67
|
+
assert_equal [], @def.default
|
68
|
+
end
|
65
69
|
end
|
66
70
|
|
67
71
|
describe ":as => Item" do
|
@@ -73,4 +77,16 @@ class DefinitionTest < MiniTest::Spec
|
|
73
77
|
assert_equal Hash, @def.sought_type
|
74
78
|
end
|
75
79
|
end
|
80
|
+
|
81
|
+
describe ":default => value" do
|
82
|
+
it "responds to #default" do
|
83
|
+
@def = Representable::Definition.new(:song)
|
84
|
+
assert_equal nil, @def.default
|
85
|
+
end
|
86
|
+
|
87
|
+
it "accepts a default value" do
|
88
|
+
@def = Representable::Definition.new(:song, :default => "Atheist Peace")
|
89
|
+
assert_equal "Atheist Peace", @def.default
|
90
|
+
end
|
91
|
+
end
|
76
92
|
end
|
data/test/json_test.rb
CHANGED
@@ -17,6 +17,8 @@ module JsonTest
|
|
17
17
|
self.name = name if name
|
18
18
|
end
|
19
19
|
end
|
20
|
+
|
21
|
+
@band = @Band.new
|
20
22
|
end
|
21
23
|
|
22
24
|
|
@@ -136,18 +138,18 @@ module JsonTest
|
|
136
138
|
|
137
139
|
describe "#binding_for_definition" do
|
138
140
|
it "returns ObjectBinding" do
|
139
|
-
assert_kind_of Json::ObjectBinding, @
|
141
|
+
assert_kind_of Json::ObjectBinding, @band.binding_for_definition(Def.new(:band, :as => Hash))
|
140
142
|
end
|
141
143
|
|
142
144
|
it "returns TextBinding" do
|
143
|
-
assert_kind_of Json::TextBinding, @
|
145
|
+
assert_kind_of Json::TextBinding, @band.binding_for_definition(Def.new(:band))
|
144
146
|
end
|
145
147
|
end
|
146
148
|
|
147
149
|
describe "#representable_bindings" do
|
148
150
|
it "returns bindings for each property" do
|
149
|
-
assert_equal 2, @
|
150
|
-
assert_equal "name", @
|
151
|
+
assert_equal 2, @band.send(:representable_bindings).size
|
152
|
+
assert_equal "name", @band.send(:representable_bindings).first.definition.name
|
151
153
|
end
|
152
154
|
end
|
153
155
|
end
|
@@ -229,7 +231,51 @@ module JsonTest
|
|
229
231
|
assert_equal '{"songName":"Run To The Hills"}', song.to_json
|
230
232
|
end
|
231
233
|
end
|
234
|
+
|
235
|
+
describe ":default => :value" do
|
236
|
+
before do
|
237
|
+
@Album = Class.new do
|
238
|
+
include Representable::JSON
|
239
|
+
representable_property :name, :default => "30 Years Live"
|
240
|
+
end
|
241
|
+
end
|
242
|
+
|
243
|
+
describe "#from_json" do
|
244
|
+
it "uses default when property nil in doc" do
|
245
|
+
album = @Album.from_json({}.to_json)
|
246
|
+
assert_equal "30 Years Live", album.name
|
247
|
+
end
|
248
|
+
|
249
|
+
it "uses value from doc when present" do
|
250
|
+
album = @Album.from_json({:name => "Live At The Wireless"}.to_json)
|
251
|
+
assert_equal "Live At The Wireless", album.name
|
252
|
+
end
|
253
|
+
|
254
|
+
it "uses value from doc when empty string" do
|
255
|
+
album = @Album.from_json({:name => ""}.to_json)
|
256
|
+
assert_equal "", album.name
|
257
|
+
end
|
258
|
+
end
|
259
|
+
|
260
|
+
describe "#to_json" do
|
261
|
+
it "uses default when not available in object" do
|
262
|
+
assert_equal "{\"name\":\"30 Years Live\"}", @Album.new.to_json
|
263
|
+
end
|
264
|
+
|
265
|
+
it "uses value from represented object when present" do
|
266
|
+
album = @Album.new
|
267
|
+
album.name = "Live At The Wireless"
|
268
|
+
assert_equal "{\"name\":\"Live At The Wireless\"}", album.to_json
|
269
|
+
end
|
270
|
+
|
271
|
+
it "uses value from represented object when emtpy string" do
|
272
|
+
album = @Album.new
|
273
|
+
album.name = ""
|
274
|
+
assert_equal "{\"name\":\"\"}", album.to_json
|
275
|
+
end
|
276
|
+
end
|
232
277
|
end
|
278
|
+
end
|
233
279
|
|
234
280
|
|
235
281
|
class CollectionTest < MiniTest::Spec
|
@@ -275,7 +321,7 @@ module JsonTest
|
|
275
321
|
assert_equal ["Cobra Skulls", "Diesel Boy"], cd.bands.map(&:name).sort
|
276
322
|
end
|
277
323
|
|
278
|
-
it "
|
324
|
+
it "creates emtpy array per default" do
|
279
325
|
cd = Compilation.from_json({:compilation => {}}.to_json)
|
280
326
|
assert_equal [], cd.bands
|
281
327
|
end
|
data/test/representable_test.rb
CHANGED
@@ -64,6 +64,18 @@ class RepresentableTest < MiniTest::Spec
|
|
64
64
|
assert_equal "{\"name\":\"Vention Dention\",\"street_cred\":1}", vd.to_json
|
65
65
|
end
|
66
66
|
|
67
|
+
#it "allows including the concrete representer module only" do
|
68
|
+
# require 'representable/json'
|
69
|
+
# module RockBandRepresentation
|
70
|
+
# include Representable::JSON
|
71
|
+
# representable_property :name
|
72
|
+
# end
|
73
|
+
# vd = class VH
|
74
|
+
# include RockBandRepresentation
|
75
|
+
# end.new
|
76
|
+
# vd.name = "Van Halen"
|
77
|
+
# assert_equal "{\"name\":\"Van Halen\"}", vd.to_json
|
78
|
+
#end
|
67
79
|
end
|
68
80
|
end
|
69
81
|
|
data/test/xml_test.rb
CHANGED
@@ -32,6 +32,8 @@ class XmlTest < MiniTest::Spec
|
|
32
32
|
representable_property :name
|
33
33
|
representable_property :label
|
34
34
|
end
|
35
|
+
|
36
|
+
@band = @Band.new
|
35
37
|
end
|
36
38
|
|
37
39
|
|
@@ -138,15 +140,15 @@ class XmlTest < MiniTest::Spec
|
|
138
140
|
|
139
141
|
describe "#binding_for_definition" do
|
140
142
|
it "returns AttributeBinding" do
|
141
|
-
assert_kind_of XML::AttributeBinding, @
|
143
|
+
assert_kind_of XML::AttributeBinding, @band.binding_for_definition(Def.new(:band, :from => "@band"))
|
142
144
|
end
|
143
145
|
|
144
146
|
it "returns ObjectBinding" do
|
145
|
-
assert_kind_of XML::ObjectBinding, @
|
147
|
+
assert_kind_of XML::ObjectBinding, @band.binding_for_definition(Def.new(:band, :as => Hash))
|
146
148
|
end
|
147
149
|
|
148
150
|
it "returns TextBinding" do
|
149
|
-
assert_kind_of XML::TextBinding, @
|
151
|
+
assert_kind_of XML::TextBinding, @band.binding_for_definition(Def.new(:band, :from => :content))
|
150
152
|
end
|
151
153
|
end
|
152
154
|
end
|
metadata
CHANGED
@@ -1,90 +1,111 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: representable
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 10
|
8
|
+
- 3
|
9
|
+
version: 0.10.3
|
6
10
|
platform: ruby
|
7
|
-
authors:
|
11
|
+
authors:
|
8
12
|
- Nick Sutterer
|
9
13
|
autorequire:
|
10
14
|
bindir: bin
|
11
15
|
cert_chain: []
|
12
|
-
|
13
|
-
|
14
|
-
|
16
|
+
|
17
|
+
date: 2011-12-07 00:00:00 +01:00
|
18
|
+
default_executable:
|
19
|
+
dependencies:
|
20
|
+
- !ruby/object:Gem::Dependency
|
15
21
|
name: nokogiri
|
16
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
17
24
|
none: false
|
18
|
-
requirements:
|
19
|
-
- -
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
|
25
|
+
requirements:
|
26
|
+
- - ">="
|
27
|
+
- !ruby/object:Gem::Version
|
28
|
+
segments:
|
29
|
+
- 0
|
30
|
+
version: "0"
|
22
31
|
type: :runtime
|
23
|
-
|
24
|
-
|
25
|
-
- !ruby/object:Gem::Dependency
|
32
|
+
version_requirements: *id001
|
33
|
+
- !ruby/object:Gem::Dependency
|
26
34
|
name: json
|
27
|
-
|
35
|
+
prerelease: false
|
36
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
28
37
|
none: false
|
29
|
-
requirements:
|
30
|
-
- -
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
|
38
|
+
requirements:
|
39
|
+
- - ">="
|
40
|
+
- !ruby/object:Gem::Version
|
41
|
+
segments:
|
42
|
+
- 0
|
43
|
+
version: "0"
|
33
44
|
type: :runtime
|
34
|
-
|
35
|
-
|
36
|
-
- !ruby/object:Gem::Dependency
|
45
|
+
version_requirements: *id002
|
46
|
+
- !ruby/object:Gem::Dependency
|
37
47
|
name: rake
|
38
|
-
|
48
|
+
prerelease: false
|
49
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
39
50
|
none: false
|
40
|
-
requirements:
|
41
|
-
- -
|
42
|
-
- !ruby/object:Gem::Version
|
43
|
-
|
51
|
+
requirements:
|
52
|
+
- - ">="
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
segments:
|
55
|
+
- 0
|
56
|
+
version: "0"
|
44
57
|
type: :development
|
45
|
-
|
46
|
-
|
47
|
-
- !ruby/object:Gem::Dependency
|
58
|
+
version_requirements: *id003
|
59
|
+
- !ruby/object:Gem::Dependency
|
48
60
|
name: test_xml
|
49
|
-
|
61
|
+
prerelease: false
|
62
|
+
requirement: &id004 !ruby/object:Gem::Requirement
|
50
63
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
64
|
+
requirements:
|
65
|
+
- - ">="
|
66
|
+
- !ruby/object:Gem::Version
|
67
|
+
segments:
|
68
|
+
- 0
|
69
|
+
version: "0"
|
55
70
|
type: :development
|
56
|
-
|
57
|
-
|
58
|
-
- !ruby/object:Gem::Dependency
|
71
|
+
version_requirements: *id004
|
72
|
+
- !ruby/object:Gem::Dependency
|
59
73
|
name: minitest
|
60
|
-
|
74
|
+
prerelease: false
|
75
|
+
requirement: &id005 !ruby/object:Gem::Requirement
|
61
76
|
none: false
|
62
|
-
requirements:
|
77
|
+
requirements:
|
63
78
|
- - ~>
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
|
79
|
+
- !ruby/object:Gem::Version
|
80
|
+
segments:
|
81
|
+
- 2
|
82
|
+
- 8
|
83
|
+
version: "2.8"
|
66
84
|
type: :development
|
67
|
-
|
68
|
-
|
69
|
-
- !ruby/object:Gem::Dependency
|
85
|
+
version_requirements: *id005
|
86
|
+
- !ruby/object:Gem::Dependency
|
70
87
|
name: mocha
|
71
|
-
|
88
|
+
prerelease: false
|
89
|
+
requirement: &id006 !ruby/object:Gem::Requirement
|
72
90
|
none: false
|
73
|
-
requirements:
|
74
|
-
- -
|
75
|
-
- !ruby/object:Gem::Version
|
76
|
-
|
91
|
+
requirements:
|
92
|
+
- - ">="
|
93
|
+
- !ruby/object:Gem::Version
|
94
|
+
segments:
|
95
|
+
- 0
|
96
|
+
version: "0"
|
77
97
|
type: :development
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
and JSON support, plain properties, collections and compositions.
|
82
|
-
email:
|
98
|
+
version_requirements: *id006
|
99
|
+
description: Maps representation documents from and to Ruby objects. Includes XML and JSON support, plain properties, collections and compositions.
|
100
|
+
email:
|
83
101
|
- apotonick@gmail.com
|
84
102
|
executables: []
|
103
|
+
|
85
104
|
extensions: []
|
105
|
+
|
86
106
|
extra_rdoc_files: []
|
87
|
-
|
107
|
+
|
108
|
+
files:
|
88
109
|
- .gitignore
|
89
110
|
- .gitmodules
|
90
111
|
- .rspec
|
@@ -108,29 +129,37 @@ files:
|
|
108
129
|
- test/representable_test.rb
|
109
130
|
- test/test_helper.rb
|
110
131
|
- test/xml_test.rb
|
132
|
+
has_rdoc: true
|
111
133
|
homepage: http://representable.apotomo.de
|
112
134
|
licenses: []
|
135
|
+
|
113
136
|
post_install_message:
|
114
137
|
rdoc_options: []
|
115
|
-
|
138
|
+
|
139
|
+
require_paths:
|
116
140
|
- lib
|
117
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
141
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
118
142
|
none: false
|
119
|
-
requirements:
|
120
|
-
- -
|
121
|
-
- !ruby/object:Gem::Version
|
122
|
-
|
123
|
-
|
143
|
+
requirements:
|
144
|
+
- - ">="
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
segments:
|
147
|
+
- 0
|
148
|
+
version: "0"
|
149
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
124
150
|
none: false
|
125
|
-
requirements:
|
126
|
-
- -
|
127
|
-
- !ruby/object:Gem::Version
|
128
|
-
|
151
|
+
requirements:
|
152
|
+
- - ">="
|
153
|
+
- !ruby/object:Gem::Version
|
154
|
+
segments:
|
155
|
+
- 0
|
156
|
+
version: "0"
|
129
157
|
requirements: []
|
158
|
+
|
130
159
|
rubyforge_project:
|
131
|
-
rubygems_version: 1.
|
160
|
+
rubygems_version: 1.3.7
|
132
161
|
signing_key:
|
133
162
|
specification_version: 3
|
134
|
-
summary: Maps representation documents from and to Ruby objects. Includes XML and
|
135
|
-
JSON support, plain properties, collections and compositions.
|
163
|
+
summary: Maps representation documents from and to Ruby objects. Includes XML and JSON support, plain properties, collections and compositions.
|
136
164
|
test_files: []
|
165
|
+
|