module Capybara::Helpers

@api private

Public Instance Methods

declension(singular, plural, count) click to toggle source

A poor man's `pluralize`. Given two declensions, one singular and one plural, as well as a count, this will pick the correct declension. This way we can generate grammatically correct error message.

@param [String] singular The singular form of the word @param [String] plural The plural form of the word @param [Integer] count The number of items

# File lib/capybara/helpers.rb, line 68
def declension(singular, plural, count)
  if count == 1
    singular
  else
    plural
  end
end
inject_asset_host(html, asset_host = Capybara.asset_host) click to toggle source

Injects a `<base>` tag into the given HTML code, pointing to `Capybara.asset_host`.

@param [String] html HTML code to inject into @return [String] The modified HTML code

# File lib/capybara/helpers.rb, line 47
def inject_asset_host(html, asset_host = Capybara.asset_host)
  if asset_host && Nokogiri::HTML(html).css("base").empty?
    match = html.match(/<head[^<]*?>/)
    if match
      return html.clone.insert match.end(0), "<base href='#{asset_host}' />"
    end
  end

  html
end
monotonic_time() click to toggle source
# File lib/capybara/helpers.rb, line 77
def monotonic_time
  Process.clock_gettime Process::CLOCK_MONOTONIC
end
normalize_whitespace(text) click to toggle source

Normalizes whitespace space by stripping leading and trailing whitespace and replacing sequences of whitespace characters with a single space.

@param [String] text Text to normalize @return [String] Normalized text

# File lib/capybara/helpers.rb, line 17
def normalize_whitespace(text)
  text.to_s.gsub(/[[:space:]]+/, ' ').strip
end
to_regexp(text, regexp_options=nil, exact=false) click to toggle source

Escapes any characters that would have special meaning in a regexp if text is not a regexp

@param [String] text Text to escape @return [String] Escaped text

# File lib/capybara/helpers.rb, line 29
def to_regexp(text, regexp_options=nil, exact=false)
  if text.is_a?(Regexp)
    text
  else
    escaped = Regexp.escape(normalize_whitespace(text))
    escaped = "\\A#{escaped}\\z" if exact
    Regexp.new(escaped, regexp_options)
  end
end