You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
33 lines
821 B
33 lines
821 B
2 years ago
|
import { walk } from 'css-tree';
|
||
|
import Atrule from './Atrule.js';
|
||
|
import AttributeSelector from './AttributeSelector.js';
|
||
|
import Value from './Value.js';
|
||
|
import Dimension from './Dimension.js';
|
||
|
import Percentage from './Percentage.js';
|
||
|
import { Number } from './Number.js';
|
||
|
import Url from './Url.js';
|
||
|
import { compressHex, compressIdent, compressFunction } from './color.js';
|
||
|
|
||
|
const handlers = {
|
||
|
Atrule,
|
||
|
AttributeSelector,
|
||
|
Value,
|
||
|
Dimension,
|
||
|
Percentage,
|
||
|
Number,
|
||
|
Url,
|
||
|
Hash: compressHex,
|
||
|
Identifier: compressIdent,
|
||
|
Function: compressFunction
|
||
|
};
|
||
|
|
||
|
export default function(ast) {
|
||
|
walk(ast, {
|
||
|
leave(node, item, list) {
|
||
|
if (handlers.hasOwnProperty(node.type)) {
|
||
|
handlers[node.type].call(this, node, item, list);
|
||
|
}
|
||
|
}
|
||
|
});
|
||
|
};
|