Class: CfnCamelizer
- Inherits:
-
Object
- Object
- CfnCamelizer
- Extended by:
- Memoist
- Defined in:
- lib/cfn_camelizer.rb,
lib/cfn_camelizer/version.rb
Constant Summary collapse
- VERSION =
"0.3.0"
Class Method Summary collapse
- .camelize(value, resource_type = nil) ⇒ Object
- .camelize_key(k, parent_keys = [], resource_type = nil) ⇒ Object
- .camelizer_yaml ⇒ Object
- .pascalize(value) ⇒ Object
- .passthrough?(k, parent_keys) ⇒ Boolean
- .resource_map(resource_type) ⇒ Object
-
.special_map ⇒ Object
Some keys have special mappings.
- .transform(value, parent_keys = [], resource_type = nil) ⇒ Object
Class Method Details
.camelize(value, resource_type = nil) ⇒ Object
53 54 55 56 57 58 59 |
# File 'lib/cfn_camelizer.rb', line 53 def camelize(value, resource_type=nil) return value if value.is_a?(Integer) value = value.to_s.camelize v = special_map[value] || value # after the special_keys map resource_map(resource_type)[v] || v end |
.camelize_key(k, parent_keys = [], resource_type = nil) ⇒ Object
31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
# File 'lib/cfn_camelizer.rb', line 31 def camelize_key(k, parent_keys=[], resource_type=nil) k = k.to_s if passthrough?(k, parent_keys) k # pass through untouch elsif parent_keys.last == "EventPattern" # top-level k.dasherize elsif parent_keys.include?("EventPattern") # Any keys at 2nd level under EventPattern will be pascalized pascalize(k) else camelize(k, resource_type) end end |
.camelizer_yaml ⇒ Object
77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/cfn_camelizer.rb', line 77 def camelizer_yaml # default path = File.("camelizer.yml", File.dirname(__FILE__)) default = YAML.load_file(path) # project specific path = "#{Dir.pwd}/configs/camelizer.yml" if File.exist?(path) project = YAML.load_file(path) default.deep_merge(project) else default end end |
.pascalize(value) ⇒ Object
61 62 63 64 65 66 |
# File 'lib/cfn_camelizer.rb', line 61 def pascalize(value) new_value = value.camelize first_char = new_value[0..0].downcase new_value[0] = first_char new_value end |
.passthrough?(k, parent_keys) ⇒ Boolean
46 47 48 49 50 51 |
# File 'lib/cfn_camelizer.rb', line 46 def passthrough?(k, parent_keys) # Do not transform keys under certain parent keys or keys that contain - or / passthrough = camelizer_yaml["passthrough_parent_keys"] intersection = parent_keys & passthrough !intersection.empty? || k.include?('-') || k.include?('/') end |
.resource_map(resource_type) ⇒ Object
73 74 75 |
# File 'lib/cfn_camelizer.rb', line 73 def resource_map(resource_type) camelizer_yaml["resource_keys"][resource_type] || {} end |
.special_map ⇒ Object
Some keys have special mappings
69 70 71 |
# File 'lib/cfn_camelizer.rb', line 69 def special_map camelizer_yaml["special_keys"] end |
.transform(value, parent_keys = [], resource_type = nil) ⇒ Object
12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/cfn_camelizer.rb', line 12 def transform(value, parent_keys=[], resource_type=nil) case value when Array value.map { |v| transform(v, parent_keys, resource_type) } when Hash if value.keys.include?(:type) resource_type ||= value[:type] end initializer = value.map do |k, v| new_key = camelize_key(k, parent_keys, resource_type) [new_key, transform(v, parent_keys+[new_key], resource_type)] end Hash[initializer] else value # do not transform values end end |