eslint-plugin-readable-tailwind
Version:
auto-wraps tailwind classes after a certain print width or class count into multiple lines to improve readability.
40 lines • 2.31 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getLiteralsByESNodeAndRegex = getLiteralsByESNodeAndRegex;
const readable_tailwind_parsers_es_js_1 = require("../parsers/es.js");
function getLiteralsByESNodeAndRegex(ctx, node, regexCallee) {
if (!(0, readable_tailwind_parsers_es_js_1.hasESNodeParentExtension)(node)) {
return [];
}
const [containerRegexString, stringLiteralRegexString] = regexCallee;
const sourceCode = ctx.sourceCode.getText(node);
const containerRegex = new RegExp(containerRegexString, "gdm");
const stringLiteralRegex = new RegExp(stringLiteralRegexString, "gdm");
const containers = sourceCode.matchAll(containerRegex);
const matchedLiterals = [];
for (const container of containers) {
if (!container.indices || container.indices.length < 2) {
continue;
}
for (const [containerStartIndex] of container.indices.slice(1)) {
const containerNode = ctx.sourceCode.getNodeByRangeIndex((node.range?.[0] ?? 0) + containerStartIndex);
if (!containerNode) {
continue;
}
const literalNodes = (0, readable_tailwind_parsers_es_js_1.getLiteralNodesByRegex)(ctx, containerNode, stringLiteralRegex);
for (const literalNode of literalNodes) {
if ((0, readable_tailwind_parsers_es_js_1.isESSimpleStringLiteral)(literalNode)) {
const literal = (0, readable_tailwind_parsers_es_js_1.getStringLiteralByESStringLiteral)(ctx, literalNode);
literal && matchedLiterals.push(literal);
}
if ((0, readable_tailwind_parsers_es_js_1.isESTemplateElement)(literalNode) && (0, readable_tailwind_parsers_es_js_1.hasESNodeParentExtension)(literalNode)) {
const templateLiteralNode = (0, readable_tailwind_parsers_es_js_1.findParentESTemplateLiteralByESTemplateElement)(literalNode);
const literals = templateLiteralNode && (0, readable_tailwind_parsers_es_js_1.getLiteralsByESTemplateLiteral)(ctx, templateLiteralNode);
literals && matchedLiterals.push(...literals);
}
}
}
}
return matchedLiterals;
}
//# sourceMappingURL=regex.js.map