class SubstitutionContext

Public Class Methods

new() click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 2
def initialize
  @substitute = '?'
  @regexes = []
end

Public Instance Methods

match(matches, attribute, substitution_id) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 13
def match(matches, attribute, substitution_id)
  matches.find_all { |node| node[attribute] =~ @regexes[substitution_id] }
end
substitute!(selector, values) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 7
def substitute!(selector, values)
  while !values.empty? && substitutable?(values.first) && selector.index(@substitute)
    selector.sub! @substitute, substitution_id_for(values.shift)
  end
end

Private Instance Methods

substitutable?(value) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 27
def substitutable?(value)
  value.is_a?(String) || value.is_a?(Regexp)
end
substitution_id_for(value) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 18
def substitution_id_for(value)
  if value.is_a?(Regexp)
    @regexes << value
    @regexes.size - 1
  else
    value
  end.inspect # Nokogiri doesn't like arbitrary values without quotes, hence inspect.
end