Skip to content

Commit

Permalink
replace leading, trailing, empty whitespace with white list
Browse files Browse the repository at this point in the history
values(\n,\t, ,\r)
  • Loading branch information
siva-sundar committed Oct 27, 2017
1 parent 642bbcd commit bf775d7
Showing 1 changed file with 8 additions and 13 deletions.
21 changes: 8 additions & 13 deletions utils/helpers.js
Original file line number Diff line number Diff line change
@@ -1,28 +1,24 @@
/* eslint-env node */
'use strict';

// below are the encoded values of ' ', '\n' and '\t' to avoid collapsing multiple   into a single whitespace.
const matchHorizontalTABAndNewLineBegin = /^(%20|%09|%0A)+/;
const matchHorizontalTABAndNewLineEnd = /(%20|%09|%0A)+$/;
const WHITESPACE = /^(%20|%09|%0A)+$/;
const leadingWhiteSpace = /^[ \t\r\n]+/;
const trailingWhiteSpace = /[ \t\r\n]+$/;
const WHITESPACE = /^[ \t\r\n]+$/;

const isWhitespaceTextNode = function(node) {
return node && node.type === 'TextNode' && WHITESPACE.test(encodeURIComponent(node.chars));
return node && node.type === 'TextNode' && WHITESPACE.test(node.chars);
};

const hasLeadingOrTrailingWhiteSpace = function(chars) {
chars = encodeURIComponent(chars);
return matchHorizontalTABAndNewLineBegin.test(chars) || matchHorizontalTABAndNewLineEnd.test(chars);
return leadingWhiteSpace.test(chars) || trailingWhiteSpace.test(chars);
};

const stripWhiteSpace = function(chars) {
/*
Replacing multiple ' '(leading/trailing), '\n' and '\t' into a single whitespace.
Replacing multiple ' ', '\n' and '\t'(leading/trailing) into a single whitespace.
*/
chars = encodeURIComponent(chars || '');
chars = chars.replace(matchHorizontalTABAndNewLineBegin, ' ')
.replace(matchHorizontalTABAndNewLineEnd, ' ');
return decodeURIComponent(chars);
chars = chars || '';
return chars.replace(leadingWhiteSpace, ' ').replace(trailingWhiteSpace, ' ');
};

const stripNoMinifyBlocks = function(nodes) {
Expand All @@ -37,7 +33,6 @@ const stripNoMinifyBlocks = function(nodes) {
module.exports = {
stripWhiteSpace,
isWhitespaceTextNode,
WHITESPACE,
stripNoMinifyBlocks,
hasLeadingOrTrailingWhiteSpace
};

0 comments on commit bf775d7

Please sign in to comment.