rexle-builder 1.0.3 → 1.0.4
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.
- 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
|