aws-cfn-dsl 0.8.3 → 0.8.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d08ad7a94302cc092928716d3d4bedac7c16ea6b
4
- data.tar.gz: d902908466c32063b8e0d455342797e5dc3a9385
3
+ metadata.gz: 8ec78e5e2b024d70a58ffcffe96f81b84cae003e
4
+ data.tar.gz: 24a6639f78ae814c9200ffbf3620fae5683f2750
5
5
  SHA512:
6
- metadata.gz: 2a04a991358aea6328f0a84af52dbd29490c509067b2303da66086db93c553870e17c8623b38c11b05ad082f49f7c1e2e74d29015edea4d11d4e854725edb535
7
- data.tar.gz: 5df589bb87eb5bbd2beb81061e89f29616b61ff7fd4c5ad48bb4cd85624152f24bd13b5c7e23c7f1a61749c15bc5f50d5d2b74a0b4b8c208345c6ce85ae8e3dc
6
+ metadata.gz: dc491c71f170cebbc14e2242c908c2c391594dcd1ccacb3b52fea8bdb61dd096d3a9897d143313ebc64f00b546214fe1dc1574cb720fbffb05c0e26ba638fb35
7
+ data.tar.gz: fb1f784f49f493d1be603b6727b893da8db63b8aa2a11030af570c476019cd449d87c7f81328cb7ba5439e97e461279ae92d7845b3e867aa2d0058848ad2da3d
@@ -71,21 +71,35 @@ module Aws
71
71
  end
72
72
 
73
73
  def hash_refs(line,scope)
74
- match = line.match %r/^(.*?)(\{\s*:\S+\s*=>.*?\}|\{\s*\S+:\s*.*?\})(.*)$/
74
+ block_regex = %r/\{\s*:\S+\s*=>.*?\}|\{\s*\S+:\s*.*?\}/
75
+ match = line.match %r/^(.*?)(#{block_regex})(.*)$/
75
76
  if match
77
+ left = match[1]
78
+ code = match[2]
79
+ tail = match[3]
80
+ while true
81
+ braces = code.gsub(%r/[^{}]+/, '')
82
+ len = braces.size
83
+ if len % 2 != 0
84
+ nest = tail.match %r/^(.*\})(.*)$/
85
+ if nest
86
+ code += nest[1]
87
+ tail = nest[2]
88
+ else
89
+ abort! "Mismatched {}'s"
90
+ end
91
+ else
92
+ break
93
+ end
94
+ end
76
95
  h = nil
77
- eval "h = #{match[2]}", binding
96
+ eval "h = #{code}", binding
78
97
  k = h.keys[0]
79
98
  v = h.delete(k)
80
- v = if v.is_a?Array
81
- v.map{|e| e.to_s }
82
- else
83
- v.to_s
84
- end
85
-
99
+ v = scope[:compiler].sym_to_s(v)
86
100
  h[k.to_s] = v
87
101
  scope[:logger].debug h
88
- [match[1], h, hash_refs(match[3],scope) ]
102
+ [left, h, tail.size > 0 ? hash_refs(tail,scope) : tail ]
89
103
  else
90
104
  "#{line}\n"
91
105
  end
@@ -1,7 +1,7 @@
1
1
  module Aws
2
2
  module Cfn
3
3
  module Dsl
4
- VERSION = '0.8.3'
4
+ VERSION = '0.8.4'
5
5
  end
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: aws-cfn-dsl
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.3
4
+ version: 0.8.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Christo DeLange