@lcap/builder
Version:
lcap builder utils
52 lines (51 loc) • 2.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.replaceXmlTagsPrecisely = replaceXmlTagsPrecisely;
exports.replaceTagName = replaceTagName;
exports.getWithFormName = getWithFormName;
exports.isWithForm = isWithForm;
exports.addPrefix = addPrefix;
exports.replaceAllTagName = replaceAllTagName;
exports.replaceAllTagNameInCode = replaceAllTagNameInCode;
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;
}
function replaceTagName(code, source, target) {
return code.replaceAll(`<${source}\n`, `<${target}\n`)
.replaceAll(`<${source} `, `<${target} `)
.replaceAll(`<${source}>`, `<${target}>`)
.replaceAll(`</${source}>`, `</${target}>`)
.replaceAll(`</ ${source}>`, `</${target}>`);
}
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('-')));
}
function isWithForm(config) {
const formName = getWithFormName(config.name);
return config.children && config.children.length > 0 && config.children.some((c) => c.name === formName);
}
function addPrefix(name, prefix) {
return (0, lodash_1.upperFirst)(prefix.toLowerCase()) + name;
}
function replaceAllTagName(code, replaceMap) {
return Object.keys(replaceMap).reduce((result, key) => {
return replaceXmlTagsPrecisely(result, key, replaceMap[key]);
}, code);
}
function replaceAllTagNameInCode(code, replaceMap) {
return Object.keys(replaceMap).reduce((result, key) => {
return result.replaceAll(`'${key}'`, `'${replaceMap[key]}'`).replaceAll(`"${key}"`, `"${replaceMap[key]}"`);
}, code);
}