Class: SleepingKingStudios::Tools::Toolbox::ConstantMap

Inherits:
Module
  • Object
show all
Extended by:
Forwardable
Includes:
Enumerable
Defined in:
lib/sleeping_king_studios/tools/toolbox/constant_map.rb

Overview

Provides an enumerable interface for defining a group of constants.

Examples:

UserRoles = ConstantMap.new(
  GUEST: 'guest',
  USER:  'user',
  ADMIN: 'admin'
)

UserRoles::GUEST
#=> 'guest'

UserRoles.user
#=> 'user'

UserRoles.all
#=> { :GUEST => 'guest', :USER => 'user', :ADMIN => 'admin' }

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(constants) ⇒ ConstantMap #initialize(**constants) ⇒ ConstantMap

Returns a new instance of ConstantMap.

Overloads:

  • #initialize(constants) ⇒ ConstantMap

    Parameters:

    • constants (Hash{String, Symbol => Object})

      the constants to define.

  • #initialize(**constants) ⇒ ConstantMap

    Parameters:

    • constants (Hash{Symbol=>Object})

      the constants to define.



35
36
37
38
39
40
41
42
43
44
45
# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 35

def initialize(constants = {}, **keywords)
  super()

  @to_h = constants.merge(**keywords).transform_keys(&:to_sym).freeze

  @to_h.each do |const_name, const_value|
    const_set(const_name, const_value)

    define_reader(const_name)
  end
end

Instance Attribute Details

#to_hHash (readonly) Also known as: all

Returns The defined constants.

Returns:

  • (Hash)

    The defined constants.



88
89
90
# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 88

def to_h
  @to_h
end

Instance Method Details

#each {|key, value| ... } ⇒ Object

Iterates through the defined constants, yielding the name and value of each constant to the block.

Yield Parameters:

  • key (Symbol)

    the name of the constant.

  • value (Object)

    the value of the constant.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 55

#each_key {|key| ... } ⇒ Object

Iterates through the defined constants, yielding the name of each constant to the block.

Yield Parameters:

  • key (Symbol)

    the name of the constant.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 62

#each_pair {|key, value| ... } ⇒ Object

Iterates through the defined constants, yielding the name and value of each constant to the block.

Yield Parameters:

  • key (Symbol)

    the name of the constant.

  • value (Object)

    the value of the constant.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 68

#each_value {|value| ... } ⇒ Object

Iterates through the defined constants, yielding the value of each constant to the block.

Yield Parameters:

  • value (Object)

    the value of the constant.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 75

#freezeself

Freezes the constant map and recursively freezes every constant value.

Returns:

  • (self)

    the constant map.

See Also:



96
97
98
99
100
101
102
# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 96

def freeze
  super

  tools.hsh.deep_freeze(@to_h)

  self
end

#keysArray

Returns the names of the defined constants.

Returns:

  • (Array)

    the names of the defined constants.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 81

#valuesArray

Returns the values of the defined constants.

Returns:

  • (Array)

    the values of the defined constants.



# File 'lib/sleeping_king_studios/tools/toolbox/constant_map.rb', line 84