# File lib/microformat.rb, line 12
    def find(*args)
      return find_in_children(*args) if self == Microformat

      target, @options = args
      @options ||= target.is_a?(Hash) ? target : {}
      [:first, :all].each { |key| target = @options[key] if @options[key] }

      extract_base_url! target
      
      @doc = build_doc(@options[:text] ? @options : target)

      microformats = find_occurences(@doc)
      raise MicroformatNotFound if @options[:strict] && microformats.empty?
      return @options[:first] ? nil : [] if microformats.empty?

      if @options[:first] || @options[:all]
        return @options[:first] ? find_first(microformats) : find_every(microformats)
      end

      object = find_every(microformats)
      case object.size
      when 1 then object.first
      when 0 then nil
      else object
      end
    end