class LiteEnum

Public Class Methods

new(*members) click to toggle source

Public: Initialize an enum.

members - the array of enum members. May contain a hash of options:

:start   - the number of first enum member. Defaults to 1.

Examples

FRUITS = LiteEnum.new(:apple, :orange, :kiwi)
Calls superclass method
# File lib/lite_enum.rb, line 12
def initialize(*members)
  super({})

  # Support for explicit values
  if members.length == 1 && members[0].is_a?(Hash)
    return update members[0]
  end

  options = members.extract_options!
  start = options.fetch(:start) { 1 }

  update Hash[members.zip(start..members.count + start)]
end

Public Instance Methods

[](id_or_value) click to toggle source

Public: Access the number/value of member.

ids_or_value - number or value of member.

Returns value if number was provided, and number if value was provided.

# File lib/lite_enum.rb, line 31
def [](id_or_value)
  fetch(id_or_value) { key(id_or_value) }
end
except(*keys) click to toggle source

Public: Create a subset of enum, preserve all items but specified ones.

# File lib/lite_enum.rb, line 48
def except(*keys)
  dup.tap do |d|
    d.__getobj__.delete_if { |k| keys.include?(k) }
  end
end
only(*keys) click to toggle source

Public: Create a subset of enum, only include specified keys.

# File lib/lite_enum.rb, line 41
def only(*keys)
  dup.tap do |d|
    d.__getobj__.keep_if { |k| keys.include?(k) }
  end
end
valid?(member) click to toggle source

Public: Check if supplied member is valid.

# File lib/lite_enum.rb, line 36
def valid?(member)
  has_key?(member)
end