123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- module.exports = {
- decorator: function(handlers) {
- var curNode = null;
- var prev = null;
- var tokens = [];
- return {
- children: handlers.children,
- node: function(node) {
- var tmp = curNode;
- curNode = node;
- handlers.node.call(this, node);
- curNode = tmp;
- },
- chunk: function(chunk) {
- if (tokens.length > 0) {
- switch (curNode.type) {
- case 'Dimension':
- case 'HexColor':
- case 'IdSelector':
- case 'Percentage':
- if (prev.node === curNode) {
- prev.value += chunk;
- return;
- }
- break;
- case 'Function':
- case 'PseudoClassSelector':
- case 'PseudoElementSelector':
- case 'Url':
- if (chunk === '(') {
- prev.value += chunk;
- return;
- }
- break;
- case 'Atrule':
- if (prev.node === curNode && prev.value === '@') {
- prev.value += chunk;
- return;
- }
- break;
- }
- }
- tokens.push(prev = {
- value: chunk,
- node: curNode
- });
- },
- result: function() {
- return tokens;
- }
- };
- }
- };
|