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.3 KiB
60 lines
1.3 KiB
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 |
|
};
|
|
|