Class: Mfp::Enum::Value

Inherits:
Object
  • Object
show all
Includes:
Comparable
Defined in:
lib/mfp/enum.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(owner, name, value) ⇒ Value

Returns a new instance of Value.



10
11
12
13
14
15
# File 'lib/mfp/enum.rb', line 10

def initialize(owner, name, value)
  @owner = owner
  @name  = name.to_sym
  @value = Integer(value)
  freeze
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(name) ⇒ Object

everything else Integer can do



38
39
40
# File 'lib/mfp/enum.rb', line 38

def method_missing(name, *, &)
  @value.respond_to?(name) ? @value.public_send(name, *, &) : super
end

Instance Attribute Details

#nameObject (readonly)

Returns the value of attribute name.



8
9
10
# File 'lib/mfp/enum.rb', line 8

def name
  @name
end

#valueObject (readonly)

Returns the value of attribute value.



8
9
10
# File 'lib/mfp/enum.rb', line 8

def value
  @value
end

Instance Method Details

#<=>(other) ⇒ Object



29
30
31
32
# File 'lib/mfp/enum.rb', line 29

def <=>(other)
  c = coerced(other)
  c.nil? ? nil : @value <=> c
end

#==(other) ⇒ Object Also known as: eql?

==, case/when, hashing, ordering



24
# File 'lib/mfp/enum.rb', line 24

def ==(other)  = @value == coerced(other)

#===(other) ⇒ Object



25
# File 'lib/mfp/enum.rb', line 25

def ===(other) = @value == coerced(other)

#coerce(other) ⇒ Object

arithmetic when the Value is on the right



35
# File 'lib/mfp/enum.rb', line 35

def coerce(other) = [other, @value]

#hashObject



27
# File 'lib/mfp/enum.rb', line 27

def hash = @value.hash

#inspectObject



46
# File 'lib/mfp/enum.rb', line 46

def inspect = @name.to_s

#respond_to_missing?(name, include_private = false) ⇒ Boolean

Returns:

  • (Boolean)


42
43
44
# File 'lib/mfp/enum.rb', line 42

def respond_to_missing?(name, include_private = false)
  @value.respond_to?(name, include_private) || super
end

#to_iObject



19
# File 'lib/mfp/enum.rb', line 19

def to_i        = @value

#to_intObject

implicit integer coercion



18
# File 'lib/mfp/enum.rb', line 18

def to_int      = @value

#to_json(*_a) ⇒ Object



21
# File 'lib/mfp/enum.rb', line 21

def to_json(*_a) = @value.to_json

#to_sObject



20
# File 'lib/mfp/enum.rb', line 20

def to_s        = @value.to_s