class Capybara::Selector::FilterSet

Attributes

descriptions[R]

Public Class Methods

add(name, &block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 52
def add(name, &block)
  all[name.to_sym] = FilterSet.new(name.to_sym, &block)
end
all() click to toggle source
# File lib/capybara/selector/filter_set.rb, line 48
def all
  @filter_sets ||= {} # rubocop:disable Naming/MemoizedInstanceVariableName
end
new(name, &block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 10
def initialize(name, &block)
  @name = name
  @descriptions = []
  instance_eval(&block)
end
remove(name) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 56
def remove(name)
  all.delete(name.to_sym)
end

Public Instance Methods

describe(&block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 24
def describe(&block)
  descriptions.push block
end
description(**options) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 28
def description(**options)
  opts = options_with_defaults(options)
  @descriptions.map do |desc|
    desc.call(opts).to_s
  end.join
end
expression_filter(name, *types_and_options, &block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 20
def expression_filter(name, *types_and_options, &block)
  add_filter(name, Filters::ExpressionFilter, *types_and_options, &block)
end
expression_filters() click to toggle source
# File lib/capybara/selector/filter_set.rb, line 43
def expression_filters
  filters.select { |_n, f| f.nil? || f.is_a?(Filters::ExpressionFilter) }.freeze
end
filter(name, *types_and_options, &block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 16
def filter(name, *types_and_options, &block)
  add_filter(name, Filters::NodeFilter, *types_and_options, &block)
end
filters() click to toggle source
# File lib/capybara/selector/filter_set.rb, line 35
def filters
  @filters ||= {}
end
node_filters() click to toggle source
# File lib/capybara/selector/filter_set.rb, line 39
def node_filters
  filters.reject { |_n, f| f.nil? || f.is_a?(Filters::ExpressionFilter) }.freeze
end

Private Instance Methods

add_filter(name, filter_class, *types, **options, &block) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 71
def add_filter(name, filter_class, *types, **options, &block)
  types.each { |k| options[k] = true }
  filters[name] = filter_class.new(name, block, options)
end
options_with_defaults(options) click to toggle source
# File lib/capybara/selector/filter_set.rb, line 63
def options_with_defaults(options)
  options = options.dup
  filters.each do |name, filter|
    options[name] = filter.default if filter.default? && !options.key?(name)
  end
  options
end