cfn-model 0.4.8 → 0.4.9

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: 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