xml-registry 0.8.0 → 0.9.0
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/xml-registry.rb +56 -55
- data.tar.gz.sig +0 -0
- metadata +30 -29
- 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: 17d687a31b3101edd8cb0f580e2e2d186223312ffe3ad3f983ebf6a6c3f4ad2c
|
4
|
+
data.tar.gz: cead0b3b39344282cccd54c70c3e747141359eede388f484a9b4488d298be088
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a0d742f5b7e4f5f346bc5e30c3398954f702e940da670488d23dcb4512226706d6e662c45736a55908e888f2c11ff99a3d9241ff15b9070bd10ffe9e1f8aee6e
|
7
|
+
data.tar.gz: d25d7ec9f895d5fe89524fa3f0cf4556c1ca4d9b1106e3a886fad1f8fba36b57d4b3c9e22eb9231f7a1292acd5243ca5468285e8bb9a514a8d526a221622ca8b
|
checksums.yaml.gz.sig
CHANGED
Binary file
|
data/lib/xml-registry.rb
CHANGED
@@ -10,13 +10,13 @@ require 'rxfreadwrite'
|
|
10
10
|
|
11
11
|
|
12
12
|
module NumberCheck
|
13
|
-
|
13
|
+
|
14
14
|
refine String do
|
15
|
-
|
15
|
+
|
16
16
|
def is_number?
|
17
17
|
self.to_i.to_s == self
|
18
18
|
end
|
19
|
-
|
19
|
+
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
@@ -25,9 +25,9 @@ class XMLRegistry
|
|
25
25
|
include RXFReadWriteModule
|
26
26
|
|
27
27
|
attr_reader :doc
|
28
|
-
|
28
|
+
|
29
29
|
def initialize(template = '<root></root>', debug: false)
|
30
|
-
|
30
|
+
|
31
31
|
@debug = debug
|
32
32
|
super()
|
33
33
|
@template, _ = RXFReader.read(template)
|
@@ -52,21 +52,21 @@ class XMLRegistry
|
|
52
52
|
# if the 1st element doesn't exist create it
|
53
53
|
e = path.split('/',2).first
|
54
54
|
@doc.root.add_element Rexle::Element.new(e) unless @doc.root.element e
|
55
|
-
create_path = find_path(path)
|
55
|
+
create_path = find_path(path)
|
56
56
|
|
57
57
|
if not create_path.empty? then
|
58
58
|
parent_path = (path.split('/') - create_path.reverse).join('/')
|
59
59
|
key_builder(parent_path, create_path)
|
60
60
|
end
|
61
|
-
|
62
|
-
add_value(path, value)
|
61
|
+
|
62
|
+
add_value(path, value)
|
63
63
|
end
|
64
64
|
|
65
65
|
def []=(path, val)
|
66
66
|
s = path.split('/').map {|x| x[0].is_number? ? x.prepend('x') : x}.join '/'
|
67
67
|
self.set_key(s, val)
|
68
68
|
end
|
69
|
-
|
69
|
+
|
70
70
|
# get the key value by passing the path
|
71
71
|
# example: get_key('app/gtd/funday').value #=> 'friday'
|
72
72
|
#
|
@@ -75,14 +75,15 @@ class XMLRegistry
|
|
75
75
|
def get_key(path)
|
76
76
|
|
77
77
|
key = @doc.root.element path
|
78
|
-
raise ("xml-registry: key %s not found" % path) unless key
|
79
|
-
|
80
|
-
|
81
|
-
|
78
|
+
#raise ("xml-registry: key %s not found" % path) unless key
|
79
|
+
return nil unless key
|
80
|
+
|
81
|
+
key.instance_eval {
|
82
|
+
@path = path
|
82
83
|
|
83
84
|
def to_h(e)
|
84
85
|
|
85
|
-
v = if e.has_elements? then
|
86
|
+
v = if e.has_elements? then
|
86
87
|
e.elements.inject({}) do |r, x|
|
87
88
|
r.merge to_h(x)
|
88
89
|
end
|
@@ -91,24 +92,24 @@ class XMLRegistry
|
|
91
92
|
end
|
92
93
|
|
93
94
|
{e.name => v}
|
94
|
-
end
|
95
|
-
|
96
|
-
def to_config()
|
95
|
+
end
|
96
|
+
|
97
|
+
def to_config()
|
97
98
|
SimpleConfig.new(to_h(self), attributes: {key: @path})
|
98
|
-
end
|
99
|
-
|
100
|
-
def to_kvx()
|
99
|
+
end
|
100
|
+
|
101
|
+
def to_kvx()
|
101
102
|
Kvx.new(to_h(self), attributes: {key: @path})
|
102
|
-
end
|
103
|
-
|
103
|
+
end
|
104
|
+
|
104
105
|
def to_os()
|
105
106
|
OpenStruct.new(to_h(self).first.last)
|
106
107
|
end
|
107
108
|
}
|
108
|
-
|
109
|
+
|
109
110
|
key
|
110
111
|
end
|
111
|
-
|
112
|
+
|
112
113
|
# get several keys using a Rexle XPath
|
113
114
|
# example: get_keys('//funday') #=> [<funday>tuesday</funday>,<funday>friday</funday>]
|
114
115
|
#
|
@@ -116,7 +117,7 @@ class XMLRegistry
|
|
116
117
|
#
|
117
118
|
def get_keys(path)
|
118
119
|
@doc.root.xpath(path)
|
119
|
-
end
|
120
|
+
end
|
120
121
|
|
121
122
|
def [](path)
|
122
123
|
s = path.split('/').map {|x| x.is_number? ? x.prepend('x') : x}.join '/'
|
@@ -128,7 +129,7 @@ class XMLRegistry
|
|
128
129
|
#
|
129
130
|
#
|
130
131
|
def delete_key(path)
|
131
|
-
@doc.root.delete path
|
132
|
+
@doc.root.delete path
|
132
133
|
end
|
133
134
|
|
134
135
|
# return the registry as an XML document
|
@@ -139,14 +140,14 @@ class XMLRegistry
|
|
139
140
|
end
|
140
141
|
|
141
142
|
alias :display_xml :to_xml
|
142
|
-
|
143
|
+
|
143
144
|
def xml(options={})
|
144
145
|
@doc.root.xml options
|
145
|
-
end
|
146
|
+
end
|
146
147
|
|
147
148
|
# load a new registry xml document replacing the existing registry
|
148
149
|
#
|
149
|
-
def load_xml(s='')
|
150
|
+
def load_xml(s='')
|
150
151
|
@doc = Rexle.new(RXFReader.read(s)[0].force_encoding("UTF-8"))
|
151
152
|
self
|
152
153
|
end
|
@@ -171,40 +172,40 @@ class XMLRegistry
|
|
171
172
|
#"pin-no"="4321"
|
172
173
|
#REG
|
173
174
|
#
|
174
|
-
#reg = XMLRegistry.new
|
175
|
-
#reg.import s
|
175
|
+
#reg = XMLRegistry.new
|
176
|
+
#reg.import s
|
176
177
|
#
|
177
|
-
def import(s)
|
178
|
-
|
178
|
+
def import(s)
|
179
|
+
|
179
180
|
r = RXFReader.read(s)
|
180
181
|
reg_buffer = r.first
|
181
182
|
raise "read file error" unless reg_buffer
|
182
183
|
|
183
184
|
if reg_buffer.strip[/^\[/] then
|
184
185
|
|
185
|
-
reg_items = reg_buffer.gsub(/\n/,'').split(/(?=\[.[^\]]+\])/).map do |x|
|
186
|
+
reg_items = reg_buffer.gsub(/\n/,'').split(/(?=\[.[^\]]+\])/).map do |x|
|
186
187
|
[x[/^\[(.[^\]]+)\]/,1], Hash[*($').scan(/"([^"]+)"="(.[^"]*)"/).flatten]]
|
187
188
|
end
|
188
|
-
|
189
|
-
elsif reg_buffer.strip.lines.grep(/^\s+\w/).any?
|
189
|
+
|
190
|
+
elsif reg_buffer.strip.lines.grep(/^\s+\w/).any?
|
190
191
|
|
191
192
|
puts 'hierachical import' if @debug
|
192
193
|
doc = LineTree.new(reg_buffer).to_doc
|
193
|
-
|
194
|
+
|
194
195
|
reg_items = []
|
195
|
-
|
196
|
+
|
196
197
|
doc.root.each_recursive do |e|
|
197
|
-
|
198
|
+
|
198
199
|
puts 'e: ' + e.inspect if @debug
|
199
200
|
if e.is_a?(Rexle::Element) and e.children.length < 2 then
|
200
|
-
|
201
|
+
|
201
202
|
reg_items << [e.backtrack.to_xpath.sub(/^root\//,'')\
|
202
203
|
.sub(/\/[^\/]+$/,''), {e.name => e.text }]
|
203
|
-
|
204
|
+
|
204
205
|
end
|
205
|
-
|
206
|
-
end
|
207
|
-
|
206
|
+
|
207
|
+
end
|
208
|
+
|
208
209
|
else
|
209
210
|
|
210
211
|
reg_items = reg_buffer.split(/(?=^[^:]+$)/).map do |raw_section|
|
@@ -214,21 +215,21 @@ class XMLRegistry
|
|
214
215
|
path = lines.shift.rstrip
|
215
216
|
[path, Hash[lines.map{|x| x.split(':',2).map(&:strip)}]]
|
216
217
|
end
|
217
|
-
|
218
|
+
|
218
219
|
reg_items.compact!
|
219
|
-
|
220
|
+
|
220
221
|
end
|
221
222
|
|
222
223
|
puts 'reg_items: ' + reg_items.inspect if @debug
|
223
224
|
reg_items.each do |path, items|
|
224
225
|
items.each {|k,value| self.set_key("%s/%s" % [path,k], value)}
|
225
226
|
end
|
226
|
-
|
227
|
+
|
227
228
|
:import
|
228
229
|
end
|
229
230
|
|
230
|
-
# Export the registry to file if the filepath is specified. Regardless,
|
231
|
-
# the registry will be returned as a string in the registry
|
231
|
+
# Export the registry to file if the filepath is specified. Regardless,
|
232
|
+
# the registry will be returned as a string in the registry
|
232
233
|
# export format.
|
233
234
|
#
|
234
235
|
def export(s=nil)
|
@@ -270,21 +271,21 @@ class XMLRegistry
|
|
270
271
|
|
271
272
|
def print_scan(node, parent=[])
|
272
273
|
out = []
|
273
|
-
parent << node.name
|
274
|
+
parent << node.name
|
274
275
|
items = []
|
275
276
|
|
276
277
|
node.elements.each do |e|
|
277
278
|
if e.has_elements? then
|
278
|
-
out << print_scan(e, parent.clone)
|
279
|
+
out << print_scan(e, parent.clone)
|
279
280
|
else
|
280
281
|
items << [e.name, e.text]
|
281
282
|
end
|
282
|
-
end
|
283
|
+
end
|
283
284
|
if parent.length > 1 and items.length > 0 then
|
284
|
-
out << "[%s]\n%s\n" % [parent[1..-1].join("/"),
|
285
|
-
items.map {|x| "\"%s\"=\"%s\"" % x}.join("\n")]
|
285
|
+
out << "[%s]\n%s\n" % [parent[1..-1].join("/"),
|
286
|
+
items.map {|x| "\"%s\"=\"%s\"" % x}.join("\n")]
|
286
287
|
end
|
287
|
-
out
|
288
|
+
out
|
288
289
|
end
|
289
290
|
|
290
291
|
end
|
data.tar.gz.sig
CHANGED
Binary file
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: xml-registry
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.9.0
|
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
|
+
8ixkARkWAmV1MB4XDTIzMDMwNjA4MDM0MFoXDTI0MDMwNTA4MDM0MFowSDESMBAG
|
16
|
+
A1UEAwwJZ2VtbWFzdGVyMR4wHAYKCZImiZPyLGQBGRYOamFtZXNyb2JlcnRzb24x
|
17
|
+
EjAQBgoJkiaJk/IsZAEZFgJldTCCAaIwDQYJKoZIhvcNAQEBBQADggGPADCCAYoC
|
18
|
+
ggGBANQ2m73IAUzzv+ye9M0/onqQA2Rw7hfL/B/du80dmD4V5J0QlXktmT8SnKV/
|
19
|
+
TyA+GppiI/XrdSnukgMDqP5osBYIX7Ew+J4zl9DNqzPEvXxfH1g+Rfv2ySzDBlKV
|
20
|
+
wp2QTxQFxu7zaZsFn/BrrbqvazhU8DGr2As2NBN/NGFWTmnq6mzZPTn7/9DR29bq
|
21
|
+
26zGL/gJbKzTS9zzrNqX2K/emqlSLLzOX+QUEeAzo8tGe6gfEhdDdV3WeOazdA8Q
|
22
|
+
O5zK99MF323pJBXUjsNcD6LV41vn0i9bMIVeGugn9yFxkmj0bzsMtHGKZfB26KCR
|
23
|
+
FWfyUR4woxmSkHWcU6l6Ka8V7o9WD95cpPwPTN0dsCKAZCUpM4tEshnp/abqfuyZ
|
24
|
+
DopU9CQoy42YZNUm9X9biCIwKiO1dopdYAd9FzRF/VwimpzP+VQOegc6BpR1Vwji
|
25
|
+
ycRREdrOxPhSMgh3eBxtXIIO6h/mvqOr3yhBcMwE/vqTI1cVwrmX9OD8NTz2+Rol
|
26
|
+
FzddtwIDAQABo4GKMIGHMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0GA1UdDgQW
|
27
|
+
BBSMe2Mtd30bMZYJUMbzeGfWwUaxSzAmBgNVHREEHzAdgRtnZW1tYXN0ZXJAamFt
|
28
|
+
ZXNyb2JlcnRzb24uZXUwJgYDVR0SBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
|
29
|
+
c29uLmV1MA0GCSqGSIb3DQEBCwUAA4IBgQDO3MtMU1Q1WTNhlGUDJXpXGUvgzlQh
|
30
|
+
jK+hZkfw8Hq+0/QaODH7V3poSwlKoI/MuusNvbeER4HUg/BAIgMNE74R1cSDQ903
|
31
|
+
tYLMdW0FZKMxFVBgTF72gsFD9atnJE3N1WJNKnrUIcx+yM5W3CRrtRuO0qQWirtO
|
32
|
+
MDTHGhnjXtD6g4ufthiZTJIrL8O0VIhqI+MxYwEC3jgPfQ8AmetZJtKL5I8D7fzr
|
33
|
+
TF7DhYOoTXxCnkmJa5343IVMAP/SKLvjp7Q3GB/zTlc1Nbzdr5TtrF/6H1QNTC+E
|
34
|
+
HDPkLsIfkHSvrmOMGVrQjV8LvserduHd9B1M1GpOCr0dFeUa6XeljFLhD2QUjBhq
|
35
|
+
kL7xiX3RDqcAvy309ILHyfCi3dWb9G/CWOu7eLmnE1zcoff19nQdTEuVj8nMEhIp
|
36
|
+
Cs3/Ef1tya/6aFPDCTHdMU1ujt9t/Up7C1JyWLTzzoPktNtweb1a3xOVOs/vaVog
|
37
|
+
J5+m17iLpC8bZgQfz17lCcq7Ey37SYJlMIo=
|
37
38
|
-----END CERTIFICATE-----
|
38
|
-
date:
|
39
|
+
date: 2023-03-06 00:00:00.000000000 Z
|
39
40
|
dependencies:
|
40
41
|
- !ruby/object:Gem::Dependency
|
41
42
|
name: simple-config
|
@@ -46,7 +47,7 @@ dependencies:
|
|
46
47
|
version: '0.7'
|
47
48
|
- - ">="
|
48
49
|
- !ruby/object:Gem::Version
|
49
|
-
version: 0.7.
|
50
|
+
version: 0.7.3
|
50
51
|
type: :runtime
|
51
52
|
prerelease: false
|
52
53
|
version_requirements: !ruby/object:Gem::Requirement
|
@@ -56,7 +57,7 @@ dependencies:
|
|
56
57
|
version: '0.7'
|
57
58
|
- - ">="
|
58
59
|
- !ruby/object:Gem::Version
|
59
|
-
version: 0.7.
|
60
|
+
version: 0.7.3
|
60
61
|
description:
|
61
62
|
email: digital.robertson@gmail.com
|
62
63
|
executables: []
|
@@ -83,7 +84,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
83
84
|
- !ruby/object:Gem::Version
|
84
85
|
version: '0'
|
85
86
|
requirements: []
|
86
|
-
rubygems_version: 3.
|
87
|
+
rubygems_version: 3.4.6
|
87
88
|
signing_key:
|
88
89
|
specification_version: 4
|
89
90
|
summary: The XML registry can be used to store or retrieve app settings etc. in an
|
metadata.gz.sig
CHANGED
Binary file
|