class Capybara::UI::Widget::NodeFilter

Attributes

selector[R]

Public Class Methods

new(*selector) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 7
def initialize(*selector)
  @selector = selector.flatten
end

Public Instance Methods

node(parent_widget, *args) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 11
def node(parent_widget, *args)
  a, kw = capybara_selector(*args)
  parent_widget.root.find(*a, **kw)
end
node?(parent_widget, *args) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 16
def node?(parent_widget, *args)
  a, kw = capybara_selector(*args)
  parent_widget.root.has_selector?(*a, **kw)
end
nodeless?(parent_widget, *args) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 21
def nodeless?(parent_widget, *args)
  a, kw = capybara_selector(*args)
  parent_widget.root.has_no_selector?(*a, **kw)
end
nodes(parent_widget, *args) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 26
def nodes(parent_widget, *args)
  a, kw = capybara_selector(*args)
  parent_widget.root.all(*a, **kw)
end

Private Instance Methods

capybara_selector(*args) click to toggle source
# File lib/capybara/ui/widgets/widget/node_filter.rb, line 33
def capybara_selector(*args)
  # TODO detect signature errors (e.g., passing a different arity than the
  # one required by the selector proc, etc)
  selector = if @selector.first.respond_to?(:call)
               @selector.first.call(*args)
             else
               @selector
             end
  selector = Array(selector).flatten

  defaults = {:wait => 0}

  if Hash === selector.last
    return selector, defaults.merge(selector.pop)
  else
    return selector, defaults
  end
end