class Aws::Templates::Utils::Parametrized::Transformation::AsHash

Convert input into hash

Input value can be anything implementing :to_hash method.

Example

class Piece
  include Aws::Templates::Utils::Parametrized

  parameter :param, :transform => as_hash
  parameter :param2,
    transform: as_hash {
      value name: :number,
        description: 'Number',
        constraint: not_nil,
        transform: as_integer
    }
end

i = Piece.new
i.param # => nil
i = Piece.new(:param => [[1,2]])
i.param # => {1=>2}
i = Piece.new(:param2 => [[1,'3']])
i.param # => {1=>3}

Attributes

key_parameter[R]
value_parameter[R]

Public Class Methods

new(klass = nil, &blk) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 48
def initialize(klass = nil, &blk)
  @klass = klass
  instance_eval(&blk) if blk
end

Public Instance Methods

key(opts) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 40
def key(opts)
  @key_parameter = _create_parameter(opts)
end
value(opts) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 44
def value(opts)
  @value_parameter = _create_parameter(opts)
end

Protected Instance Methods

_process_value(parameter, instance, value) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 68
def _process_value(parameter, instance, value)
  return value if parameter.nil?
  parameter.process_value(instance, value)
end
transform(_, value, instance) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 55
def transform(_, value, instance)
  return if value.nil?

  Hash[
    Hash[value].map do |k, v|
      [
        _process_value(@key_parameter, instance, k),
        _process_value(@value_parameter, instance, v)
      ]
    end
  ]
end

Private Instance Methods

_create_parameter(opts) click to toggle source
# File lib/aws/templates/utils/parametrized/transformation/as_hash.rb, line 75
def _create_parameter(opts)
  Parametrized::Parameter.new(
    opts[:name],
    @klass,
    description: opts[:description],
    transform: opts[:transform],
    constraint: opts[:constraint]
  )
end