Module: Class::Enum::ClassMethods

Defined in:
lib/class/enum.rb

Instance Method Summary collapse

Instance Method Details

#fetch(name) ⇒ Object #fetch(name, default) ⇒ Object

Overloads:

  • #fetch(name) ⇒ Object

    Returns a enum field for the given name. If the name can’t be found, it will raise an KeyError exception

    Parameters:

    • name (#to_sym)

    Raises:

    • (KeyError)

      If the name can’t be found

  • #fetch(name, default) ⇒ Object

    Returns a enum field for the given name. If the name can’t be found, the given default will be returned

    Parameters:

    • name (#to_sym)
    • default


112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/class/enum.rb', line 112

def fetch(*args)
  case args.length
  when 1
    name = args[0]
    if key?(name)
      value(name)
    else
      raise KeyError, "key not found: #{name.inspect}"
    end
  when 2
    name = args[0]
    default = args[1]
    if key?(name)
      value(name)
    else
      default
    end
  else
    raise ArgumentError, "Invalid arguments length"
  end
end

#key?(name) ⇒ Boolean

Checks a field of given name exists You can also do like ‘Animal::DOG.instance_of?(Animal)`

Parameters:

  • name (#to_sym)

Returns:

  • (Boolean)


61
62
63
64
# File 'lib/class/enum.rb', line 61

def key?(name)
  name = name.to_sym
  @enum_fields.key?(name)
end

#keysArray<Symbol>

Gets an array of enum field names

Returns:

  • (Array<Symbol>)

    (copied) An array of enum field names



92
93
94
# File 'lib/class/enum.rb', line 92

def keys
  @enum_fields.keys
end

#to_hHash{Symbol, Object}

Gets an hash of enum fields

Returns:

  • (Hash{Symbol, Object})

    (copied) An hash of enum fields



98
99
100
# File 'lib/class/enum.rb', line 98

def to_h
  @enum_fields.dup
end

#value(name) ⇒ Object

Gets a field by given name You can also do like ‘Animal::DOG`

Parameters:

  • name (#to_sym)

Returns:

  • A enum field with given name. If not exists, nil



79
80
81
# File 'lib/class/enum.rb', line 79

def value(name)
  @enum_fields[name.to_sym]
end

#value?(obj) ⇒ Boolean

Checks given value is a field of this enum

Parameters:

  • obj

Returns:

  • (Boolean)


70
71
72
# File 'lib/class/enum.rb', line 70

def value?(obj)
  @enum_fields.value?(obj)
end

#valuesArray Also known as: to_a

Gets an array of enum fields

Returns:

  • (Array)

    (copied) An array of enum fields



85
86
87
# File 'lib/class/enum.rb', line 85

def values
  @enum_fields.values
end