Sha256: 0f2423045158e4bd9a269783592e9cc4ba80686a8d866c1093e122d137211f30

Contents?: true

Size: 1.19 KB

Versions: 11

Compression:

Stored size: 1.19 KB

Contents

# Implements:
#
#   template - uses @definition to build a CloudFormation template section
#
class Lono::Template::Dsl::Builder
  class Output < Base
    def template
      camelize(standarize(@definition))
    end

    # Value is the only required property: https://amzn.to/2xbhmk3
    def standarize(definition)
      first, second, _ = definition
      if definition.size == 1 && first.is_a?(Hash) # long form
        first # pass through
      elsif definition.size == 2 && second.is_a?(Hash) # medium form
        if second.key?(:value)
          logical_id, properties = first, second
        else
          logical_id = first
          properties = {value: second}
        end
        { logical_id => properties }
      elsif definition.size == 2 && (second.is_a?(String) || second.nil?) # short form
        logical_id = first
        properties = second.is_a?(String) ? { value: second } : {}
        { logical_id => properties }
      elsif definition.size == 1
        logical_id = first.to_s
        properties = {value: ref(logical_id) }
        { logical_id => properties }
      else # I dont know what form
        raise "Invalid form provided. definition #{definition.inspect}"
      end
    end
  end
end

Version data entries

11 entries across 11 versions & 1 rubygems

Version Path
lono-5.3.4 lib/lono/template/dsl/builder/output.rb
lono-5.3.3 lib/lono/template/dsl/builder/output.rb
lono-5.3.2 lib/lono/template/dsl/builder/output.rb
lono-5.3.1 lib/lono/template/dsl/builder/output.rb
lono-5.3.0 lib/lono/template/dsl/builder/output.rb
lono-5.2.8 lib/lono/template/dsl/builder/output.rb
lono-5.2.7 lib/lono/template/dsl/builder/output.rb
lono-5.2.6 lib/lono/template/dsl/builder/output.rb
lono-5.2.5 lib/lono/template/dsl/builder/output.rb
lono-5.2.4 lib/lono/template/dsl/builder/output.rb
lono-5.2.3 lib/lono/template/dsl/builder/output.rb