cfn-model 0.4.8 → 0.4.9

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: 203d06651118db7866fd78a6ca8fab93040ce9944193a491a0495513d283e9a8
4
- data.tar.gz: 89ece250c90b5cfaacba9bc3304eb89b76cb1bc0bd12b1d4e09ee777cb2f1a49
3
+ metadata.gz: ddb403868e5c1cd8891f12598a4434986dc4d21a0073da942ac0b92f33599179
4
+ data.tar.gz: 535b2ceba004340b7aac1390dddc7664b732a247ee8eda3d66cfaabe17f84770
5
5
  SHA512:
6
- metadata.gz: b573849cfa9518bd0e4d3e537312fc2b10dfbc867480b29dd4a75f421caedde8502e9a23493ddbc6580e90e20ae9457ab09fe24003f043df1394ca04996fe5e6
7
- data.tar.gz: 6fa3f35aeeb5eb5ab7d4b1fa155769ea93a6295781a786286f3932c88b6f5e3aa3eb85df7d39d62e574726ada59c1f9f5316ff6c6cf32385e26c68d36cb2be96
6
+ metadata.gz: 9a4ec3560981190103c77af50128e9f54eee8360fb989203608028c9e5eb9ae56b192d3302f29466ac63884fa8a9b52802531b4310ca908eb0a4fa7a17eec02c
7
+ data.tar.gz: 16114fa99ff6491b7b247721e5119f5d997ea01b14f8951d074a95551a1999d70aa4941cbcd145be681847777251469a29aec39f46ec3dc697e72e4d0f900b0e
@@ -198,18 +198,32 @@ class CfnParser
198
198
  (str.slice(0).downcase + str[1..(str.length)]).gsub /-/, '_'
199
199
  end
200
200
 
201
+ ##
202
+ # strip any characters that are legal in a resource name that
203
+ # are going to make for a legal character in a ruby class name
204
+ def clean_module_name(module_name)
205
+ module_name.gsub /[\-@]/, ''
206
+ end
207
+
208
+ def map_non_aws_resource_name_to_class_name(module_names)
209
+ # this is a little hacky. we've been ignoring Custom so more for
210
+ # backward compat. for Alexa and other transformed resources just jam the whole
211
+ # thing together
212
+ if module_names.first == 'Custom'
213
+ first_module_index = 1
214
+ else
215
+ first_module_index = 0
216
+ end
217
+ module_names[first_module_index..-1].reduce('') do |class_name, module_name|
218
+ class_name + initial_upper(clean_module_name(module_name))
219
+ end
220
+ end
221
+
201
222
  def generate_resource_class_from_type(type_name)
202
223
  resource_class = Class.new(ModelElement)
203
224
 
204
225
  module_names = type_name.split('::')
205
- if module_names.first == 'Custom'
206
- custom_resource_class_name = initial_upper(module_names[1])
207
- begin
208
- resource_class = Object.const_get custom_resource_class_name
209
- rescue NameError
210
- Object.const_set(custom_resource_class_name, resource_class)
211
- end
212
- elsif module_names.first == 'AWS'
226
+ if module_names.first == 'AWS'
213
227
  begin
214
228
  module_constant = AWS.const_get(module_names[1])
215
229
  rescue NameError
@@ -218,7 +232,12 @@ class CfnParser
218
232
  end
219
233
  module_constant.const_set(module_names[2], resource_class)
220
234
  else
221
- raise "Unknown namespace in resource type: #{module_names.first}"
235
+ custom_resource_class_name = map_non_aws_resource_name_to_class_name(module_names)
236
+ begin
237
+ resource_class = Object.const_get custom_resource_class_name
238
+ rescue NameError
239
+ Object.const_set(custom_resource_class_name, resource_class)
240
+ end
222
241
  end
223
242
  resource_class
224
243
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cfn-model
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.8
4
+ version: 0.4.9
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eric Kascic
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-11-29 00:00:00.000000000 Z
11
+ date: 2019-12-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rubocop