polyrex 0.6.1 → 0.6.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (2) hide show
  1. data/lib/polyrex.rb +18 -2
  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
- PolyrexObjects.new(@parent_node, @id)
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.1
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: []