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 = '?'
end

Public Instance Methods

match(matches, attribute, matcher) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 16
def match(matches, attribute, matcher)
  matches.find_all { |node| node[attribute] =~ Regexp.new(matcher) }
end
substitute!(selector, values, format_for_presentation = false) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 6
def substitute!(selector, values, format_for_presentation = false)
  selector = selector.dup

  while !values.empty? && substitutable?(values.first) && selector.index(@substitute)
    selector.sub! @substitute, matcher_for(values.shift, format_for_presentation)
  end

  selector
end

Private Instance Methods

matcher_for(value, format_for_presentation) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 21
def matcher_for(value, format_for_presentation)
  # Nokogiri doesn't like arbitrary values without quotes, hence inspect.
  if format_for_presentation
    value.inspect # Avoid to_s so Regexps aren't put in quotes.
  else
    value.to_s.inspect
  end
end
substitutable?(value) click to toggle source
# File lib/rails/dom/testing/assertions/selector_assertions/substitution_context.rb, line 30
def substitutable?(value)
  value.is_a?(String) || value.is_a?(Regexp)
end