aboutsummaryrefslogtreecommitdiff
path: root/node_modules/clean-css/lib/tokenizer/tokenize.js
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/clean-css/lib/tokenizer/tokenize.js')
-rw-r--r--node_modules/clean-css/lib/tokenizer/tokenize.js11
1 files changed, 11 insertions, 0 deletions
diff --git a/node_modules/clean-css/lib/tokenizer/tokenize.js b/node_modules/clean-css/lib/tokenizer/tokenize.js
index 15fb584a0..7c071dd93 100644
--- a/node_modules/clean-css/lib/tokenizer/tokenize.js
+++ b/node_modules/clean-css/lib/tokenizer/tokenize.js
@@ -28,6 +28,7 @@ var BLOCK_RULES = [
'@supports'
];
+var REPEAT_PATTERN = /^\[\s*\d+\s*\]$/;
var RULE_WORD_SEPARATOR_PATTERN = /[\s\(]/;
var TAIL_BROKEN_VALUE_PATTERN = /[\s|\}]*$/;
@@ -377,6 +378,12 @@ function intoTokens(source, externalContext, internalContext, isNested) {
propertyToken.push([Token.PROPERTY_VALUE, character, [[position.line, position.column, position.source]]]);
buffer = [];
+ } else if (character == Marker.CLOSE_SQUARE_BRACKET && propertyToken && propertyToken.length > 1 && buffer.length > 0 && isRepeatToken(buffer)) {
+ buffer.push(character);
+ serializedBuffer = buffer.join('').trim();
+ propertyToken[propertyToken.length - 1][1] += serializedBuffer;
+
+ buffer = [];
} else if ((isSpace || (isNewLineNix && !isNewLineWin)) && level == Level.RULE && seekingValue && propertyToken && buffer.length > 0) {
// space or *nix newline within property, e.g. a{margin:0 <--
serializedBuffer = buffer.join('').trim();
@@ -460,4 +467,8 @@ function tokenScopeFrom(tokenType) {
}
}
+function isRepeatToken(buffer) {
+ return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET);
+}
+
module.exports = tokenize;