polyrex-objects 0.7.10 → 0.8.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|