class Capybara::Selector::Filter

Public Class Methods

new(name, block, options={}) click to toggle source
# File lib/capybara/selector/filter.rb, line 5
def initialize(name, block, options={})
  @name = name
  @block = block
  @options = options
  @options[:valid_values] = [true,false] if options[:boolean]
end

Public Instance Methods

default() click to toggle source
# File lib/capybara/selector/filter.rb, line 16
def default
  @options[:default]
end
default?() click to toggle source
# File lib/capybara/selector/filter.rb, line 12
def default?
  @options.has_key?(:default)
end
matches?(node, value) click to toggle source
# File lib/capybara/selector/filter.rb, line 20
def matches?(node, value)
  return true if skip?(value)

  if !valid_value?(value)
    msg = "Invalid value #{value.inspect} passed to filter #{@name} - "
    if default?
      warn msg + "defaulting to #{default}"
      value = default
    else
      warn msg + "skipping"
      return true
    end
  end

  @block.call(node, value)
end
skip?(value) click to toggle source
# File lib/capybara/selector/filter.rb, line 37
def skip?(value)
  @options.has_key?(:skip_if) && value == @options[:skip_if]
end

Private Instance Methods

valid_value?(value) click to toggle source
# File lib/capybara/selector/filter.rb, line 43
def valid_value?(value)
  !@options.has_key?(:valid_values) || Array(@options[:valid_values]).include?(value)
end