Module: Lono::Template::Dsl::Builder::Helpers::ParamHelper

Included in:
Lono::Template::Dsl::Builder::Helpers
Defined in:
lib/lono/template/dsl/builder/helpers/param_helper.rb

Instance Method Summary collapse

Instance Method Details

#conditional_parameter(name, options = {}) ⇒ Object

Creates:

1. parameter
2. condition - used to make it optional


49
50
51
52
53
54
# File 'lib/lono/template/dsl/builder/helpers/param_helper.rb', line 49

def conditional_parameter(name, options={})
  puts "DEPRECATED: Will be removed. Instead use: parameter(name, Conditional: true)"
  options = normalize_conditional_parameter_options(options)
  parameter(name, options)
  condition("Has#{name}", not!(equals(ref(name), "")))
end

#normalize_conditional_parameter_options(options) ⇒ Object

use long name to minimize method name collision



30
31
32
33
34
35
36
37
38
39
40
41
42
# File 'lib/lono/template/dsl/builder/helpers/param_helper.rb', line 30

def normalize_conditional_parameter_options(options)
  if options.is_a?(Hash)
    options.delete(:Conditional)
    options = if options.empty?
      { Default: "" }
    else
      defaults = { Default: "" }
      options.reverse_merge(defaults)
    end
  end

  options
end

#optional_ref(name) ⇒ Object



56
57
58
59
# File 'lib/lono/template/dsl/builder/helpers/param_helper.rb', line 56

def optional_ref(name)
  puts "DEPRECATED: Will be removed. Instead use: ref(name, Conditional: true)"
  if!("Has#{name}", ref(name), ref("AWS::NoValue"))
end

#parameter(*definition) ⇒ Object

Decorate the parameter method to make smarter.



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/lono/template/dsl/builder/helpers/param_helper.rb', line 5

def parameter(*definition)
  name, second, third = definition
  create_condition = true
  # medium form
  if definition.size == 2 && second.is_a?(Hash) && second[:Conditional]
    # Creates:
    #
    #    1. parameter
    #    2. condition - used to make it optional
    #
    options = normalize_conditional_parameter_options(second)
    super(name, options)
  elsif definition.size == 3 && !second.is_a?(Hash) && third.is_a?(Hash)
    options = normalize_conditional_parameter_options(third)
    options[:Default] = second # probably a String, Integer, or Float
    super(name, options)
  else
    super
    create_condition = false
  end

  condition("Has#{name}", not!(equals(ref(name), ""))) if create_condition
end