class Chef::ChefFS::Parallelizer::FlattenEnumerable

Attributes

enum[R]
levels[R]

Public Class Methods

new(enum, levels = nil) click to toggle source
# File lib/chef/chef_fs/parallelizer/flatten_enumerable.rb, line 7
def initialize(enum, levels = nil)
  @enum = enum
  @levels = levels
end

Public Instance Methods

each(&block) click to toggle source
# File lib/chef/chef_fs/parallelizer/flatten_enumerable.rb, line 15
def each(&block)
  enum.each do |value|
    flatten(value, levels, &block)
  end
end

Private Instance Methods

flatten(value, levels) { |value| ... } click to toggle source
# File lib/chef/chef_fs/parallelizer/flatten_enumerable.rb, line 23
def flatten(value, levels, &block)
  if levels != 0 && value.respond_to?(:each) && !value.is_a?(String)
    value.each do |child|
      flatten(child, levels.nil? ? levels : levels - 1, &block)
    end
  else
    yield(value)
  end
end