rexle-builder 0.5.1 → 1.0.3

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 7f25f0c66d91f41499946b564868878a8348ee552a9c3895c32bf9d36bbe31b4
4
- data.tar.gz: 6f33bff7d370aa3211b918a54c456ae5a4d56c9e7eaf80ef52426566c2cb31ae
3
+ metadata.gz: 492edd3887ea1741d4024c90f698659c401ee65083960f91e5846dd4916f11b1
4
+ data.tar.gz: e4faa2914d561ba4a896a39a78634368cd93f3bd644b0071fc2b86a6d544c427
5
5
  SHA512:
6
- metadata.gz: 7e217242f78cae4f7651edb690931e097c484eebced18875a504f39c5bdda9ebfea35f69c23ae88419590a6409d993fb26933c7278328d83cff49a9a8e17d6e5
7
- data.tar.gz: a644fef61874a62c0790ec22a5635b7aa38598c44d42bc3d5cb84bbc5a35e4d0d02367af12c7091cc6446862dee198702a137207e3b8133a4e3872c3411f6b22
6
+ metadata.gz: b78105a25b08b860de82960c0e2bcee2bb0434d09f97c8a2748e67402c782cc0b57f0127164bf87128470e52fdd2b139ae677a1f8610afebe7f9404b5239b293
7
+ data.tar.gz: 0ee549658fefba3984efa121632e3fc6ea7a9d85979fa4e172c360eb6b8cea934474c2abca8f2389ffde4b85fdfc3c2899a066565d9204d8a05e1b4cd16a4ab0
checksums.yaml.gz.sig CHANGED
Binary file
data.tar.gz.sig CHANGED
Binary file
data/lib/rexle-builder.rb CHANGED
@@ -20,7 +20,7 @@ class RexleBuilder
20
20
 
21
21
  end
22
22
 
23
- def initialize(obj=nil, debug: false)
23
+ def initialize(obj=nil, root: 'root', debug: false)
24
24
 
25
25
  @debug = debug
26
26
  @a = []
@@ -32,7 +32,7 @@ class RexleBuilder
32
32
  key = obj.keys.first
33
33
 
34
34
  if obj.length > 1 or obj[key].is_a?(Array) or obj[key].is_a?(String) then
