Sha256: efb0968aafb4063b33383b077b5a5c1604cbd3eb1d2eed249751123571c9edde

Contents?: true

Size: 576 Bytes

Versions: 10

Compression:

Stored size: 576 Bytes

Contents

module Enumerable

  # Recursively iterate over all Enumerable elements, or
  # subset given :type=>[type1, type2, ...].
  #
  #   [1, 2, 8..9].visit{ |x| x.succ }
  #   # => [2, 3, [9, 10]]
  #
  def visit(opts={}, &block)
    type = opts[:type] ? [opts[:type]].flatten : [Enumerable]
    skip = opts[:skip]

    map do |v|
      case v
      when String # b/c of 1.8
        block.call(v)
      when *type
        v.visit(opts, &block)
      else
        if skip && Enumerable === v
          v
        else
          block.call(v)
        end
      end
    end
  end

end

Version data entries

10 entries across 9 versions & 2 rubygems

Version Path
facets-glimmer-3.2.0 lib/core/facets/enumerable/visit.rb
facets-3.1.0 lib/core/facets/enumerable/visit.rb
facets-3.0.0 lib/core/facets/enumerable/visit.rb
facets-2.9.3 lib/core/facets/enumerable/visit.rb
facets-2.9.2 src/core/facets/enumerable/visit.rb
facets-2.9.2 lib/core/facets/enumerable/visit.rb
facets-2.9.1 lib/core/facets/enumerable/visit.rb
facets-2.9.0 lib/core/facets/enumerable/visit.rb
facets-2.9.0.pre.2 lib/core/facets/enumerable/visit.rb
facets-2.9.0.pre.1 lib/core/facets/enumerable/visit.rb