>(obj: T, path: K) {
+ return path.split('.').reduce((prev, curr) => prev && prev[curr], obj)
+}
+
+/**
+ * 对请求的返回结构做目标转化
+ * @param source
+ * @param target
+ * @returns
+ */
+export function transformRes(source, target) {
+ target = { ...target }
+ const result = {}
+ for (const key in target) {
+ const path = target[key]
+ result[key] = getByPath(source, path)
+ }
+ return result
+}
diff --git a/packages/website-build/src/compiler/compile-src-code-md.ts b/packages/website-build/src/compiler/compile-src-code-md.ts
index 86f4833..d925c1c 100644
--- a/packages/website-build/src/compiler/compile-src-code-md.ts
+++ b/packages/website-build/src/compiler/compile-src-code-md.ts
@@ -9,6 +9,29 @@ import { parser } from '@mpxjs/vuese-parser'
import { Render } from '@mpxjs/vuese-markdown-render'
import { renderOptions } from '../common/options.js'
+/**
+ * 将字符串的对象转为可读的markdown格式
+ * @param str
+ * @returns
+ */
+export function convertObjectStringToMarkdownHtml(str) {
+ if (!str) return
+ return (
+ '' +
+ str
+ .split('\n')
+ .map((line, idx) => {
+ // 第一行和最后一行是{},将括号的前后空白字符去除,只保留属性的
+ if (!(idx !== 0 && idx !== str.split('\n').length - 1)) {
+ line = line.replace(/\s+/g, '').replace(//g, '>')
+ }
+ return line
+ }) // 防止HTML标签注入
+ .join('
') +
+ '
'
+ )
+}
+
/**
* 解析 cube-ui src 文件夹下的组件,生成md文档
*
@@ -44,6 +67,9 @@ const genSrcCodeMd = function (srcDir: string, component: string, fnMixins) {
item.type = item.type.replace(/\n/g, '
')
item.type = item.type.replace(new RegExp(optionalMark, 'g'), '?')
})
+ text.props?.forEach(item => {
+ item.default = convertObjectStringToMarkdownHtml(item.default)
+ })
const render = new Render(text, Object.assign({
name: component
} as any, renderOptions))