Module: Capybara::Node::WhitespaceNormalizer
- Included in:
- RackTest::Node, Selenium::Node
- Defined in:
- lib/capybara/node/whitespace_normalizer.rb
Overview
WhitespaceNormalizer provides methods that help to normalize the spacing of text content inside of Elements by removing various unicode spacing and directional markings.
Constant Summary collapse
- NON_BREAKING_SPACE =
Unicode for NBSP, or
"\u00a0"- LINE_SEPERATOR =
"\u2028"- PARAGRAPH_SEPERATOR =
"\u2029"- BREAKING_SPACES =
All spaces except for NBSP
"[[:space:]&&[^#{NON_BREAKING_SPACE}]]".freeze
- SQUEEZED_SPACES =
Whitespace we want to substitute with plain spaces
" \n\f\t\v#{LINE_SEPERATOR}#{PARAGRAPH_SEPERATOR}".freeze
- LEADING_SPACES =
Any whitespace at the front of text
/\A#{BREAKING_SPACES}+/- TRAILING_SPACES =
Any whitespace at the end of text
/#{BREAKING_SPACES}+\z/- ZERO_WIDTH_SPACE =
"Invisible" space character
"\u200b"- LEFT_TO_RIGHT_MARK =
Signifies text is read left to right
"\u200e"- RIGHT_TO_LEFT_MARK =
Signifies text is read right to left
"\u200f"- REMOVED_CHARACTERS =
Characters we want to truncate from text
[ZERO_WIDTH_SPACE, LEFT_TO_RIGHT_MARK, RIGHT_TO_LEFT_MARK].join
- EMPTY_LINES =
Matches multiple empty lines
/[\ \n]*\n[\ \n]*/
Instance Method Summary collapse
-
#normalize_spacing(text) ⇒ String
Normalizes the spacing of a node's text to be similar to what matchers might expect.
-
#normalize_visible_spacing(text) ⇒ String
Variant on Normalizer#normalize_spacing that targets the whitespace of visible elements only.
Instance Method Details
#normalize_spacing(text) ⇒ String
Normalizes the spacing of a node's text to be similar to what matchers might expect.
53 54 55 56 57 58 59 60 61 |
# File 'lib/capybara/node/whitespace_normalizer.rb', line 53 def normalize_spacing(text) text .delete(REMOVED_CHARACTERS) .tr(SQUEEZED_SPACES, ' ') .squeeze(' ') .sub(LEADING_SPACES, '') .sub(TRAILING_SPACES, '') .tr(NON_BREAKING_SPACE, ' ') end |
#normalize_visible_spacing(text) ⇒ String
Variant on Normalizer#normalize_spacing that targets the whitespace of visible elements only.
71 72 73 74 75 76 77 78 |
# File 'lib/capybara/node/whitespace_normalizer.rb', line 71 def normalize_visible_spacing(text) text .squeeze(' ') .gsub(EMPTY_LINES, "\n") .sub(LEADING_SPACES, '') .sub(TRAILING_SPACES, '') .tr(NON_BREAKING_SPACE, ' ') end |