Class: Maintain::Value

Inherits:
Object
  • Object
show all
Defined in:
lib/maintain/value.rb

Direct Known Subclasses

BitmaskValue, IntegerValue

Instance Method Summary collapse

Constructor Details

#initialize(state, value = nil) ⇒ Value

Returns a new instance of Value.



32
33
34
35
# File 'lib/maintain/value.rb', line 32

def initialize(state, value = nil)
  @state = state
  @value = value
end

Dynamic Method Handling

This class handles dynamic methods through the method_missing method

#method_missing(method, *args) ⇒ Object (private)



71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
# File 'lib/maintain/value.rb', line 71

def method_missing(method, *args)
  if (method.to_s =~ /^(.+)\?$/)
    check = $1.to_sym
    if @state.states.has_key?(check)
      self.class.class_eval "        def \#{method}\n          self == \#{check.inspect}\n        end\n      EOC\n      # Calling `method` on ourselves fails. Something to do w/subclasses. Meh.\n      return self == $1.to_sym\n    elsif aggregates = @state.aggregates[check]\n      self.class.class_eval <<-EOC\n        def \#{method}\n          @state.aggregates[\#{check.inspect}].include?(@value)\n        end\n      EOC\n      return aggregates.include?(@value)\n    end\n  end\n  super\nend\n"

Instance Method Details

#<(value) ⇒ Object



11
12
13
# File 'lib/maintain/value.rb', line 11

def <(value)
  compare_value < compare_value_for(value)
end

#<=(value) ⇒ Object



15
16
17
# File 'lib/maintain/value.rb', line 15

def <=(value)
  compare_value <= compare_value_for(value)
end

#==(value) ⇒ Object



19
20
21
# File 'lib/maintain/value.rb', line 19

def ==(value)
  compare_value == compare_value_for(value)
end

#===(value) ⇒ Object



23
24
25
26
# File 'lib/maintain/value.rb', line 23

def ===(value)
  raise "#{compare_value} #{compare_value_for(value)}"
  (compare_value == compare_value_for(value)) || super
end

#>(value) ⇒ Object



3
4
5
# File 'lib/maintain/value.rb', line 3

def >(value)
  compare_value > compare_value_for(value)
end

#>=(value) ⇒ Object



7
8
9
# File 'lib/maintain/value.rb', line 7

def >=(value)
  compare_value >= compare_value_for(value)
end

#classObject



28
29
30
# File 'lib/maintain/value.rb', line 28

def class
  value.class
end

#inspectObject



37
38
39
# File 'lib/maintain/value.rb', line 37

def inspect
  value.inspect
end

#nameObject



41
42
43
# File 'lib/maintain/value.rb', line 41

def name
  @value.to_s
end

#nil?Boolean

Returns:

  • (Boolean)


45
46
47
# File 'lib/maintain/value.rb', line 45

def nil?
  value.nil?
end

#set_value(value) ⇒ Object



49
50
51
52
# File 'lib/maintain/value.rb', line 49

def set_value(value)
  @compare_value = nil
  @value = state_name_for(value)
end

#to_sObject



54
55
56
# File 'lib/maintain/value.rb', line 54

def to_s
  value.to_s
end

#valueObject



58
59
60
# File 'lib/maintain/value.rb', line 58

def value
  @value
end