diff options
Diffstat (limited to 'node_modules/clean-css/lib/tokenizer')
-rw-r--r-- | node_modules/clean-css/lib/tokenizer/tokenize.js | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/node_modules/clean-css/lib/tokenizer/tokenize.js b/node_modules/clean-css/lib/tokenizer/tokenize.js index 7c071dd93..018b89de8 100644 --- a/node_modules/clean-css/lib/tokenizer/tokenize.js +++ b/node_modules/clean-css/lib/tokenizer/tokenize.js @@ -28,6 +28,34 @@ var BLOCK_RULES = [ '@supports' ]; +var PAGE_MARGIN_BOXES = [ + '@bottom-center', + '@bottom-left', + '@bottom-left-corner', + '@bottom-right', + '@bottom-right-corner', + '@left-bottom', + '@left-middle', + '@left-top', + '@right-bottom', + '@right-middle', + '@right-top', + '@top-center', + '@top-left', + '@top-left-corner', + '@top-right', + '@top-right-corner' +]; + +var EXTRA_PAGE_BOXES = [ + '@footnote', + '@footnotes', + '@left', + '@page-float-bottom', + '@page-float-top', + '@right' +]; + var REPEAT_PATTERN = /^\[\s*\d+\s*\]$/; var RULE_WORD_SEPARATOR_PATTERN = /[\s\(]/; var TAIL_BROKEN_VALUE_PATTERN = /[\s|\}]*$/; @@ -221,6 +249,18 @@ function intoTokens(source, externalContext, internalContext, isNested) { levels.push(level); level = Level.RULE; seekingValue = false; + } else if (character == Marker.OPEN_CURLY_BRACKET && level == Level.RULE && isPageMarginBox(buffer)) { + // open brace opening page-margin box at rule level, e.g. @page{@top-center{<-- + serializedBuffer = buffer.join('').trim(); + ruleTokens.push(ruleToken); + ruleToken = [Token.AT_RULE_BLOCK, [], []]; + ruleToken[1].push([Token.AT_RULE_BLOCK_SCOPE, serializedBuffer, [originalMetadata(metadata, serializedBuffer, externalContext)]]); + newTokens.push(ruleToken); + newTokens = ruleToken[2]; + + levels.push(level); + level = Level.RULE; + buffer = []; } else if (character == Marker.COLON && level == Level.RULE && !seekingValue) { // colon at rule level, e.g. a{color:<-- serializedBuffer = buffer.join('').trim(); @@ -467,6 +507,12 @@ function tokenScopeFrom(tokenType) { } } +function isPageMarginBox(buffer) { + var serializedBuffer = buffer.join('').trim(); + + return PAGE_MARGIN_BOXES.indexOf(serializedBuffer) > -1 || EXTRA_PAGE_BOXES.indexOf(serializedBuffer) > -1; +} + function isRepeatToken(buffer) { return REPEAT_PATTERN.test(buffer.join('') + Marker.CLOSE_SQUARE_BRACKET); } |