Sha256: 4611ba5d7b963e7a8c92fb2dbb64c42c9271a27f2671bc91bd6fada2620a2421

Contents?: true

Size: 929 Bytes

Versions: 1

Compression:

Stored size: 929 Bytes

Contents

require "capybara/node/finders"

module WildcardFinders
  module Finders
    METHODS = []

    # not to add METHODS
    def find_tag_like(tag, matcher, opts = {})
      tags = all(tag).select do |e|
        hash = matcher.keys.each_with_object({}) {|key, h| h[key] = e[key] }
        WildcardMatchers.wildcard_match?(hash, matcher)
      end

      tags.first # not compatible with capybara 2.x
    end

    def self.method_added(name)
      METHODS.push(name)
    end

    # I'll never add semantic tags
    %w[ img a input form link ].each do |name|
      define_method("find_#{name}_like") do |matcher, opts = {}|
        find_tag_like(name, matcher, opts)
      end
    end

    # synonym
    { "a"   => %w[ anchor ],
      "img" => %w[ image  ],
    }.each do |tag, synonyms|
      synonyms.each do |synonym|
        module_eval %{
          alias find_#{synonym}_like find_#{tag}_like
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
wildcard_finders-0.0.1 lib/wildcard_finders/finders.rb