class Aws::Templates::Utils::Contextualized::Filter::Override

Override specified keys in options hash

The filter performs merge the hash passed at initialization with options hash. Either hash itself or block returning a hash can be specified. The block will be evaluated in instance context so all instance methods are accessible.

Example

class Piece
  include Aws::Templates::Utils::Contextualized

  contextualize filter(:copy) & filter(:override, a: 12, b: 15, c: { d: 30 })
end

i = Piece.new
opts = Options.new(c: { e: 1 })
opts.filter(i.filter) # => { a: 12, b: 15, c: { d: 30, e: 1 } }

Attributes

override[R]

Public Class Methods

new(override = nil, &override_block) click to toggle source
# File lib/aws/templates/utils/contextualized/filter/override.rb, line 32
def initialize(override = nil, &override_block)
  @override = _check_override_type(override || override_block)
end

Public Instance Methods

filter(_, memo, instance) click to toggle source
# File lib/aws/templates/utils/contextualized/filter/override.rb, line 36
def filter(_, memo, instance)
  Utils.merge(
    memo,
    if override.respond_to?(:to_hash)
      override
    elsif override.respond_to?(:to_proc)
      instance.instance_eval(&override)
    end
  )
end

Private Instance Methods

_check_override_type(ovrr) click to toggle source
# File lib/aws/templates/utils/contextualized/filter/override.rb, line 49
def _check_override_type(ovrr)
  raise "Wrong override value: #{ovrr.inspect}" unless _proper_override_type?(ovrr)
  ovrr
end
_proper_override_type?(ovrr) click to toggle source
# File lib/aws/templates/utils/contextualized/filter/override.rb, line 54
def _proper_override_type?(ovrr)
  ovrr.respond_to?(:to_hash) || ovrr.respond_to?(:to_proc)
end