Module: ClassyEnum::Collection::ClassMethods
- Includes:
- Enumerable
- Defined in:
- lib/classy_enum/collection.rb
Instance Method Summary collapse
-
#each ⇒ Object
Iterates over instances of each enum in the collection.
-
#find(key = nil) ⇒ Object
(also: #detect, #[])
Finds an enum instance by symbol, string, or block.
- #inherited(klass) ⇒ Object
-
#last ⇒ Object
Returns the last enum instance in the collection.
-
#select_options ⇒ Object
Returns a 2D array for Rails select helper options.
Instance Method Details
#each ⇒ Object
Iterates over instances of each enum in the collection
Example
# Create an Enum with some elements
class Priority < ClassyEnum::Base
end
class Priority::Low < Priority; end
class Priority::Medium < Priority; end
class Priority::High < Priority; end
Priority.each do |priority|
puts priority # => 'Low', 'Medium', 'High'
end
63 64 65 |
# File 'lib/classy_enum/collection.rb', line 63 def each .each {|e| yield e.new } end |
#find(key = nil) ⇒ Object Also known as: detect, []
Finds an enum instance by symbol, string, or block.
If a block is given, it passes each entry in enum to block, and returns the first enum for which block is not false. If no enum matches, it returns nil.
Example
# Create an Enum with some elements
class Priority < ClassyEnum::Base
end
class Priority::Low < Priority; end
class Priority::Medium < Priority; end
class Priority::High < Priority; end
Priority.find(:high) # => Priority::High.new
Priority.find('high') # => Priority::High.new
Priority.find {|e| e.to_sym == :high } # => Priority::High.new
101 102 103 104 105 106 107 |
# File 'lib/classy_enum/collection.rb', line 101 def find(key=nil) if block_given? super elsif map(&:to_s).include? key.to_s super { |e| e.to_s == key.to_s } end end |
#inherited(klass) ⇒ Object
37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/classy_enum/collection.rb', line 37 def inherited(klass) if self == ClassyEnum::Base klass.class_attribute :enum_options klass. = [] else << klass klass.instance_variable_set('@index', .size) end super end |
#last ⇒ Object
Returns the last enum instance in the collection
Example
# Create an Enum with some elements
class Priority < ClassyEnum::Base
end
class Priority::Low < Priority; end
class Priority::Medium < Priority; end
class Priority::High < Priority; end
Priority.last # => Priority::High
79 80 81 |
# File 'lib/classy_enum/collection.rb', line 79 def last to_a.last end |
#select_options ⇒ Object
Returns a 2D array for Rails select helper options. Also used internally for Formtastic support
Example
# Create an Enum with some elements
class Priority < ClassyEnum::Base
end
class Priority::Low < Priority; end
class Priority::ReallyHigh < Priority; end
Priority. # => [["Low", "low"], ["Really High", "really_high"]]
124 125 126 |
# File 'lib/classy_enum/collection.rb', line 124 def map {|e| [e.text, e.to_s] } end |