Sha256: 3436db941f5e5ba352d4de44429362d7b41a1f0dc29c5dc86d90cc19212b7466

Contents?: true

Size: 1.01 KB

Versions: 30

Compression:

Stored size: 1.01 KB

Contents

# frozen_string_literal: true

module Kitchen
  # An enumerator that detects the element type as it iterates and returns specific,
  # different element classes based on that type.
  #
  class TypeCastingElementEnumerator < ElementEnumeratorBase

    # Returns a factory for this enumerator
    #
    # @return [ElementEnumeratorFactory]
    #
    def self.factory
      ElementEnumeratorFactory.new(
        enumerator_class: self,
        detect_sub_element_class: true
      )
    end

    # Returns a new enumerator that returns only the specified element classes within the
    # scope of this enumerator.
    #
    # @param element_classes [Array<ElementBase>] the element classes to limit iteration to
    # @return [TypeCastingElementEnumerator]
    #
    def only(*element_classes)
      element_classes.flatten!

      TypeCastingElementEnumerator.new do |block|
        each do |element|
          next unless element_classes.include?(element.class)

          block.yield(element)
        end
      end
    end

  end
end

Version data entries

30 entries across 30 versions & 1 rubygems

Version Path
openstax_kitchen-19.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-18.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-17.1.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-17.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-16.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-15.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-14.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-13.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-12.2.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-12.1.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-12.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-11.2.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-11.1.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-11.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-10.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-9.2.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-9.1.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-9.0.0 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-8.0.1 lib/kitchen/type_casting_element_enumerator.rb
openstax_kitchen-8.0.0 lib/kitchen/type_casting_element_enumerator.rb