File: //usr/lib/ruby/site_ruby/1.8/puppet/pops/types/enumeration.rb
# The Enumeration class provides default Enumerable::Enumerator creation for Puppet Programming Language
# runtime objects that supports the concept of enumeration.
#
class Puppet::Pops::Types::Enumeration
# Produces an Enumerable::Enumerator for Array, Hash, Integer, Integer Range, and String.
#
def self.enumerator(o)
@@singleton ||= new
@@singleton.enumerator(o)
end
# Produces an Enumerator for Array, Hash, Integer, Integer Range, and String.
#
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
end