var List = require('../../../utils/list.js'); module.exports = function compressBackground(node) { function lastType() { if (buffer.length) { return buffer[buffer.length - 1].type; } } function flush() { if (lastType() === 'Space') { buffer.pop(); } if (!buffer.length) { buffer.unshift( { type: 'Number', value: '0' }, { type: 'Space' }, { type: 'Number', value: '0' } ); } newValue.push.apply(newValue, buffer); buffer = []; } var newValue = []; var buffer = []; node.sequence.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 === 'Space' && (!buffer.length || lastType() === 'Space')) { return; } buffer.push(node); }); flush(); node.sequence = new List(newValue); };