var isNewLineWin;
var isEscaped;
var wasEscaped;
- var isQuote;
+ var isQuoted;
+ var isSingleQuoted;
+ var isDoubleQuoted;
var isAttribute;
var isRelation;
var isWhitespace;
isNewLineNix = character == Marker.NEW_LINE_NIX;
isNewLineWin = character == Marker.NEW_LINE_NIX && value[i - 1] == Marker.NEW_LINE_WIN;
+ isQuoted = isSingleQuoted || isDoubleQuoted;
isRelation = !isEscaped && RELATION_PATTERN.test(character);
isWhitespace = WHITESPACE_PATTERN.test(character);
- if (wasEscaped && isQuote && isNewLineWin) {
+ if (wasEscaped && isQuoted && isNewLineWin) {
// swallow escaped new windows lines in comments
stripped.pop();
stripped.pop();
- } else if (isEscaped && isQuote && isNewLineNix) {
+ } else if (isEscaped && isQuoted && isNewLineNix) {
// swallow escaped new *nix lines in comments
stripped.pop();
} else if (isEscaped) {
stripped.push(character);
- } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuote) {
+ } else if (character == Marker.OPEN_SQUARE_BRACKET && !isQuoted) {
stripped.push(character);
isAttribute = true;
- } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuote) {
+ } else if (character == Marker.CLOSE_SQUARE_BRACKET && !isQuoted) {
stripped.push(character);
isAttribute = false;
- } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuote) {
+ } else if (character == Marker.OPEN_ROUND_BRACKET && !isQuoted) {
stripped.push(character);
roundBracketLevel++;
- } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuote) {
+ } else if (character == Marker.CLOSE_ROUND_BRACKET && !isQuoted) {
stripped.push(character);
roundBracketLevel--;
- } else if ((character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) && !isQuote) {
+ } else if (character == Marker.SINGLE_QUOTE && !isQuoted) {
stripped.push(character);
- isQuote = true;
- } else if (character == Marker.SINGLE_QUOTE || character == Marker.DOUBLE_QUOTE) {
+ isSingleQuoted = true;
+ } else if (character == Marker.DOUBLE_QUOTE && !isQuoted) {
+ stripped.push(character);
+ isDoubleQuoted = true;
+ } else if (character == Marker.SINGLE_QUOTE && isQuoted) {
+ stripped.push(character);
+ isSingleQuoted = false;
+ } else if (character == Marker.DOUBLE_QUOTE && isQuoted) {
stripped.push(character);
- isQuote = false;
+ isDoubleQuoted = false;
} else if (isWhitespace && wasRelation) {
continue;
- } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuote) {
+ } else if (isWhitespace && (isAttribute || roundBracketLevel > 0) && !isQuoted) {
// skip space
- } else if (isWhitespace && wasWhitespace && !isQuote) {
+ } else if (isWhitespace && wasWhitespace && !isQuoted) {
// skip extra space
- } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuote) {
+ } else if ((isNewLineWin || isNewLineNix) && (isAttribute || roundBracketLevel > 0) && isQuoted) {
// skip newline
} else if (isRelation && wasWhitespace) {
stripped.pop();