polyrex-objects 0.6.5 → 0.6.7

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.
Files changed (2) hide show
  1. data/lib/polyrex-objects.rb +101 -78
  2. metadata +4 -4
@@ -1,96 +1,119 @@
1
- #!/usr/bin/ruby
1
+ #!/usr/bin/env ruby
2
2
 
3
3
  # file: polyrex-objects.rb
4
4
 
5
- require 'polyrex-createobject'
6
- require 'rexle'
5
+ require 'requestor'
6
+
7
+ code = Requestor.read('http://rorbuilder.info/r/ruby/') do |x|
8
+ x.require 'polyrex-createobject'
9
+ x.require 'rexle'
10
+ end
11
+
12
+ eval code
13
+
7
14
 
8
15
  class PolyrexObjects
16
+
17
+ class PolyrexObject
18
+
19
+ def initialize(node, id='0')
20
+ @@id = id
21
+ @node = node
22
+ end
23
+
24
+ def create(id=nil)
25
+ id ||= @@id
26
+ id.succ!
27
+ @create.id = id
28
+
29
+ @create.record = @node.element('records')
30
+ @create
31
+ end
32
+
33
+ def to_xml(options={})
34
+ @node.xml(options)
35
+ end
36
+
37
+ def with()
38
+ yield(self)
39
+ end
40
+ end
9
41
 
10
- def initialize(schema, node=nil, id=nil)
42
+ def initialize(schema, id='0', node=nil)
11
43
 
12
44
  @node = node
13
45
  @@id = id
14
-
15
- a = schema.split('/')
16
- a.shift
17
- @class_names = []
18
-
19
- a.each do |x|
20
- name, raw_fields = x.split('[')
21
- if raw_fields then
22
- fields = raw_fields.chop.split(',').map &:strip
23
- @class_names << name.capitalize
24
-
25
- classx = []
26
- classx << "class #{name.capitalize}"
27
- classx << "def initialize(node, id=nil)"
28
- classx << "@@id=id; @node = node;"
29
- classx << "@create = PolyrexCreateObject.new('#{schema}')"
30
- classx << "end"
31
- fields.each do |field|
32
- classx << "def #{field}; @node.element('summary/#{field}/text()'); end"
33
- classx << "def #{field}=(text); @node.element('summary/#{field}').text = text; end"
34
- end
35
- classx << "def to_xml(options={}); @node.xml(options); end"
36
- classx << "def with(); yield(self); end"
37
- classx << "end"
38
46
 
39
- eval classx.join("\n")
40
- end
41
- end
47
+ if schema then
48
+ a = schema.split('/')
49
+ a.shift
50
+ @class_names = []
42
51
 
43
- # implement the child_object within each class object
44
- @class_names[0..-2].reverse.each_with_index do |class_name, k|
45
- i = @class_names.length - (k + 1)
46
- eval "#{class_name}.class_eval {
47
- def records()
48
- objects = @node.xpath('records/*').map {|record| #{@class_names[i]}.new(record)}
49
-
50
- def objects.records=(node); @node = node; end
51
- def objects.records(); @node; end
52
-
53
- def objects.sort_by!(&element_blk)
54
- a = @node.xpath('records/*').sort_by &element_blk
55
- records = @node.xpath('records')
56
- records.delete
57
- records = Rexle::Element.new 'records'
58
- a.each {|record| records.add record}
59
- @node.add records
60
- @node.xpath('records/*').map {|record| #{@class_names[i]}.new(record)}
61
- end
52
+ a.each do |x|
53
+ name, raw_fields = x.split('[')
54
+ if raw_fields then
55
+ fields = raw_fields.chop.split(',').map &:strip
56
+ @class_names << name.capitalize
62
57
 
63
- objects.records = @node
64
- objects
65
- end
58
+ classx = []
59
+ classx << "class #{name.capitalize} < PolyrexObject"
60
+ classx << "def initialize(node=nil, id='0')"
61
+ classx << "super(node,id)"
62
+ classx << "@create = PolyrexCreateObject.new('#{schema}', @@id)"
63
+ classx << "end"
64
+ fields.each do |field|
65
+ classx << "def #{field}; @node.element('summary/#{field}/text()'); end"
66
+ classx << "def #{field}=(text); @node.element('summary/#{field}').text = text; end"
67
+ end
68
+ classx << "end"
66
69
 
67
- def create(id=nil)
68
- @create.id = id || @@id
69
- @@id.succ!
70
- @create.record = @node.element('records')
71
- @create
70
+ eval classx.join("\n")
72
71
  end
73
-
74
- alias #{@class_names[i].downcase} records
75
-
76
- }"
77
- end
78
-
79
- @class_names[1..-1].each_with_index do |class_name, k|
80
- eval "#{class_name}.class_eval {
81
- def parent()
82
- #{@class_names[k]}.new(@node.parent.parent)
83
- end
84
- }"
85
- end
86
-
87
- methodx = @class_names.map do |name|
88
- %Q(def #{name.downcase}(); #{name}.new(@node, @@id); end)
89
- end
90
-
91
- self.instance_eval(methodx.join("\n"))
72
+ end
73
+
74
+ # implement the child_object within each class object
75
+ @class_names[0..-2].reverse.each_with_index do |class_name, k|
76
+ i = @class_names.length - (k + 1)
77
+ eval "#{class_name}.class_eval {
78
+ def records()
79
+ objects = @node.xpath('records/*').map {|record| #{@class_names[i]}.new(record, @@id)}
80
+
81
+ def objects.records=(node); @node = node; end
82
+ def objects.records(); @node; end
83
+
84
+ def objects.sort_by!(&element_blk)
85
+ a = @node.xpath('records/*').sort_by &element_blk
86
+ records = @node.xpath('records')
87
+ records.delete
88
+ records = Rexle::Element.new 'records'
89
+ a.each {|record| records.add record}
90
+ @node.add records
91
+ @node.xpath('records/*').map {|record| #{@class_names[i]}.new(record)}
92
+ end
92
93
 
93
-
94
+ objects.records = @node
95
+ objects
96
+ end
97
+
98
+ alias #{@class_names[i].downcase} records
99
+
100
+ }"
101
+ end
102
+
103
+ @class_names[1..-1].each_with_index do |class_name, k|
104
+ eval "#{class_name}.class_eval {
105
+ def parent()
106
+ #{@class_names[k]}.new(@node.parent.parent, @@id)
107
+ end
108
+ }"
109
+ end
110
+
111
+ methodx = @class_names.map do |name|
112
+ %Q(def #{name.downcase}(); #{name}.new(@node, @@id); end)
113
+ end
114
+
115
+ self.instance_eval(methodx.join("\n"))
116
+ end
94
117
  end
95
118
 
96
119
  def to_a
metadata CHANGED
@@ -2,15 +2,15 @@
2
2
  name: polyrex-objects
3
3
  version: !ruby/object:Gem::Version
4
4
  prerelease:
5
- version: 0.6.5
5
+ version: 0.6.7
6
6
  platform: ruby
7
- authors: []
8
-
7
+ authors:
8
+ - James Robertson
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
12
 
13
- date: 2011-03-15 00:00:00 +00:00
13
+ date: 2011-11-21 00:00:00 +00:00
14
14
  default_executable:
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency