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