rexle-builder 1.0.3 → 1.0.4
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/rexle-builder.rb +87 -56
- data.tar.gz.sig +0 -0
- metadata +28 -28
- metadata.gz.sig +0 -0
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d6c908421b55a41fe3988edff4238b011358ba5b78440036593ebf4b5ff65bb7
|
4
|
+
data.tar.gz: 150737d9be007c7c9d48fe30be8f606efe2b66bb3bfcbb69f3ea18b298cded1b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 29db012b7fcd96b56a5490afda250c9f7791c1d8354f0de0a66f40c4bf57689d130ca9db6077242a624af0882f61904c0ea77e186df480fe1194519bdadd398f
|
7
|
+
data.tar.gz: a56a35dd95093c7545bed8b7e2f5c9584947ccef4348fe2a5ccddc612167c89165dca45a79f1daa4a10dd12fb6998f5f33cbff428fe4bf23dcda58280947765c
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/rexle-builder.rb
CHANGED
@@ -4,7 +4,7 @@
|
|
4
4
|
|
5
5
|
|
6
6
|
class RexleArray < Array
|
7
|
-
|
7
|
+
|
8
8
|
def initialize(raw_a)
|
9
9
|
a = raw_a.first.is_a?(Array) ? raw_a : [raw_a]
|
10
10
|
super(a)
|
@@ -19,20 +19,20 @@ class RexleBuilder
|
|
19
19
|
yield(self.new(debug: debug))
|
20
20
|
|
21
21
|
end
|
22
|
-
|
22
|
+
|
23
23
|
def initialize(obj=nil, root: 'root', debug: false)
|
24
|
-
|
24
|
+
|
25
25
|
@debug = debug
|
26
26
|
@a = []
|
27
27
|
@current_a = @a
|
28
28
|
@namespace = nil
|
29
|
-
|
29
|
+
|
30
30
|
if obj.is_a? Hash then
|
31
|
-
|
32
|
-
key = obj.keys.first
|
33
|
-
|
31
|
+
|
32
|
+
key = obj.keys.first
|
33
|
+
|
34
34
|
if obj.length > 1 or obj[key].is_a?(Array) or obj[key].is_a?(String) then
|
35
|
-
self.send(root.to_sym) { buildx obj}
|
35
|
+
self.send(root.to_sym) { buildx obj}
|
36
36
|
else
|
37
37
|
self.send(key.to_sym) {buildx obj[key]}
|
38
38
|
end
|
@@ -50,96 +50,127 @@ class RexleBuilder
|
|
50
50
|
end
|
51
51
|
|
52
52
|
def method_missing(sym, *args)
|
53
|
-
|
53
|
+
|
54
54
|
puts 'args: ' + args.inspect if @debug
|
55
|
-
|
55
|
+
|
56
56
|
value = args.find {|x| x.is_a? String} || ''
|
57
57
|
attributes, obj = args.select {|x| x.is_a? Hash}
|
58
|
-
|
59
|
-
# The obj is an optional Hash object used to build nested XML
|
58
|
+
|
59
|
+
# The obj is an optional Hash object used to build nested XML
|
60
60
|
# after the current element
|
61
|
-
|
61
|
+
|
62
62
|
if value =~ /^<.*>$/ then
|
63
|
-
|
63
|
+
|
64
64
|
a = [
|
65
|
-
sym.to_s,
|
66
|
-
attributes,
|
65
|
+
sym.to_s,
|
66
|
+
attributes,
|
67
67
|
*Rexle.new("<root>%s</root>" % value, debug: @debug).to_a[2..-1]
|
68
68
|
]
|
69
|
-
|
69
|
+
|
70
70
|
end
|
71
|
-
|
71
|
+
|
72
|
+
|
73
|
+
# reserved keywords are masked with ._ e.g. ._method_missing
|
74
|
+
a ||= [sym.to_s.sub(/^(?:\._|_)/,'').sub(/^cdata!$/,'![')\
|
75
|
+
.sub(/^comment!$/, '!-'), attributes || {}, value || '']
|
72
76
|
if @debug then
|
73
77
|
puts 'sym: ' + sym.inspect
|
74
78
|
puts 'args: ' + args.inspect
|
79
|
+
puts 'obj: ' + obj.inspect
|
80
|
+
puts 'a: ' + a.inspect
|
75
81
|
end
|
76
|
-
|
77
|
-
# reserved keywords are masked with ._ e.g. ._method_missing
|
78
|
-
a ||= [sym.to_s.sub(/^(?:\._|_)/,'').sub(/^cdata!$/,'![')\
|
79
|
-
.sub(/^comment!$/, '!-'), attributes || {}, value || '']
|
80
|
-
|
82
|
+
|
81
83
|
a.concat RexleBuilder.new(obj, debug: false).to_a[3..-1] if obj
|
82
84
|
|
83
|
-
if @namespace then
|
85
|
+
if @namespace then
|
84
86
|
a.first.prepend(@namespace + ':')
|
85
|
-
@namespace = nil
|
87
|
+
@namespace = nil
|
86
88
|
end
|
87
89
|
|
88
90
|
@current_a << a
|
89
|
-
|
91
|
+
puts '@current_a, before block_given : ' + @current_a.inspect if @debug
|
92
|
+
|
90
93
|
if block_given? then
|
91
|
-
|
94
|
+
|
92
95
|
prev_a = @current_a
|
93
96
|
@current_a = a
|
94
|
-
|
95
|
-
r = yield()
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
97
|
+
|
98
|
+
r = yield()
|
99
|
+
|
100
|
+
if @debug then
|
101
|
+
puts 'r: ' + r.inspect
|
102
|
+
puts 'r.class: ' + r.class.inspect
|
103
|
+
end
|
104
|
+
|
105
|
+
return r if r == @a.first
|
106
|
+
@current_a.concat r if r.is_a? Array
|
107
|
+
puts '@current_a ' + @current_a.inspect if @debug
|
108
|
+
@current_a = prev_a
|
109
|
+
return @a.first
|
110
|
+
|
100
111
|
end
|
101
|
-
|
102
|
-
|
112
|
+
|
113
|
+
#@a.first
|
114
|
+
nil
|
103
115
|
end
|
104
|
-
|
116
|
+
|
105
117
|
private
|
106
|
-
|
118
|
+
|
107
119
|
# build from a Hash object
|
108
120
|
#
|
109
121
|
def buildx( h)
|
110
|
-
|
111
|
-
|
122
|
+
|
123
|
+
puts 'buildx: ' + h.inspect if @debug
|
124
|
+
# the following statement prevents duplicate elements where 1 key is
|
112
125
|
# represented by a String and the other by a symbol.
|
113
126
|
#
|
114
127
|
h2 = h.map {|x| [x[0].to_sym, x[1]]}.to_h
|
115
|
-
|
128
|
+
|
116
129
|
h2.each_pair do |key, value|
|
117
130
|
|
118
131
|
if value.is_a? Hash then
|
119
|
-
|
120
|
-
self.send(key.to_sym) do
|
132
|
+
puts 'buildx found Hash' + value.inspect if @debug
|
133
|
+
self.send(key.to_sym) do
|
121
134
|
buildx value
|
135
|
+
nil
|
122
136
|
end
|
123
|
-
|
124
|
-
elsif value.is_a?
|
125
|
-
|
137
|
+
|
138
|
+
elsif value.is_a?(Array) and value.first.is_a? Hash
|
139
|
+
|
140
|
+
puts 'buildx found Array' + value.inspect if @debug
|
141
|
+
puts 'key:' + key.inspect if @debug
|
142
|
+
|
126
143
|
self.send(key.to_sym) do
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
144
|
+
|
145
|
+
r2= []
|
146
|
+
value.each do |x|
|
147
|
+
|
148
|
+
if x.is_a? Hash then
|
149
|
+
puts 'x:' + x.inspect if @debug
|
150
|
+
buildx x
|
151
|
+
nil
|
152
|
+
else
|
153
|
+
puts 'x2:' + x.inspect if @debug
|
154
|
+
r2 << x
|
155
|
+
end
|
156
|
+
|
132
157
|
end
|
133
|
-
|
158
|
+
|
159
|
+
r2
|
134
160
|
end
|
135
|
-
|
161
|
+
|
136
162
|
else
|
137
|
-
|
138
|
-
|
139
|
-
|
163
|
+
|
164
|
+
puts 'buildx found other' + value.inspect if @debug
|
165
|
+
if value.is_a? String then
|
166
|
+
self.send(key.to_sym, value.to_s)
|
167
|
+
else
|
168
|
+
self.send(key.to_sym) {[value]}
|
169
|
+
end
|
170
|
+
|
140
171
|
end
|
141
172
|
end
|
142
173
|
|
143
|
-
end
|
174
|
+
end
|
144
175
|
|
145
176
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rexle-builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- James Robertson
|
@@ -10,32 +10,33 @@ bindir: bin
|
|
10
10
|
cert_chain:
|
11
11
|
- |
|
12
12
|
-----BEGIN CERTIFICATE-----
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
13
|
+
MIIEljCCAv6gAwIBAgIBATANBgkqhkiG9w0BAQsFADBIMRIwEAYDVQQDDAlnZW1t
|
14
|
+
YXN0ZXIxHjAcBgoJkiaJk/IsZAEZFg5qYW1lc3JvYmVydHNvbjESMBAGCgmSJomT
|
15
|
+
8ixkARkWAmV1MB4XDTIyMDcyNDE5NTI0N1oXDTIzMDcyNDE5NTI0N1owSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
|
18
|
+
ggGBAPcD/W+g9XKq4ugEgFrJ0o3aMpOPQPMMTQYMqPdadoRFsCqj32619ryDKWrr
|
19
|
+
5U1T3cf/I9Y/6Qh8sKKbdmqX8+H/hd5YgppWnPRjcThEAiR04Cek9MGH0I4qgztB
|
20
|
+
dNaanZNqeFWj3gPuAJq27wzOyPAzltnCeG2BW9hF6ZnDytfXFCv29Mtjhd+ZnLYu
|
21
|
+
/vCl7BVB8STrDEFz0IUACWZpBI7kfnKOiwUf97Akx24qWu8sVYovoxl5IwssG4Zb
|
22
|
+
Y3SYJRnMt+VpDj0NfMEJ3z6gsz+71dUrGfJgzra3xASpZfO1UnsJ2Y6r+CClFOkt
|
23
|
+
2jSW3h/Dj1SPDXcxD8yA0VqA90Rf5c4tBUPgrHb3UHoXCFWMRRAfeBIhGKnjHk1p
|
24
|
+
UYhzIyzGPpTxFezsbqo19VsCGH+Fdix7s5x6U7GaCwNGtQQ/4ff1QEsxDgu30p2O
|
25
|
+
fE+bU0vLiPflUeMIekE7joRJsaMLIfU7L4WAdJDnlzW9FGG2diB/vJLvdG2HBt4F
|
26
|
+
weFa+QIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
27
|
+
BBTf/hyUVRBhiJnLyS9ixjhp7e2dejAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
|
28
|
+
ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
29
|
+
c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQANTkbRlCnyKnC93YfSYYZZIY2yG3w4
|
30
|
+
aMC5NdlJbJKqNS5iFJFGzQmQFh64qphNYS/ER71XjeUcpQmL3G8CStlE2/Pgmw3q
|
31
|
+
AxGZQicTWSz7oZy0YWeAXiHu+Z+H5N9ar7r6cbN7e1X7100rXJOIoRbV30/7X2nd
|
32
|
+
oqq/CmaXtg5Tbr+pV461riwkEd+zq98EhVw8Mud0YOZ7QBGY1i1xK6DpTLWgzsiI
|
33
|
+
dCDj3IztA2K8hUJpP5aNw5nAGcLc/FxxGDySI2cQc+fDsM6RfFjch8EUd125yvRe
|
34
|
+
ab0Xx0Rsvj2/Z63HLArC6rESIzZVpt4FAOBlCzOtMJEC9SMBMM7+sbMbwRxoTCKj
|
35
|
+
VmHj3sRQB3mQj4qN3dd241Ea4y2eTa/mML8gvkx84jAYr/nmQc8tRV64bnp2G01a
|
36
|
+
w7Z+7EzJFzhHpXYm4QBYR+qb81pB/ZX0LWtVs/2jjCWoCOOdIuH/jh+DzQk4Qhby
|
37
|
+
R02xW5SGXEOiylE3Q9SDqGfvomcQ8ENDYts=
|
37
38
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
39
|
+
date: 2022-07-24 00:00:00.000000000 Z
|
39
40
|
dependencies: []
|
40
41
|
description:
|
41
42
|
email: digital.robertson@gmail.com
|
@@ -63,8 +64,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
63
64
|
- !ruby/object:Gem::Version
|
64
65
|
version: '0'
|
65
66
|
requirements: []
|
66
|
-
|
67
|
-
rubygems_version: 2.7.10
|
67
|
+
rubygems_version: 3.3.7
|
68
68
|
signing_key:
|
69
69
|
specification_version: 4
|
70
70
|
summary: Generates XML, by producing an array of raw XML elements which can parsed
|
metadata.gz.sig
CHANGED
Binary file
|