数通智联化工云平台
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.

46 lines
839 B

2 years ago
"use strict";
const tokenize = require("postcss/lib/tokenize");
function templateTokenize(...args) {
const tokenizer = tokenize(...args);
function nextToken(...args) {
const returned = [];
let token, lastPos;
let depth = 0;
while ((token = tokenizer.nextToken.apply(tokenizer, args))) {
if (token[0] !== "word") {
if (token[0] === "{") {
++depth;
} else if (token[0] === "}") {
--depth;
}
}
if (depth || returned.length) {
lastPos = token[3] || token[2] || lastPos;
returned.push(token);
}
if (!depth) {
break;
}
}
if (returned.length) {
token = [
"word",
returned.map((token) => token[1]).join(""),
returned[0][2],
lastPos,
];
}
return token;
}
return Object.assign({}, tokenizer, {
nextToken,
});
}
module.exports = templateTokenize;