| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | var List = require('css-tree').List;module.exports = function compressBackground(node) {    function lastType() {        if (buffer.length) {            return buffer[buffer.length - 1].type;        }    }    function flush() {        if (lastType() === 'WhiteSpace') {            buffer.pop();        }        if (!buffer.length) {            buffer.unshift(                {                    type: 'Number',                    loc: null,                    value: '0'                },                {                    type: 'WhiteSpace',                    value: ' '                },                {                    type: 'Number',                    loc: null,                    value: '0'                }            );        }        newValue.push.apply(newValue, buffer);        buffer = [];    }    var newValue = [];    var buffer = [];    node.children.each(function(node) {        if (node.type === 'Operator' && node.value === ',') {            flush();            newValue.push(node);            return;        }        // remove defaults        if (node.type === 'Identifier') {            if (node.name === 'transparent' ||                node.name === 'none' ||                node.name === 'repeat' ||                node.name === 'scroll') {                return;            }        }        // don't add redundant spaces        if (node.type === 'WhiteSpace' && (!buffer.length || lastType() === 'WhiteSpace')) {            return;        }        buffer.push(node);    });    flush();    node.children = new List().fromArray(newValue);};
 |