const scriptRe = /`
)
} else {
code = `${decodeCode}
`
}
// 去除 export default,保留其中的内容
const exportDefaultResult = code.match(exportDefaultRe)
if(exportDefaultResult){
code = code.replace(exportDefaultRe,trim(trimBr(exportDefaultResult[1]+``)))
// console.log("export",code);
}
// 去除 setup 函数,保留其中的内容
const setupResult = code.match(setupRe)
if(setupResult){
code = code.replace(setupRe,trimBr(setupResult[1]))
// console.log("setup",code);
}
// TODO 这是临时方案,需要在 playground 中支持 @layui/layer-vue
// 替换 layer 引入语句
if(code.match(layerRe)){
code = code.replace(layerRe,`import { layer } from "@layui/layui-vue"`)
// console.log("layer",code);
}
const originCode = {
[MAIN_FILE_NAME]: code,
}
const encoded = utoa(JSON.stringify(originCode))
const link = `https://layui-vue.gitee.io/layui-vue-playground/#${encoded}`
return {
encoded,
link,
}
}
//编码
function utoa(data: string): string {
return btoa(unescape(encodeURIComponent(data)));
}
// 去除字符串两端的空白行
function trimBr(str: string): string{
return str.replace(/(^[\r\n]*)|([\r\n]*$)/,"")
}
// 去除字符串两端的空格
function trim(str: string): string {
return str.replace(/(^\s*)|(\s*$)/g, "");
}