rexle-builder 0.4.0 → 1.0.1

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: 6ebfc391e13a159b0e2e647bda142d93a88c5c23c00883e804c1aef08b9a619d
4
- data.tar.gz: 4ef64119a90d3bad4a64df1e4a7b421dae9ebead3e8d7d4196514f87f858b83d
3
+ metadata.gz: eda1c60846fb9f76df929bf427ce589c969482ad8e7fefb5fb3f2ece28acd54a
4
+ data.tar.gz: 337188bbc932c1824c70a753da66c5fa00216e6500c7d673adf4796371273c5d
5
5
  SHA512:
6
- metadata.gz: 3152fe4b085e87ae9852438bfc3ad39d19e1efb0981b1d611cf0581c6d27bb566c891a57c787f684e31502ddbf7431d1e560ee62a9b88724d73a617560a02084
7
- data.tar.gz: 3f407a4d65ff642459fa84870f246791153a6b7fbed41ed89f31fd9704736c040a702b8302cffa0cd97ab97550e30b876b4cac4a82d4a76e9e17f24b58b0872d
6
+ metadata.gz: 6cf481ebbddf24c43907ace9c67892029f4f392e5404108c54c38ea363e079ba0ae94db52f38d714b3ee426121dee83aa59487ea307433110cb0e0a3199131bd
7
+ data.tar.gz: 3cfd8fbf699b75baa0e379519101205b4cf43496469a9c12cb84d111cf1c66974f59721aa6431734d674d078e8d59d78965a5374db1a5f6b61646262f7ef714b
Binary file
data.tar.gz.sig CHANGED
Binary file
@@ -14,14 +14,15 @@ end
14
14
 
15
15
  class RexleBuilder
16
16
 
17
- def self.build()
17
+ def self.build(debug: false)
18
18
 
19
- yield(self.new)
19
+ yield(self.new(debug: debug))
20
20
 
21
21
  end
22
22
 
23
- def initialize(obj=nil)
23
+ def initialize(obj=nil, root: 'root', debug: false)
24
24
 
25
+ @debug = debug
25
26
  @a = []
26
27
  @current_a = @a
27
28
  @namespace = nil
@@ -31,7 +32,7 @@ class RexleBuilder
31
32
  key = obj.keys.first
32
33
 
33
34
  if obj.length > 1 or obj[key].is_a?(Array) or obj[key].is_a?(String) then
34
- self.root { buildx obj}
35
+ self.send(root.to_sym) { buildx obj}
35
36
  else
36
37
  self.send(key.to_sym) {buildx obj[key]}
37
38
  end
@@ -50,12 +51,34 @@ class RexleBuilder
50
51
 
51
52
  def method_missing(sym, *args)
52
53
 
53
- args << '' if args.last.is_a? Hash
54
- value, attributes = args.reverse
54
+ puts 'args: ' + args.inspect if @debug
55
+
56
+ value = args.shift if args.first.is_a? String
57
+
58
+ # The obj is an optional Hash object used to build nested XML
59
+ # after the current element
60
+ attributes, obj = args
61
+
62
+ if value =~ /^<.*>$/ then
63
+
64
+ a = [
65
+ sym.to_s,
66
+ attributes,
67
+ *Rexle.new("<root>%s</root>" % value, debug: @debug).to_a[2..-1]
68
+ ]
69
+
70
+ end
71
+
72
+ if @debug then
73
+ puts 'sym: ' + sym.inspect
74
+ puts 'args: ' + args.inspect
75
+ end
55
76
 
56
77
  # reserved keywords are masked with ._ e.g. ._method_missing
57
- a = [sym.to_s.sub(/^(?:\._|_)/,'').sub(/^cdata!$/,'![')\
78
+ a ||= [sym.to_s.sub(/^(?:\._|_)/,'').sub(/^cdata!$/,'![')\
58
79
  .sub(/^comment!$/, '!-'), attributes || {}, value || '']
80
+
81
+ a.concat RexleBuilder.new(obj, debug: false).to_a[3..-1] if obj
59
82
 
60
83
  if @namespace then
61
84
  a.first.prepend(@namespace + ':')
@@ -107,7 +130,7 @@ class RexleBuilder
107
130
 
108
131
  else
109
132
 
110
- self.send(key.to_sym, value)
133
+ self.send(key.to_sym, value.to_s)
111
134
 
112
135
  end
113
136
  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.4.0
4
+ version: 1.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - James Robertson
@@ -11,31 +11,31 @@ 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-04-21 00:00:00.000000000 Z
38
+ date: 2020-06-22 00:00:00.000000000 Z
39
39
  dependencies: []
40
40
  description:
41
41
  email: james@jamesrobertson.eu
@@ -63,7 +63,7 @@ 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
+ rubygems_version: 3.0.3
67
67
  signing_key:
68
68
  specification_version: 4
69
69
  summary: Generates XML, by producing an array of raw XML elements which can parsed
metadata.gz.sig CHANGED
Binary file