UNPKG

@navikt/aksel

Version:

Aksel command line interface. Codemods and other utilities for Aksel users.

53 lines (52 loc) 2.17 kB
"use strict"; 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"); }