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);
- };
|