Class: Enum
- Inherits:
-
Object
- Object
- Enum
- Extended by:
- Enumerable
- Includes:
- LiteralEnums::Transitions
- Defined in:
- lib/enum.rb
Class Attribute Summary collapse
-
.members ⇒ Object
readonly
Returns the value of attribute members.
Instance Attribute Summary collapse
-
#name ⇒ Object
(also: #inspect)
readonly
Returns the value of attribute name.
-
#value ⇒ Object
readonly
Returns the value of attribute value.
Class Method Summary collapse
- .cast(value) ⇒ Object
- .const_missing(name) ⇒ Object
- .each(&block) ⇒ Object
- .inherited(child) ⇒ Object
- .method_missing(name, *args, **kwargs, &block) ⇒ Object
- .values ⇒ Object
Instance Method Summary collapse
-
#initialize(name, value) ⇒ Enum
constructor
A new instance of Enum.
Methods included from LiteralEnums::Transitions
Constructor Details
#initialize(name, value) ⇒ Enum
Returns a new instance of Enum.
9 10 11 12 13 |
# File 'lib/enum.rb', line 9 def initialize(name, value) @short_name = name.to_s.gsub(/([a-z])([A-Z])/, '\1_\2').downcase! @name = "#{self.class.name}::#{name}" @value = value end |
Class Attribute Details
.members ⇒ Object (readonly)
Returns the value of attribute members.
16 17 18 |
# File 'lib/enum.rb', line 16 def members @members end |
Instance Attribute Details
#name ⇒ Object (readonly) Also known as: inspect
Returns the value of attribute name.
5 6 7 |
# File 'lib/enum.rb', line 5 def name @name end |
#value ⇒ Object (readonly)
Returns the value of attribute value.
5 6 7 |
# File 'lib/enum.rb', line 5 def value @value end |
Class Method Details
.cast(value) ⇒ Object
43 44 45 |
# File 'lib/enum.rb', line 43 def cast(value) @values[value] end |
.const_missing(name) ⇒ Object
32 33 34 35 |
# File 'lib/enum.rb', line 32 def const_missing(name) return super if frozen? new(name) end |
.each(&block) ⇒ Object
51 52 53 |
# File 'lib/enum.rb', line 51 def each(&block) @members.each(&block) end |
.inherited(child) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 30 |
# File 'lib/enum.rb', line 18 def inherited(child) TracePoint.new(:end) do |tp| if tp.self == child tp.self.freeze tp.disable end end.enable child.instance_eval do @values = {} @members = [] end end |
.method_missing(name, *args, **kwargs, &block) ⇒ Object
37 38 39 40 41 |
# File 'lib/enum.rb', line 37 def method_missing(name, *args, **kwargs, &block) return super if frozen? return super unless name[0] =~ /[A-Z]/ new(name, *args, **kwargs, &block) end |
.values ⇒ Object
47 48 49 |
# File 'lib/enum.rb', line 47 def values @values.keys end |