@navikt/aksel
Version:
Aksel command line interface. Codemods and other utilities for Aksel users.
53 lines (52 loc) • 2.17 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.createCompositeTwRegex = createCompositeTwRegex;
exports.createSingleTwRegex = createSingleTwRegex;
exports.getFrameworkRegexes = getFrameworkRegexes;
exports.getTokenRegex = getTokenRegex;
const translate_token_1 = require("../../codemod/utils/translate-token");
const createTwRegexForBreakpoints = (token) => new RegExp(`(?<!:)(?<=\\s|^)${token}:(?=\\w)`, "gm");
function getFrameworkRegexes({ token, twString, legacy = false, }) {
const regexes = {
css: getTokenRegex(token, "css"),
scss: getTokenRegex(token, "scss"),
less: getTokenRegex(token, "less"),
/* New JS tokens dont have a prefix */
js: legacy
? getTokenRegex(token, "js")
: getTokenRegex(token.replace("--ax-", ""), "js"),
tailwind: null,
};
if (!twString) {
return regexes;
}
const twTokens = twString.split(",");
if (token.includes("breakpoint")) {
/* We assume that breakpoint tw token only has a single declaration */
regexes.tailwind = createTwRegexForBreakpoints(twTokens[0]);
}
else {
regexes.tailwind = createCompositeTwRegex(twTokens);
}
return regexes;
}
function getTokenRegex(variable, format) {
switch (format) {
case "css":
return new RegExp(`(\\s|^)?(${variable})(?=\\s|$|[^\\w-])`, "gm");
case "scss":
return new RegExp(`(\\s|^)?(\\${(0, translate_token_1.translateToken)(variable, "scss")})(?=\\s|$|[^\\w-])`, "gm");
case "less":
return new RegExp(`(\\s|^)?(${(0, translate_token_1.translateToken)(variable, "less")})(?=\\s|$|[^\\w-])`, "gm");
case "js":
return new RegExp(`(\\s|^)?(${(0, translate_token_1.translateToken)(variable, "js")})(?=\\s|$|[^\\w-])`, "gm");
}
}
function createCompositeTwRegex(tokens) {
return new RegExp(`(?<!:)(\\s|^)?(${tokens.join("|")}|${tokens
.map((t) => `:${t}`)
.join("|")})(?=\\s|$|[^\\w-])`, "gm");
}
function createSingleTwRegex(token) {
return new RegExp(`(?<!:)(\\s|^)?(${token})(?=\\s|$|[^\\w-])`, "gm");
}