rexle-builder 0.5.1 → 1.0.3

Sign up to get free protection for your applications and to get access to all the features.
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