From ab2079e1e335de1bb1cf74c2f9bdc1d16e6e8c59 Mon Sep 17 00:00:00 2001 From: Jakub Pawlowicz Date: Sat, 5 Jul 2014 13:58:17 +0100 Subject: [PATCH] Improves QuoteScanner to handle comments correctly. --- History.md | 1 + lib/text/quote-scanner.js | 17 ++++++++++++++--- 2 files changed, 15 insertions(+), 3 deletions(-) diff --git a/History.md b/History.md index bfebc2c6..a2b86268 100644 --- a/History.md +++ b/History.md @@ -1,6 +1,7 @@ [2.2.6 / 2014-xx-xx](https://github.com/GoalSmashers/clean-css/compare/v2.2.5...v2.2.6) ================== +* Improves QuoteScanner to handle comments correctly. * Fixed issue [#311](https://github.com/GoalSmashers/clean-css/issues/311) - leading/trailing decimal points. [2.2.5 / 2014-06-29](https://github.com/GoalSmashers/clean-css/compare/v2.2.4...v2.2.5) diff --git a/lib/text/quote-scanner.js b/lib/text/quote-scanner.js index cc1b9e65..55117534 100644 --- a/lib/text/quote-scanner.js +++ b/lib/text/quote-scanner.js @@ -3,10 +3,21 @@ this.data = data; }; - var findNonEscapedEnd = function(data, matched, start) { + var findCommentEnd = function(data, matched, start) { + var commentStartMark = '/*'; + var commentEndMark = '*/'; var end = start; while (true) { - end = data.indexOf(matched, end); + var from = end; + + end = data.indexOf(matched, from); + var commentStart = data.indexOf(commentStartMark, from); + var commentEnd = data.indexOf(commentEndMark, from); + + if (end > -1 && commentEnd > -1 && commentEnd < end && (commentStart == -1 || commentStart > commentEnd)) { + end = commentEnd + 1; + break; + } if (end > -1 && data[end - 1] == '\\') { end += 1; @@ -50,7 +61,7 @@ if (nextStart == -1) break; - nextEnd = findNonEscapedEnd(data, matchedMark, nextStart + 1); + nextEnd = findCommentEnd(data, matchedMark, nextStart + 1); if (nextEnd == -1) break; -- 2.34.1