polyrex-objects 0.7.10 → 0.8.0
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 +4 -4
- checksums.yaml.gz.sig +0 -0
- data/lib/polyrex-objects.rb +67 -49
- data.tar.gz.sig +0 -0
- metadata +7 -7
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 938c943b17c79b6cce510fb7b3a1f3d91f3325e2
|
4
|
+
data.tar.gz: 41c1271c95f4b366fe738dd9ad8f26ec9b13c8ee
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 11b2cadddffeef0a1a7ad1fa510b2e81fc4836908c1e1448a70119f449955d24f7e855885c7a761e5215ada38997a5e1ff8ea5474cc043c1b562994294ac74f4
|
7
|
+
data.tar.gz: ca9ace6a2501f35eb57493f6d3ddd6322c538fba01052643876d38dc66b615342b42898c70ceb3f262facbb7f1f1d147cbb461f1784c70771b9d794b9088785e
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/polyrex-objects.rb
CHANGED
@@ -134,6 +134,7 @@ EOF
|
|
134
134
|
|
135
135
|
@node = node
|
136
136
|
@@id = id
|
137
|
+
@schema = schema
|
137
138
|
|
138
139
|
if schema then
|
139
140
|
|
@@ -143,49 +144,18 @@ EOF
|
|
143
144
|
|
144
145
|
a.each do |x|
|
145
146
|
|
146
|
-
|
147
|
-
|
148
|
-
if raw_fields then
|
149
|
-
fields = raw_fields.chop.split(',').map &:strip
|
150
|
-
@class_names << name.capitalize
|
151
|
-
|
152
|
-
classx = []
|
153
|
-
classx << "class #{name.capitalize} < PolyrexObject"
|
154
|
-
classx << "def initialize(node=nil, id='0')"
|
155
|
-
classx << " node ||= Rexle.new('<#{name}><summary/><records/></#{name}>').root"
|
156
|
-
classx << " super(node,id)"
|
157
|
-
|
158
|
-
classx << " a = node.xpath('summary/*',&:name)"
|
159
|
-
classx << " yaml_fields = a - (#{fields} + %w(format_mask))"
|
160
|
-
classx << "yaml_fields.each do |field|"
|
161
|
-
classx << %q(instance_eval "def #{field}; YAML.load(@node.element('summary/#{field}/text()')); end")
|
162
|
-
classx << "end"
|
163
|
-
|
164
|
-
classx << "@fields = %i(#{fields.join(' ')})"
|
165
|
-
classx << "@create = PolyrexCreateObject.new('#{schema}', @@id)"
|
166
|
-
classx << "end"
|
167
|
-
|
168
|
-
fields.each do |field|
|
169
|
-
classx << "def #{field}"
|
170
|
-
classx << " if @node.element('summary/#{field}').nil? then"
|
171
|
-
classx << " @node.element('summary').add Rexle::Element.new('#{field}')"
|
172
|
-
classx << " end"
|
173
|
-
classx << " node = @node.element('summary/#{field}/text()')"
|
174
|
-
classx << " node ? node.clone : ''"
|
175
|
-
classx << "end"
|
176
|
-
classx << "def #{field}=(text)"
|
177
|
-
classx << " if @node.element('summary/#{field}').nil? then"
|
178
|
-
classx << " @node.element('summary').add Rexle::Element.new('#{field}', text)"
|
179
|
-
classx << " else"
|
180
|
-
classx << " @node.element('summary/#{field}').text = text"
|
181
|
-
classx << " end"
|
182
|
-
classx << "end"
|
183
|
-
end
|
184
|
-
|
185
|
-
classx << "end"
|
147
|
+
r = x[/[^\{]+(?=\})/]
|
186
148
|
|
187
|
-
|
149
|
+
if r then
|
150
|
+
r.split(/\s*;\s*/).each do |s|
|
151
|
+
name, raw_fields = s.split('[')
|
152
|
+
make_class(name, raw_fields)
|
153
|
+
end
|
154
|
+
else
|
155
|
+
name, raw_fields = x.split('[')
|
156
|
+
make_class(name, raw_fields)
|
188
157
|
end
|
158
|
+
|
189
159
|
end
|
190
160
|
|
191
161
|
if @class_names.length < 2 then
|
@@ -214,6 +184,61 @@ EOF
|
|
214
184
|
end
|
215
185
|
end
|
216
186
|
|
187
|
+
def to_a
|
188
|
+
@class_names.map {|x| eval(x)}
|
189
|
+
end
|
190
|
+
|
191
|
+
def to_h
|
192
|
+
Hash[self.to_a.map {|x| [x.name[/\w+$/], x]}]
|
193
|
+
end
|
194
|
+
|
195
|
+
private
|
196
|
+
|
197
|
+
def make_class(name, raw_fields)
|
198
|
+
|
199
|
+
if raw_fields then
|
200
|
+
fields = raw_fields.chop.split(',').map &:strip
|
201
|
+
@class_names << name.capitalize
|
202
|
+
|
203
|
+
classx = []
|
204
|
+
classx << "class #{name.capitalize} < PolyrexObject"
|
205
|
+
classx << "def initialize(node=nil, id='0')"
|
206
|
+
classx << " node ||= Rexle.new('<#{name}><summary/><records/></#{name}>').root"
|
207
|
+
classx << " super(node,id)"
|
208
|
+
|
209
|
+
classx << " a = node.xpath('summary/*',&:name)"
|
210
|
+
classx << " yaml_fields = a - (#{fields} + %w(format_mask))"
|
211
|
+
classx << "yaml_fields.each do |field|"
|
212
|
+
classx << %q(instance_eval "def #{field}; YAML.load(@node.element('summary/#{field}/text()')); end")
|
213
|
+
classx << "end"
|
214
|
+
|
215
|
+
classx << "@fields = %i(#{fields.join(' ')})"
|
216
|
+
classx << "@create = PolyrexCreateObject.new('#{@schema}', @@id)"
|
217
|
+
classx << "end"
|
218
|
+
|
219
|
+
fields.each do |field|
|
220
|
+
classx << "def #{field}"
|
221
|
+
classx << " if @node.element('summary/#{field}').nil? then"
|
222
|
+
classx << " @node.element('summary').add Rexle::Element.new('#{field}')"
|
223
|
+
classx << " end"
|
224
|
+
classx << " node = @node.element('summary/#{field}/text()')"
|
225
|
+
classx << " node ? node.clone : ''"
|
226
|
+
classx << "end"
|
227
|
+
classx << "def #{field}=(text)"
|
228
|
+
classx << " if @node.element('summary/#{field}').nil? then"
|
229
|
+
classx << " @node.element('summary').add Rexle::Element.new('#{field}', text)"
|
230
|
+
classx << " else"
|
231
|
+
classx << " @node.element('summary/#{field}').text = text"
|
232
|
+
classx << " end"
|
233
|
+
classx << "end"
|
234
|
+
end
|
235
|
+
|
236
|
+
classx << "end"
|
237
|
+
|
238
|
+
eval classx.join("\n")
|
239
|
+
end
|
240
|
+
end
|
241
|
+
|
217
242
|
def make_def_records(class_name, i=0)
|
218
243
|
|
219
244
|
eval "#{class_name}.class_eval {
|
@@ -255,13 +280,6 @@ EOF
|
|
255
280
|
|
256
281
|
end
|
257
282
|
|
258
|
-
|
259
|
-
@class_names.map {|x| eval(x)}
|
260
|
-
end
|
261
|
-
|
262
|
-
def to_h
|
263
|
-
Hash[self.to_a.map {|x| [x.name[/\w+$/], x]}]
|
264
|
-
end
|
265
|
-
|
283
|
+
|
266
284
|
|
267
285
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polyrex-objects
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.8.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -31,7 +31,7 @@ cert_chain:
|
|
31
31
|
C0ZUhP8IAGCVW8QD8AfZ/AgqUdh+zTRqKdhEyhXCjYyVXqNHnD02NbyGmQvgd9SD
|
32
32
|
XfuuGzQ3E4Mh5w==
|
33
33
|
-----END CERTIFICATE-----
|
34
|
-
date: 2014-
|
34
|
+
date: 2014-07-19 00:00:00.000000000 Z
|
35
35
|
dependencies:
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: polyrex-createobject
|
@@ -39,20 +39,20 @@ dependencies:
|
|
39
39
|
requirements:
|
40
40
|
- - "~>"
|
41
41
|
- !ruby/object:Gem::Version
|
42
|
-
version: '0.
|
42
|
+
version: '0.5'
|
43
43
|
- - ">="
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version: 0.
|
45
|
+
version: 0.5.2
|
46
46
|
type: :runtime
|
47
47
|
prerelease: false
|
48
48
|
version_requirements: !ruby/object:Gem::Requirement
|
49
49
|
requirements:
|
50
50
|
- - "~>"
|
51
51
|
- !ruby/object:Gem::Version
|
52
|
-
version: '0.
|
52
|
+
version: '0.5'
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
|
-
version: 0.
|
55
|
+
version: 0.5.2
|
56
56
|
description:
|
57
57
|
email: james@r0bertson.co.uk
|
58
58
|
executables: []
|
@@ -72,7 +72,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: 2.1.
|
75
|
+
version: 2.1.0
|
76
76
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
77
77
|
requirements:
|
78
78
|
- - ">="
|
metadata.gz.sig
CHANGED
Binary file
|