Class: Lono::Template::Dsl::Builder::Parameter

Inherits:
Base
  • Object
show all
Defined in:
lib/lono/template/dsl/builder/parameter.rb

Constant Summary

Constants included from Fn

Fn::FUNCTIONS

Instance Method Summary collapse

Methods inherited from Base

#camelize, #initialize

Methods included from Helper

#current_region, #extract_scripts, #indent, #partial, #partial_exist?, #scripts_name, #scripts_s3_path, #template_params, #template_s3_path, #user_data

Methods included from Fn

#fn, #fn_id, #get_att, #get_azs, included, #join, #ref, #sub

Constructor Details

This class inherits a constructor from Lono::Template::Dsl::Builder::Base

Instance Method Details

#add_required(attributes) ⇒ Object



29
30
31
32
33
# File 'lib/lono/template/dsl/builder/parameter.rb', line 29

def add_required(attributes)
  properties = attributes.values.first
  properties[:type] ||= 'String'
  attributes
end

#num_or_str?(o) ⇒ Boolean

Returns:

  • (Boolean)


35
36
37
# File 'lib/lono/template/dsl/builder/parameter.rb', line 35

def num_or_str?(o)
  o.is_a?(Float) || o.is_a?(Integer) || o.is_a?(String)
end

#standarize(definition) ⇒ Object

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



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lono/template/dsl/builder/parameter.rb', line 12

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
    logical_id, properties = first, second
    { logical_id => properties }
  elsif (definition.size == 2 && num_or_str?(second)) || # short form
        definition.size == 1
    logical_id = first
    properties = num_or_str?(second) ? { default: second } : {}
    { logical_id => properties }
  else # I dont know what form
    raise "Invalid form provided. definition #{definition.inspect}"
  end
end

#templateObject



7
8
9
# File 'lib/lono/template/dsl/builder/parameter.rb', line 7

def template
  camelize(add_required(standarize(@definition)))
end