Method: ClassyEnum::Collection::ClassMethods#find
- Defined in:
- lib/classy_enum/collection.rb
#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 |