Sha256: 02a49fe9b2d85b6f1e1bbaf0d6310307862c699b628d47afb2fa47d969530ed6

Contents?: true

Size: 827 Bytes

Versions: 19

Compression:

Stored size: 827 Bytes

Contents

module MongoMapper
  class DynamicFinder
    attr_reader :method, :attributes, :finder, :bang, :instantiator

    def initialize(method)
      @method = method
      @finder = :first
      @bang   = false
      match()
    end

    def found?
      @finder.present?
    end

    protected
      def match
        case method.to_s
          when /^find_(all_by|by)_([_a-zA-Z]\w*)$/
            @finder = :all if $1 == 'all_by'
            names = $2
          when /^find_by_([_a-zA-Z]\w*)\!$/
            @bang = true
            names = $1
          when /^find_or_(initialize|create)_by_([_a-zA-Z]\w*)$/
            @instantiator = $1 == 'initialize' ? :new : :create
            names = $2
          else
            @finder = nil
        end
        
        @attributes = names && names.split('_and_')
      end
  end
end

Version data entries

19 entries across 19 versions & 5 rubygems

Version Path
mongo_mapper-0.6.6 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.12.4 lib/mongo_mapper/dynamic_finder.rb
danielharan-mongo_mapper-0.6.5 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.5 lib/mongo_mapper/dynamic_finder.rb
webbynode-mongo_mapper-0.6.4 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.4 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.3 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.2 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.1 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.11.18 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.6.0 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.11.8 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.11.6 lib/mongo_mapper/dynamic_finder.rb
djsun-mongo_mapper-0.5.8.2 lib/mongo_mapper/dynamic_finder.rb
djsun-mongo_mapper-0.5.8.1 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.11.2 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-unstable-2009.10.31 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.5.8 lib/mongo_mapper/dynamic_finder.rb
mongo_mapper-0.5.7 lib/mongo_mapper/dynamic_finder.rb