class Aws::Templates::Utils::Contextualized::Filter::Chain
Chain
filters
The filter chains all passed filters to have chained filter semantics.
Example¶ ↑
class Piece include Aws::Templates::Utils::Contextualized contextualize filter(:copy) & filter(:remove, :c) & filter(:override, a: 12, b: 15) end i = Piece.new opts = Options.new(c: { e: 1 }) opts.filter(i.filter) # => { a: 12, b: 15 }
Attributes
filters[R]
Public Class Methods
new(*flts)
click to toggle source
# File lib/aws/templates/utils/contextualized/filter/chain.rb, line 30 def initialize(*flts) wrong_objects = flts.reject { |f| f.respond_to?(:to_proc) } unless wrong_objects.empty? raise( "The following objects are not filters: #{wrong_objects.inspect}" ) end @filters = flts.flat_map { |f| _as_flattened_filters(f) } end
Public Instance Methods
filter(options, memo, instance)
click to toggle source
# File lib/aws/templates/utils/contextualized/filter/chain.rb, line 41 def filter(options, memo, instance) filters.inject(memo) { |acc, elem| instance.instance_exec(options, acc, &elem) } end
Private Instance Methods
_as_flattened_filters(flt)
click to toggle source
# File lib/aws/templates/utils/contextualized/filter/chain.rb, line 47 def _as_flattened_filters(flt) return flt unless flt.is_a?(self.class) flt.filters.flat_map { |obj| _as_flattened_filters(obj) } end