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