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
81 82 83 |
# File 'lib/classy_enum/collection.rb', line 81 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
119 120 121 122 123 124 125 |
# File 'lib/classy_enum/collection.rb', line 119 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
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 |
# File 'lib/classy_enum/collection.rb', line 47 def inherited(klass) if self == ClassyEnum::Base klass.class_eval do def self. @enum_options ||= superclass. end def self.() @enum_options = end end 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
97 98 99 |
# File 'lib/classy_enum/collection.rb', line 97 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.select_options # => [["Low", "low"], ["Really High", "really_high"]]
142 143 144 |
# File 'lib/classy_enum/collection.rb', line 142 def map {|e| [e.text, e.to_s] } end |