Sha256: b10f274f66cba5cd6d506245e6bc0e12a2a9f9eba9d93a9c9bd6a943ffe10649

Contents?: true

Size: 826 Bytes

Versions: 6

Compression:

Stored size: 826 Bytes

Contents

module Mechanize::ElementMatcher

  def elements_with singular, plural = "#{singular}s"
    class_eval <<-CODE
      def #{plural}_with criteria = {}
        criteria = if String === criteria then
                     {:name => criteria}
                   else
                     criteria.map do |k, v|
                       k = :dom_id if k.to_sym == :id
                       [k, v]
                     end
                   end

        f = #{plural}.find_all do |thing|
          criteria.all? do |k,v|
            v === thing.send(k)
          end
        end
        yield f if block_given?
        f
      end

      def #{singular}_with criteria = {}
        f = #{plural}_with(criteria).first
        yield f if block_given?
        f
      end

      alias :#{singular} :#{singular}_with
    CODE
  end

end

Version data entries

6 entries across 6 versions & 3 rubygems

Version Path
aai10-mechanize-2.0.1.0 lib/mechanize/element_matcher.rb
neocoin-mechanize-2.0.2 lib/mechanize/element_matcher.rb
mechanize-2.0.1 lib/mechanize/element_matcher.rb
mechanize-2.0 lib/mechanize/element_matcher.rb
mechanize-2.0.pre.2 lib/mechanize/element_matcher.rb
mechanize-2.0.pre.1 lib/mechanize/element_matcher.rb