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.
60 lines
1.5 KiB
60 lines
1.5 KiB
'use strict'; |
|
|
|
const cssTree = require('css-tree'); |
|
const compress = require('./compress.cjs'); |
|
const specificity = require('./restructure/prepare/specificity.cjs'); |
|
|
|
function encodeString(value) { |
|
const stringApostrophe = cssTree.string.encode(value, true); |
|
const stringQuote = cssTree.string.encode(value); |
|
|
|
return stringApostrophe.length < stringQuote.length |
|
? stringApostrophe |
|
: stringQuote; |
|
} |
|
|
|
const { |
|
lexer, |
|
tokenize, |
|
parse, |
|
generate, |
|
walk, |
|
find, |
|
findLast, |
|
findAll, |
|
fromPlainObject, |
|
toPlainObject |
|
} = cssTree.fork({ |
|
node: { |
|
String: { |
|
generate(node) { |
|
this.token(cssTree.tokenTypes.String, encodeString(node.value)); |
|
} |
|
}, |
|
Url: { |
|
generate(node) { |
|
const encodedUrl = cssTree.url.encode(node.value); |
|
const string = encodeString(node.value); |
|
|
|
this.token(cssTree.tokenTypes.Url, |
|
encodedUrl.length <= string.length + 5 /* "url()".length */ |
|
? encodedUrl |
|
: 'url(' + string + ')' |
|
); |
|
} |
|
} |
|
} |
|
}); |
|
|
|
exports.compress = compress; |
|
exports.specificity = specificity; |
|
exports.find = find; |
|
exports.findAll = findAll; |
|
exports.findLast = findLast; |
|
exports.fromPlainObject = fromPlainObject; |
|
exports.generate = generate; |
|
exports.lexer = lexer; |
|
exports.parse = parse; |
|
exports.toPlainObject = toPlainObject; |
|
exports.tokenize = tokenize; |
|
exports.walk = walk;
|
|
|