class Puppet::Pops::Types::Enumeration

The Enumeration class provides default Enumerable::Enumerator creation for Puppet Programming Language runtime objects that supports the concept of enumeration.

Public Class Methods

enumerator(o) click to toggle source

Produces an Enumerable::Enumerator for Array, Hash, Integer, Integer Range, and String.

# File lib/puppet/pops/types/enumeration.rb, line 7
def self.enumerator(o)
  @@singleton ||= new
  @@singleton.enumerator(o)
end

Public Instance Methods

enumerator(o) click to toggle source

Produces an Enumerator for Array, Hash, Integer, Integer Range, and String.

# File lib/puppet/pops/types/enumeration.rb, line 14
def enumerator(o)
  case o
  when String
    x = o.chars
    # Ruby 1.8.7 returns Enumerable::Enumerator, Ruby 1.8.9 Enumerator, and 2.0.0 an Array
    x.is_a?(Array) ? x.each : x
  when Integer
    o.times
  when Array
    o.each
  when Hash
    o.each
  when Puppet::Pops::Types::PIntegerType
    # Not enumerable if representing an infinite range
    return nil if o.to.nil? || o.from.nil?
    o.each
  else
    nil
  end
end