class Lono::Template::Strategy::Dsl::Builder::Section::Resource

Public Instance Methods

standarize(definition) click to toggle source

Type is the only required property: amzn.to/2x8W5aD

# File lib/lono/template/strategy/dsl/builder/section/resource.rb, line 12
def standarize(definition)
  first, second, third, _ = definition
  if definition.size == 1 && first.is_a?(Hash) # long form
    first # pass through
  elsif definition.size == 2 && second.is_a?(Hash) # medium form
    logical_id, attributes = first, second
    attributes.delete(:properties) if attributes[:properties].blank?
    attributes.delete("Properties") if attributes["Properties"].blank?
    { logical_id => attributes }
  elsif definition.size == 2 && second.is_a?(String) # short form with no properties
    logical_id, type = first, second
    { logical_id => {
        Type: type
    }}
  elsif definition.size == 3 && (second.is_a?(String) || second.is_a?(NilClass)) # short form
    logical_id, type, properties = first, second, third
    resource = { logical_id => {
                   Type: type
                }}

    attributes = resource.values.first

    property_mover = PropertyMover.new(resource, logical_id, properties)
    property_mover.move!

    attributes["Properties"] = properties unless properties.empty?
    resource
  else # Dont understand this form
    raise "Invalid form provided. definition #{definition.inspect}"
  end
end
template() click to toggle source
# File lib/lono/template/strategy/dsl/builder/section/resource.rb, line 7
def template
  camelize(standarize(@definition))
end