| import { fork, string, url, tokenTypes as TYPE } from 'css-tree'; |
| import compress from './compress.js'; |
| import specificity from './restructure/prepare/specificity.js'; |
| |
| function encodeString(value) { |
| const stringApostrophe = string.encode(value, true); |
| const stringQuote = string.encode(value); |
| |
| return stringApostrophe.length < stringQuote.length |
| ? stringApostrophe |
| : stringQuote; |
| } |
| |
| const { |
| lexer, |
| tokenize, |
| parse, |
| generate, |
| walk, |
| find, |
| findLast, |
| findAll, |
| fromPlainObject, |
| toPlainObject |
| } = fork({ |
| node: { |
| String: { |
| generate(node) { |
| this.token(TYPE.String, encodeString(node.value)); |
| } |
| }, |
| Url: { |
| generate(node) { |
| const encodedUrl = url.encode(node.value); |
| const string = encodeString(node.value); |
| |
| this.token(TYPE.Url, |
| encodedUrl.length <= string.length + 5 /* "url()".length */ |
| ? encodedUrl |
| : 'url(' + string + ')' |
| ); |
| } |
| } |
| } |
| }); |
| |
| export { |
| lexer, |
| tokenize, |
| parse, |
| generate, |
| walk, |
| find, |
| findLast, |
| findAll, |
| fromPlainObject, |
| toPlainObject, |
| specificity, |
| compress |
| }; |