representable 1.1.2 → 1.1.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 +4 -0
- data/lib/representable.rb +25 -6
- data/lib/representable/bindings/json_bindings.rb +1 -0
- data/lib/representable/version.rb +1 -1
- metadata +80 -112
data/CHANGES.textile
CHANGED
data/lib/representable.rb
CHANGED
@@ -45,24 +45,22 @@ module Representable
|
|
45
45
|
end
|
46
46
|
|
47
47
|
# Reads values from +doc+ and sets properties accordingly.
|
48
|
-
def update_properties_from(doc, options, format
|
48
|
+
def update_properties_from(doc, options, format)
|
49
49
|
representable_bindings_for(format).each do |bin|
|
50
50
|
next if skip_property?(bin, options)
|
51
51
|
|
52
|
-
|
53
|
-
send(bin.definition.setter, value)
|
52
|
+
uncompile_fragment(bin, doc)
|
54
53
|
end
|
55
54
|
self
|
56
55
|
end
|
57
56
|
|
58
57
|
private
|
59
58
|
# Compiles the document going through all properties.
|
60
|
-
def create_representation_with(doc, options, format
|
59
|
+
def create_representation_with(doc, options, format)
|
61
60
|
representable_bindings_for(format).each do |bin|
|
62
61
|
next if skip_property?(bin, options)
|
63
62
|
|
64
|
-
|
65
|
-
bin.write(doc, value) if value
|
63
|
+
compile_fragment(bin, doc)
|
66
64
|
end
|
67
65
|
doc
|
68
66
|
end
|
@@ -74,6 +72,27 @@ private
|
|
74
72
|
options[:include] ? !res : res
|
75
73
|
end
|
76
74
|
|
75
|
+
# Retrieve value and write fragment to the doc.
|
76
|
+
def compile_fragment(bin, doc)
|
77
|
+
value = send(bin.definition.getter) || bin.definition.default # DISCUSS: eventually move back to Ref.
|
78
|
+
write_fragment_for(bin, value, doc)
|
79
|
+
end
|
80
|
+
|
81
|
+
# Parse value from doc and update the model property.
|
82
|
+
def uncompile_fragment(bin, doc)
|
83
|
+
value = read_fragment_for(bin, doc) || bin.definition.default
|
84
|
+
send(bin.definition.setter, value)
|
85
|
+
end
|
86
|
+
|
87
|
+
def write_fragment_for(bin, value, doc) # DISCUSS: move to Binding?
|
88
|
+
return unless value
|
89
|
+
bin.write(doc, value)
|
90
|
+
end
|
91
|
+
|
92
|
+
def read_fragment_for(bin, doc) # DISCUSS: move to Binding?
|
93
|
+
bin.read(doc)
|
94
|
+
end
|
95
|
+
|
77
96
|
def representable_attrs
|
78
97
|
@representable_attrs ||= self.class.representable_attrs # DISCUSS: copy, or better not?
|
79
98
|
end
|
metadata
CHANGED
@@ -1,125 +1,101 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: representable
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 1
|
8
|
-
- 2
|
9
|
-
version: 1.1.2
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.1.3
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Nick Sutterer
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-03-18 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: nokogiri
|
22
|
-
|
23
|
-
requirement: &id001 !ruby/object:Gem::Requirement
|
16
|
+
requirement: &82431430 !ruby/object:Gem::Requirement
|
24
17
|
none: false
|
25
|
-
requirements:
|
26
|
-
- -
|
27
|
-
- !ruby/object:Gem::Version
|
28
|
-
|
29
|
-
- 0
|
30
|
-
version: "0"
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
31
22
|
type: :runtime
|
32
|
-
version_requirements: *id001
|
33
|
-
- !ruby/object:Gem::Dependency
|
34
|
-
name: json
|
35
23
|
prerelease: false
|
36
|
-
|
24
|
+
version_requirements: *82431430
|
25
|
+
- !ruby/object:Gem::Dependency
|
26
|
+
name: json
|
27
|
+
requirement: &82430990 !ruby/object:Gem::Requirement
|
37
28
|
none: false
|
38
|
-
requirements:
|
39
|
-
- -
|
40
|
-
- !ruby/object:Gem::Version
|
41
|
-
|
42
|
-
- 0
|
43
|
-
version: "0"
|
29
|
+
requirements:
|
30
|
+
- - ! '>='
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '0'
|
44
33
|
type: :runtime
|
45
|
-
version_requirements: *id002
|
46
|
-
- !ruby/object:Gem::Dependency
|
47
|
-
name: rake
|
48
34
|
prerelease: false
|
49
|
-
|
35
|
+
version_requirements: *82430990
|
36
|
+
- !ruby/object:Gem::Dependency
|
37
|
+
name: rake
|
38
|
+
requirement: &82430300 !ruby/object:Gem::Requirement
|
50
39
|
none: false
|
51
|
-
requirements:
|
52
|
-
- -
|
53
|
-
- !ruby/object:Gem::Version
|
54
|
-
|
55
|
-
- 0
|
56
|
-
version: "0"
|
40
|
+
requirements:
|
41
|
+
- - ! '>='
|
42
|
+
- !ruby/object:Gem::Version
|
43
|
+
version: '0'
|
57
44
|
type: :development
|
58
|
-
version_requirements: *id003
|
59
|
-
- !ruby/object:Gem::Dependency
|
60
|
-
name: test_xml
|
61
45
|
prerelease: false
|
62
|
-
|
46
|
+
version_requirements: *82430300
|
47
|
+
- !ruby/object:Gem::Dependency
|
48
|
+
name: test_xml
|
49
|
+
requirement: &82429660 !ruby/object:Gem::Requirement
|
63
50
|
none: false
|
64
|
-
requirements:
|
65
|
-
- -
|
66
|
-
- !ruby/object:Gem::Version
|
67
|
-
|
68
|
-
- 0
|
69
|
-
version: "0"
|
51
|
+
requirements:
|
52
|
+
- - ! '>='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '0'
|
70
55
|
type: :development
|
71
|
-
version_requirements: *id004
|
72
|
-
- !ruby/object:Gem::Dependency
|
73
|
-
name: minitest
|
74
56
|
prerelease: false
|
75
|
-
|
57
|
+
version_requirements: *82429660
|
58
|
+
- !ruby/object:Gem::Dependency
|
59
|
+
name: minitest
|
60
|
+
requirement: &82426770 !ruby/object:Gem::Requirement
|
76
61
|
none: false
|
77
|
-
requirements:
|
78
|
-
- -
|
79
|
-
- !ruby/object:Gem::Version
|
80
|
-
segments:
|
81
|
-
- 2
|
82
|
-
- 8
|
83
|
-
- 1
|
62
|
+
requirements:
|
63
|
+
- - ! '>='
|
64
|
+
- !ruby/object:Gem::Version
|
84
65
|
version: 2.8.1
|
85
66
|
type: :development
|
86
|
-
version_requirements: *id005
|
87
|
-
- !ruby/object:Gem::Dependency
|
88
|
-
name: mocha
|
89
67
|
prerelease: false
|
90
|
-
|
68
|
+
version_requirements: *82426770
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: mocha
|
71
|
+
requirement: &82426410 !ruby/object:Gem::Requirement
|
91
72
|
none: false
|
92
|
-
requirements:
|
93
|
-
- -
|
94
|
-
- !ruby/object:Gem::Version
|
95
|
-
|
96
|
-
- 0
|
97
|
-
version: "0"
|
73
|
+
requirements:
|
74
|
+
- - ! '>='
|
75
|
+
- !ruby/object:Gem::Version
|
76
|
+
version: '0'
|
98
77
|
type: :development
|
99
|
-
version_requirements: *id006
|
100
|
-
- !ruby/object:Gem::Dependency
|
101
|
-
name: mongoid
|
102
78
|
prerelease: false
|
103
|
-
|
79
|
+
version_requirements: *82426410
|
80
|
+
- !ruby/object:Gem::Dependency
|
81
|
+
name: mongoid
|
82
|
+
requirement: &82425780 !ruby/object:Gem::Requirement
|
104
83
|
none: false
|
105
|
-
requirements:
|
106
|
-
- -
|
107
|
-
- !ruby/object:Gem::Version
|
108
|
-
|
109
|
-
- 0
|
110
|
-
version: "0"
|
84
|
+
requirements:
|
85
|
+
- - ! '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
111
88
|
type: :development
|
112
|
-
|
113
|
-
|
114
|
-
|
89
|
+
prerelease: false
|
90
|
+
version_requirements: *82425780
|
91
|
+
description: Maps representation documents from and to Ruby objects. Includes XML
|
92
|
+
and JSON support, plain properties, collections and compositions.
|
93
|
+
email:
|
115
94
|
- apotonick@gmail.com
|
116
95
|
executables: []
|
117
|
-
|
118
96
|
extensions: []
|
119
|
-
|
120
97
|
extra_rdoc_files: []
|
121
|
-
|
122
|
-
files:
|
98
|
+
files:
|
123
99
|
- .gitignore
|
124
100
|
- .rspec
|
125
101
|
- .travis.yml
|
@@ -150,37 +126,29 @@ files:
|
|
150
126
|
- test/test_helper.rb
|
151
127
|
- test/xml_bindings_test.rb
|
152
128
|
- test/xml_test.rb
|
153
|
-
has_rdoc: true
|
154
129
|
homepage: http://representable.apotomo.de
|
155
130
|
licenses: []
|
156
|
-
|
157
131
|
post_install_message:
|
158
132
|
rdoc_options: []
|
159
|
-
|
160
|
-
require_paths:
|
133
|
+
require_paths:
|
161
134
|
- lib
|
162
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
135
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
163
136
|
none: false
|
164
|
-
requirements:
|
165
|
-
- -
|
166
|
-
- !ruby/object:Gem::Version
|
167
|
-
|
168
|
-
|
169
|
-
version: "0"
|
170
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
137
|
+
requirements:
|
138
|
+
- - ! '>='
|
139
|
+
- !ruby/object:Gem::Version
|
140
|
+
version: '0'
|
141
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
171
142
|
none: false
|
172
|
-
requirements:
|
173
|
-
- -
|
174
|
-
- !ruby/object:Gem::Version
|
175
|
-
|
176
|
-
- 0
|
177
|
-
version: "0"
|
143
|
+
requirements:
|
144
|
+
- - ! '>='
|
145
|
+
- !ruby/object:Gem::Version
|
146
|
+
version: '0'
|
178
147
|
requirements: []
|
179
|
-
|
180
148
|
rubyforge_project:
|
181
|
-
rubygems_version: 1.
|
149
|
+
rubygems_version: 1.8.10
|
182
150
|
signing_key:
|
183
151
|
specification_version: 3
|
184
|
-
summary: Maps representation documents from and to Ruby objects. Includes XML and
|
152
|
+
summary: Maps representation documents from and to Ruby objects. Includes XML and
|
153
|
+
JSON support, plain properties, collections and compositions.
|
185
154
|
test_files: []
|
186
|
-
|