blob: 5146b607de74576a197ffa8e296ca5449c40aa04 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
|
class Chef
module ChefFS
class Parallelizer
class FlattenEnumerable
include Enumerable
def initialize(enum, levels = nil)
@enum = enum
@levels = levels
end
attr_reader :enum, :levels
def each(&block)
enum.each do |value|
flatten(value, levels, &block)
end
end
private
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
end
end
end
end
|