35
- self.root { 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
@@ -51,15 +51,20 @@ class RexleBuilder
51
51
 
52
52
  def method_missing(sym, *args)
53
53
 
54
- args << '' if args.last.is_a? Hash
55
- value, attributes = args.reverse
54
+ puts 'args: ' + args.inspect if @debug
55
+
56
+ value = args.find {|x| x.is_a? String} || ''
57
+ attributes, obj = args.select {|x| x.is_a? Hash}
58
+
59
+ # The obj is an optional Hash object used to build nested XML
60
+ # after the current element
56
61
 
57
62
  if value =~ /^<.*>$/ then
58
63
 
59
64
  a = [
60
65
  sym.to_s,
61
66
  attributes,
62
- *Rexle.new("<root>%s</root>" % value).to_a[2..-1]
67
+ *Rexle.new("<root>%s</root>" % value, debug: @debug).to_a[2..-1]
63
68
  ]
64
69
 
65
70
  end
@@ -72,6 +77,8 @@ class RexleBuilder
72
77
  # reserved keywords are masked with ._ e.g. ._method_missing
73
78
  a ||= [sym.to_s.sub(/^(?:\._|_)/,'').sub(/^cdata!$/,'![')\
74
79
  .sub(/^comment!$/, '!-'), attributes || {}, value || '']
80
+
81
+ a.concat RexleBuilder.new(obj, debug: false).to_a[3..-1] if obj
75
82
 
76
83
  if @namespace then
77
84
  a.first.prepend(@namespace + ':')
@@ -100,8 +107,13 @@ class RexleBuilder
100
107
  # build from a Hash object
101
108
  #
102
109
  def buildx( h)
103
-
104
- h.each_pair do |key, value|
110
+
111
+ # the following statement prevents duplicate elements where 1 key is
112
+ # represented by a String and the other by a symbol.
113
+ #
114
+ h2 = h.map {|x| [x[0].to_sym, x[1]]}.to_h
115
+
116
+ h2.each_pair do |key, value|
105
117
 
106
118
  if value.is_a? Hash then
107
119
 
@@ -123,7 +135,7 @@ class RexleBuilder
123
135
 
124
136
  else
125
137
 
126
- self.send(key.to_sym, value)
138
+ self.send(key.to_sym, value.to_s)
127
139
 
128
140
  end
129
141
  end
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: 0.5.1
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,34 +11,34 @@ cert_chain:
11
11
  - |
12
12
  -----BEGIN CERTIFICATE-----
13
13
  MIIEXjCCAsagAwIBAgIBATANBgkqhkiG9w0BAQsFADAsMSowKAYDVQQDDCFnZW1t
14
- YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMTkwNDIxMTc0OTMzWhcN
15
- MjAwNDIwMTc0OTMzWjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
- cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDPTWCu
17
- 5qtl5scAzUKl1043ftug6+rjNCxNxzJ3aCAvrHEcIp+Dmo5KZ9SJ+LPXuxG7bans
18
- zLqhI3ab7XN5x3QE2d99DxBU/UiPT/svUaZG7A4HxbItfwIu59p8XoaMFiuQ/uAh
19
- SG+KxKTjlrmoj8HE5RmXmMawEeCeSnm//6544J63PMiSpXF97NOFlte2cu+95Ht5
20
- jG/r8At0BlAIUr2PuPiBnHkaCxjMOMbpZG77X7Mhs2XWy/VDA+OOyKfJOSv1cG+h
21
- 1D4QaFLA2QvC6yO2aW+q4D+96syVNRxgCWVqZsVWBvdNvPY/8o0o7++iWReVbLOz
22
- SnlIaJiT667XnaVZfzBmiQfhCJq+6Mn9XyIDt20KLl9VekHCMLIzb8zvEoYjNVMC
23
- jmxdrNZv4zpbylEfnUc6fXn4HdcwqySDGdN/NfWRv8BbKUMc/VvKp36KML/79anu
24
- mvVILViiYBRNNC6Bc5kNd9DWIz1e/NvUiFaAKTTMeq3bPMdFFaEONK13W9cCAwEA
25
- AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUYuQiuNhp
26
- uEb3vp8rBGqSaPvMeQ8wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
14
+ YXN0ZXIvREM9amFtZXNyb2JlcnRzb24vREM9ZXUwHhcNMjAwNTAxMTgyMTU4WhcN
15
+ MjEwNTAxMTgyMTU4WjAsMSowKAYDVQQDDCFnZW1tYXN0ZXIvREM9amFtZXNyb2Jl
16
+ cnRzb24vREM9ZXUwggGiMA0GCSqGSIb3DQEBAQUAA4IBjwAwggGKAoIBgQDXvcGF
17
+ KAsFoSJW5WibJ3BCxoe5RyUNGARFsSo+Y755n9YmTEoL9jCNkxHCyZAPJSXeZJlV
18
+ jM1LqYD6n9MW73o0B7vy9Rq1n49cWIliXYrkIvhLlS7qviVg+ij8/o36LVeK4/4d
19
+ Z5d+jRyr6tovVn6Hlqs8qoMdI4lOj1f3yb2kFhbkW2Zx/O+4TMFvQT5/pc0/JcMM
20
+ b4SjzEZ8/aamSpjBNCIfML4pu2NNIaD/Zt8fLAa8kXGxCG47YP1rrnPuggz5YaOh
21
+ 0AgC4f2EKjfBqGcmgQ4QHOZ4GLf5pLPdILZk6dwCE6nwg3MLR+KDzuoHOppbzgpi
22
+ bHBVJ2mJczOpK4b1GQ0h8fb5HzJtFUrw6iRBwiPTKtbrh9x2QHS+npbKLbDdpjvL
23
+ b4u1krO1KazyhveIvcdScQ9+UbW5DxwYABoQ2VyRDplBn5c6+FTgSi5visvrrJTv
24
+ oqG6wLRxiTU9KRN24d7yEO0jrZf4PvCCLEAs/OnNzvJphQ2UgECBSstkjxkCAwEA
25
+ AaOBijCBhzAJBgNVHRMEAjAAMAsGA1UdDwQEAwIEsDAdBgNVHQ4EFgQUjwkszDfc
26
+ EtAc5VTBGeONI5ddrI8wJgYDVR0RBB8wHYEbZ2VtbWFzdGVyQGphbWVzcm9iZXJ0
27
27
  c29uLmV1MCYGA1UdEgQfMB2BG2dlbW1hc3RlckBqYW1lc3JvYmVydHNvbi5ldTAN
28
- BgkqhkiG9w0BAQsFAAOCAYEAM5FoA1+Njl5VUHxfdkhgSdwN9BAvWPrfTnTmMFGk
29
- bdTmyTzx59RxE32NZ5DV58YYhoDvGXDlFgSnyXtPJ6oOrD3W+DoIB0Y5bldKzsnV
30
- WetOe4reShq1S3C6TcfDaZZ5MD93/x96Wob1i+HcQGVr9IdKKwzPdDgFPQBVQ33k
31
- oMtKLObpB0rYunHMB9vZf6wZmx1gRmUgZIAXhWH2R/DFKvGlV3uiE1ZwMU2FCfYW
32
- 86I8wDbIfgnMwo2e71hi2Q8K/wq745zKVGU1lTmYMMPrPqk2miOj9yc/hA00t2p/
33
- GWvIEbWY0wcO7pMzsgnS3CRBk34GDzKJFNfW/hpoUQJFdqHzdlLJ62n6lm0YIjTx
34
- eSh+3/Jj0ywze2f489x1fzlEb25Y4evn34dMzfOx8s4rsdvtnGaPieCcagQeBEnv
35
- mhjduVy/qI0Fq2iBzsi+riXduSKKTKrvgbTbDfkk7gZK2Xb14hLgVeNOBxhvWUGj
36
- Boxgzq1tc6BbNomHiuZGxQTh
28
+ BgkqhkiG9w0BAQsFAAOCAYEAWAyU3Ht4sJy3dsUJ0EZTRTyamnWQk2p0Rb1SqqHp
29
+ 2wM2KLZVluuyM5kQ9IsI4UCtB4C6uvFu9P4JX9dWF6JTU0UQKvsgbPH1i+7sXUUf
30
+ gnBfsdfqWmmYU0y+m05DYgTYOOTPBY7nhM1Ms5zrkHfw7MdddTMIhPw/kuyqRHc6
31
+ vP8mNUJD2sr4untuOFdOBrFVcjylY8IHTR/aVINbQOh53r1TD8ATROvB9MEaHbEQ
32
+ LLr+c9+ti0wCZiHwd0o5jZBrH4hDrybFR9Dx61GZrLwaoDorq/nKnaIHikVGAUMX
33
+ 7zfbefTm9GvWrDQTjESHOfLVzjvcVR3/lLdDy914oSbA3+v9a2xsyZzVXKYADidr
34
+ LxGza+bzBCYgXoht0vSUR82d8uH+YdngvcK99G+3T8W53ikFDF2wS0l57yF9jfks
35
+ rC7AiWdayhS+wLWd/i/UtpYL25JcgKdaq24E/7+vB1EPRzPsDJrx8AzYo759WDob
36
+ o0Nd2o91GHfpqyL9snw6G3Dl
37
37
  -----END CERTIFICATE-----
38
- date: 2019-08-09 00:00:00.000000000 Z
38
+ date: 2021-02-24 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
- email: james@jamesrobertson.eu
41
+ email: digital.robertson@gmail.com
42
42
  executables: []
43
43
  extensions: []
44
44
  extra_rdoc_files: []
@@ -63,7 +63,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
63
63
  - !ruby/object:Gem::Version
64
64
  version: '0'
65
65
  requirements: []
66
- rubygems_version: 3.0.1
66
+ rubyforge_project:
67
+ rubygems_version: 2.7.10
67
68
  signing_key:
68
69
  specification_version: 4
69
70
  summary: Generates XML, by producing an array of raw XML elements which can parsed
metadata.gz.sig CHANGED
Binary file