class Dill::Widget::NodeFilter

Attributes

selector[R]

Public Class Methods

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

Public Instance Methods

node(parent_widget, *args) click to toggle source
# File lib/dill/widgets/widget/node_filter.rb, line 10
def node(parent_widget, *args)
  parent_widget.root.find(*capybara_selector(*args))
end
node?(parent_widget, *args) click to toggle source
# File lib/dill/widgets/widget/node_filter.rb, line 14
def node?(parent_widget, *args)
  parent_widget.root.has_selector?(*capybara_selector(*args))
end
nodeless?(parent_widget, *args) click to toggle source
# File lib/dill/widgets/widget/node_filter.rb, line 18
def nodeless?(parent_widget, *args)
  parent_widget.root.has_no_selector?(*capybara_selector(*args))
end
nodes(parent_widget, *args) click to toggle source
# File lib/dill/widgets/widget/node_filter.rb, line 22
def nodes(parent_widget, *args)
  parent_widget.root.all(*capybara_selector(*args))
end

Private Instance Methods

capybara_selector(*args) click to toggle source
# File lib/dill/widgets/widget/node_filter.rb, line 28
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
    selector + [defaults.merge(selector.pop)]
  else
    selector + [defaults]
  end
end