class Aws::Templates::Utils::Parametrized::Transformation::AsChain
Apply several transformation sequentially
Useful when a few transformations need to be applied to a single value to get the final result
Example¶ ↑
class Piece include Aws::Templates::Utils::Parametrized parameter :param, transform: as_chain( as_hash, as_object(Aws::Templates::Utils::AsNamed) ) end i = Piece.new(param: [:name, 'Rex']) i.param.name # => 'Rex'
Attributes
components[R]
Public Class Methods
new(components)
click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_chain.rb, line 31 def initialize(components) @components = _check_components(components) end
Protected Instance Methods
transform(parameter, value, instance)
click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_chain.rb, line 37 def transform(parameter, value, instance) return if value.nil? components.inject(value) { |acc, elem| instance.instance_exec(parameter, acc, &elem) } end
Private Instance Methods
_check_components(components)
click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_chain.rb, line 44 def _check_components(components) result = components.to_a invalid_components = result.reject { |component| component.respond_to?(:to_proc) } raise "Invalid components: #{invalid_components}" unless invalid_components.empty? result end