polyrex 0.6.1 → 0.6.5
Sign up to get free protection for your applications and to get access to all the features.
- data/lib/polyrex.rb +18 -2
- metadata +11 -1
data/lib/polyrex.rb
CHANGED
@@ -8,6 +8,7 @@ require 'polyrex-objects'
|
|
8
8
|
require 'polyrex-createobject'
|
9
9
|
require 'rexml/document'
|
10
10
|
require 'ostruct'
|
11
|
+
require 'polyrex-object-methods'
|
11
12
|
|
12
13
|
class Polyrex
|
13
14
|
include REXML
|
@@ -43,7 +44,7 @@ class Polyrex
|
|
43
44
|
|
44
45
|
def find_by_id(id)
|
45
46
|
@parent_node = XPath.first(@doc.root, "//[@id='#{id}']")
|
46
|
-
|
47
|
+
self
|
47
48
|
end
|
48
49
|
|
49
50
|
alias id find_by_id
|
@@ -193,12 +194,27 @@ class Polyrex
|
|
193
194
|
schema = @doc.root.text('summary/schema')
|
194
195
|
#puts 'schema : ' + schema
|
195
196
|
load_handlers(schema)
|
197
|
+
load_find_by(schema)
|
196
198
|
@parent_node = XPath.first(@doc.root,'records')
|
197
199
|
|
198
200
|
end
|
199
201
|
|
200
202
|
def tail_map(a)
|
201
203
|
[a] + (a.length > 1 ? tail_map(a[0..-2]) : [])
|
202
|
-
end
|
204
|
+
end
|
205
|
+
|
206
|
+
def load_find_by(schema)
|
207
|
+
a = PolyrexObjectMethods.new(schema).to_a
|
208
|
+
|
209
|
+
methodx = a.map do |class_name, methods|
|
210
|
+
class_name.downcase!
|
211
|
+
methods.map do |method_name|
|
212
|
+
xpath = %Q(XPath.first(@doc.root, "//%s[summary/%s='\#\{val\}']")) % [class_name, method_name]
|
213
|
+
"def find_by_%s_%s(val) @parent_node = %s; self.%s end" % [class_name, method_name, xpath, class_name]
|
214
|
+
end
|
215
|
+
end
|
216
|
+
|
217
|
+
self.instance_eval methodx.join("\n")
|
218
|
+
end
|
203
219
|
|
204
220
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: polyrex
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.6.
|
4
|
+
version: 0.6.5
|
5
5
|
platform: ruby
|
6
6
|
authors: []
|
7
7
|
|
@@ -52,6 +52,16 @@ dependencies:
|
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: "0"
|
54
54
|
version:
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: polyrex-object-methods
|
57
|
+
type: :runtime
|
58
|
+
version_requirement:
|
59
|
+
version_requirements: !ruby/object:Gem::Requirement
|
60
|
+
requirements:
|
61
|
+
- - ">="
|
62
|
+
- !ruby/object:Gem::Version
|
63
|
+
version: "0"
|
64
|
+
version:
|
55
65
|
description:
|
56
66
|
email:
|
57
67
|
executables: []
|