UNPKG

@lcap/builder

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