Module: CfnDsl::Functions
- Included in:
- CloudFormation, JSONable, JSONable
- Defined in:
- lib/cfndsl/jsonable.rb
Overview
These functions are available anywhere inside a block for a JSONable object.
Constant Summary collapse
- FN_SUB_SCANNER =
Equivalent to the CloudFormation template built in function Fn::Sub
/\$\{([^!}]*)\}/.freeze
Instance Method Summary collapse
-
#FnAnd(array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::And.
-
#FnBase64(value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Base64.
-
#FnCidr(ipblock, count, sizemask) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Cidr.
-
#FnEquals(value1, value2) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::Equals.
-
#FnFindInMap(map, key, value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::FindInMap.
-
#FnGetAtt(logical_resource, attribute) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::GetAtt.
-
#FnGetAZs(region) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::GetAZs.
-
#FnIf(condition_name, true_value, false_value) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::If.
-
#FnImportValue(value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::ImportValue.
-
#FnJoin(string, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Join.
-
#FnNot(value) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::Not.
-
#FnOr(array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Or.
-
#FnSelect(index, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Select.
-
#FnSplit(string, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Split.
- #FnSub(string, substitutions = nil) ⇒ Object
-
#Ref(value) ⇒ Object
Equivalent to the CloudFormation template built in function Ref.
Instance Method Details
#FnAnd(array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::And
47 48 49 50 51 |
# File 'lib/cfndsl/jsonable.rb', line 47 def FnAnd(array) raise 'The array passed to Fn::And must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10 Fn.new('And', array) end |
#FnBase64(value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Base64
17 18 19 |
# File 'lib/cfndsl/jsonable.rb', line 17 def FnBase64(value) Fn.new('Base64', value) end |
#FnCidr(ipblock, count, sizemask) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Cidr
108 109 110 |
# File 'lib/cfndsl/jsonable.rb', line 108 def FnCidr(ipblock, count, sizemask) Fn.new('Cidr', [ipblock, count, sizemask]) end |
#FnEquals(value1, value2) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::Equals
54 55 56 |
# File 'lib/cfndsl/jsonable.rb', line 54 def FnEquals(value1, value2) Fn.new('Equals', [value1, value2]) end |
#FnFindInMap(map, key, value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::FindInMap
22 23 24 |
# File 'lib/cfndsl/jsonable.rb', line 22 def FnFindInMap(map, key, value) Fn.new('FindInMap', [map, key, value]) end |
#FnGetAtt(logical_resource, attribute) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::GetAtt
27 28 29 |
# File 'lib/cfndsl/jsonable.rb', line 27 def FnGetAtt(logical_resource, attribute) Fn.new('GetAtt', [logical_resource, attribute], [logical_resource]) end |
#FnGetAZs(region) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::GetAZs
32 33 34 |
# File 'lib/cfndsl/jsonable.rb', line 32 def FnGetAZs(region) Fn.new('GetAZs', region) end |
#FnIf(condition_name, true_value, false_value) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::If
59 60 61 |
# File 'lib/cfndsl/jsonable.rb', line 59 def FnIf(condition_name, true_value, false_value) Fn.new('If', [condition_name, true_value, false_value], [], [condition_name]) end |
#FnImportValue(value) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::ImportValue
103 104 105 |
# File 'lib/cfndsl/jsonable.rb', line 103 def FnImportValue(value) Fn.new('ImportValue', value) end |
#FnJoin(string, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Join
37 38 39 |
# File 'lib/cfndsl/jsonable.rb', line 37 def FnJoin(string, array) Fn.new('Join', [string, array]) end |
#FnNot(value) ⇒ Object
Equivalent to the Cloudformation template built in function Fn::Not
64 65 66 67 68 69 70 |
# File 'lib/cfndsl/jsonable.rb', line 64 def FnNot(value) if value.is_a?(Array) Fn.new('Not', value) else Fn.new('Not', [value]) end end |
#FnOr(array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Or
73 74 75 76 77 |
# File 'lib/cfndsl/jsonable.rb', line 73 def FnOr(array) raise 'The array passed to Fn::Or must have at least 2 elements and no more than 10' if !array || array.count < 2 || array.count > 10 Fn.new('Or', array) end |
#FnSelect(index, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Select
80 81 82 |
# File 'lib/cfndsl/jsonable.rb', line 80 def FnSelect(index, array) Fn.new('Select', [index, array]) end |
#FnSplit(string, array) ⇒ Object
Equivalent to the CloudFormation template built in function Fn::Split
42 43 44 |
# File 'lib/cfndsl/jsonable.rb', line 42 def FnSplit(string, array) Fn.new('Split', [string, array]) end |
#FnSub(string, substitutions = nil) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 |
# File 'lib/cfndsl/jsonable.rb', line 87 def FnSub(string, substitutions = nil) raise ArgumentError, 'The first argument passed to Fn::Sub must be a string' unless string.is_a? String refs = string.scan(FN_SUB_SCANNER).map(&:first).map { |r| r.split('.', 2).first } if substitutions raise ArgumentError, 'The second argument passed to Fn::Sub must be a Hash' unless substitutions.is_a? Hash refs -= substitutions.keys.map(&:to_s) Fn.new('Sub', [string, substitutions], refs) else Fn.new('Sub', string, refs) end end |
#Ref(value) ⇒ Object
Equivalent to the CloudFormation template built in function Ref
12 13 14 |
# File 'lib/cfndsl/jsonable.rb', line 12 def Ref(value) RefDefinition.new(value) end |