Module: Capybara::Helpers Private
This module is part of a private API. You should avoid using this module if possible, as it may be removed or be changed in the future.
Instance Method Summary collapse
-
#declension(singular, plural, count) ⇒ Object
private
A poor man’s ‘pluralize`.
-
#expects_none?(options = {}) ⇒ Boolean
private
Checks if a count of 0 is valid for the given options hash.
-
#failure_message(description, options = {}) ⇒ Object
private
Generates a failure message given a description of the query and count options.
-
#inject_asset_host(html) ⇒ String
private
Injects a ‘<base>` tag into the given HTML code, pointing to `Capybara.asset_host`.
-
#matches_count?(count, options = {}) ⇒ Boolean
private
Checks if the given count matches the given count options.
- #monotonic_time ⇒ Object private
-
#normalize_whitespace(text) ⇒ String
private
Normalizes whitespace space by stripping leading and trailing whitespace and replacing sequences of whitespace characters with a single space.
-
#to_regexp(text) ⇒ String
private
Escapes any characters that would have special meaning in a regexp if text is not a regexp.
Instance Method Details
#declension(singular, plural, count) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
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.
123 124 125 126 127 128 129 |
# File 'lib/capybara/helpers.rb', line 123 def declension(singular, plural, count) if count == 1 singular else plural end end |
#expects_none?(options = {}) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Checks if a count of 0 is valid for the given options hash. Returns false if options hash does not specify any count options.
80 81 82 83 84 85 86 |
# File 'lib/capybara/helpers.rb', line 80 def expects_none?(={}) if [:count, :maximum, :minimum, :between].any? { |k| .has_key? k } matches_count?(0,) else false end end |
#failure_message(description, options = {}) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Generates a failure message given a description of the query and count options.
99 100 101 102 103 104 105 106 107 108 109 110 111 |
# File 'lib/capybara/helpers.rb', line 99 def (description, ={}) = String.new("expected to find #{description}") if [:count] << " #{[:count]} #{declension('time', 'times', [:count])}" elsif [:between] << " between #{[:between].first} and #{[:between].last} times" elsif [:maximum] << " at most #{[:maximum]} #{declension('time', 'times', [:maximum])}" elsif [:minimum] << " at least #{[:minimum]} #{declension('time', 'times', [:minimum])}" end end |
#inject_asset_host(html) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Injects a ‘<base>` tag into the given HTML code, pointing to `Capybara.asset_host`.
43 44 45 46 47 48 49 50 51 52 |
# File 'lib/capybara/helpers.rb', line 43 def inject_asset_host(html) if Capybara.asset_host && Nokogiri::HTML(html).css("base").empty? match = html.match(/<head[^<]*?>/) if match return html.clone.insert match.end(0), "<base href='#{Capybara.asset_host}' />" end end html end |
#matches_count?(count, options = {}) ⇒ Boolean
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Checks if the given count matches the given count options. Defaults to true if no options are specified. If multiple options are provided, it tests that all conditions are met; however, if :count is supplied, all other options are ignored.
67 68 69 70 71 72 73 |
# File 'lib/capybara/helpers.rb', line 67 def matches_count?(count, ={}) return (Integer([:count]) == count) if [:count] return false if [:maximum] && (Integer([:maximum]) < count) return false if [:minimum] && (Integer([:minimum]) > count) return false if [:between] && !([:between] === count) return true end |
#monotonic_time ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
132 133 134 |
# File 'lib/capybara/helpers.rb', line 132 def monotonic_time Process.clock_gettime Process::CLOCK_MONOTONIC end |
#normalize_whitespace(text) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Normalizes whitespace space by stripping leading and trailing whitespace and replacing sequences of whitespace characters with a single space.
19 20 21 |
# File 'lib/capybara/helpers.rb', line 19 def normalize_whitespace(text) text.to_s.gsub(/[[:space:]]+/, ' ').strip end |
#to_regexp(text) ⇒ String
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Escapes any characters that would have special meaning in a regexp if text is not a regexp
31 32 33 |
# File 'lib/capybara/helpers.rb', line 31 def to_regexp(text) text.is_a?(Regexp) ? text : Regexp.new(Regexp.escape(normalize_whitespace(text))) end |