@lcap/builder
Version:
lcap builder utils
53 lines (52 loc) • 2.53 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceAllTagNameInCode = exports.replaceAllTagName = exports.addPrefix = exports.isWithForm = exports.getWithFormName = exports.replaceTagName = exports.replaceXmlTagsPrecisely = void 0;
const lodash_1 = require("lodash");
function replaceXmlTagsPrecisely(xmlString, oldTagName, newTagName) {
// 匹配开始标签(带属性)
const startTagRegex = new RegExp(`<\\s*${oldTagName}(\\s+[^>]*)?>`, 'gi');
// 匹配结束标签
const endTagRegex = new RegExp(`<\\s*/\\s*${oldTagName}\\s*>`, 'gi');
// 匹配自闭合标签
const selfClosingRegex = new RegExp(`<\\s*${oldTagName}(\\s+[^>]*)?\\s*/\\s*>`, 'gi');
// 分步替换
let result = xmlString.replace(startTagRegex, `<${newTagName}$1>`);
result = result.replace(endTagRegex, `</${newTagName}>`);
result = result.replace(selfClosingRegex, `<${newTagName}$1/>`);
return result;
}
exports.replaceXmlTagsPrecisely = replaceXmlTagsPrecisely;
function replaceTagName(code, source, target) {
return code.replaceAll(`<${source}\n`, `<${target}\n`)
.replaceAll(`<${source} `, `<${target} `)
.replaceAll(`<${source}>`, `<${target}>`)
.replaceAll(`</${source}>`, `</${target}>`)
.replaceAll(`</ ${source}>`, `</${target}>`);
}
exports.replaceTagName = replaceTagName;
function getWithFormName(name) {
const [prefix, ...rest] = (0, lodash_1.kebabCase)(name).split('-');
return (0, lodash_1.upperFirst)((0, lodash_1.camelCase)([prefix, 'form', ...rest].join('-')));
}
exports.getWithFormName = getWithFormName;
function isWithForm(config) {
const formName = getWithFormName(config.name);
return config.children && config.children.length > 0 && config.children.some((c) => c.name === formName);
}
exports.isWithForm = isWithForm;
function addPrefix(name, prefix) {
return (0, lodash_1.upperFirst)(prefix.toLowerCase()) + name;
}
exports.addPrefix = addPrefix;
function replaceAllTagName(code, replaceMap) {
return Object.keys(replaceMap).reduce((result, key) => {
return replaceXmlTagsPrecisely(result, key, replaceMap[key]);
}, code);
}
exports.replaceAllTagName = replaceAllTagName;
function replaceAllTagNameInCode(code, replaceMap) {
return Object.keys(replaceMap).reduce((result, key) => {
return result.replaceAll(`'${key}'`, `'${replaceMap[key]}'`).replaceAll(`"${key}"`, `"${replaceMap[key]}"`);
}, code);
}
exports.replaceAllTagNameInCode = replaceAllTagNameInCode;