UNPKG

@lcap/builder

Version:
53 lines (52 loc) 2.53 kB
"use strict"; 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;