lib/renum/enumerated_value.rb in renum-1.0.2 vs lib/renum/enumerated_value.rb in renum-1.2.0
- old
+ new
@@ -1,16 +1,22 @@
require 'forwardable'
module Renum
+
+ # This is the superclass of all enumeration classes.
+ # An enumeration class is Enumerable over its values and also delegates []
+ # to the values array.
+ # Values are also comparable, sorting into the order in which they're declared.
class EnumeratedValue
class << self
include Enumerable
extend Forwardable
def_delegators :values, :each, :[]
+ # Returns an array of values in the order they're declared.
def values
@values ||= []
end
end
@@ -23,13 +29,17 @@
@name = name.to_s
@index = self.class.values.size
self.class.values << self
end
+ # Returns the fully qualified constant referring to this value.
+ # Don't override this if you're using Renum with the constantize_attribute
+ # plugin, which relies on this behavior.
def to_s
"#{self.class}::#{name}"
end
+ # Sorts enumerated values into the order in which they're declared.
def <=> other
index <=> other.index
end
end
\ No newline at end of file