@vuese/markdown-render
@vuese/markdown-render 是一个根据 @vuese/parser 的结果渲染 markdown
字符串的工具。
安装
yarn add @vuese/markdown-render
使用
// 导入 parser 函数
import { parser } from '@vuese/parser'
import Render from '@vuese/markdown-render'
// 读取 vue 文件内容
const source = fs.readFileSync('path-to-your-component.vue', 'utf-8')
// 使用 parser 函数解析并得到结果
try {
const parserRes = parser(source)
// 创建渲染实例
const r = new Render(parserRes)
// 基本渲染,返回值是一个对象
const renderRes = r.render()
// 渲染完整的 markdown 文本,返回值是 markdown 字符串
const markdownRes = r.renderMarkdown()
} catch(e) {
console.error(e)
}
WARNING
@vuese/markdown-render
只能正确处理 @vuese/parser
模块的默认处理结果。
Render 类
@vuese/markdown-render
模块默认导出类的类型如下:
class Render {
parserResult: ParserResult
options?: RenderOptions
constructor(parserResult: ParserResult, options?: RenderOptions)
render(): RenderResult
propRender(propsRes: PropsResult[]): string
slotRender(slotsRes: SlotResult[]): string
eventRender(propsRes: EventResult[]): string
methodRender(slotsRes: MethodResult[]): string
renderTabelHeader(header: string[]): string
renderTabelRow(row: string[]): string
renderSplitLine(num: number): string
renderMarkdown(): MarkdownResult | null
}
TIP
如上高亮的三句代码是应该被关注的。
Render
类的构造函数接收两个参数:@vuese/parser
模块的解析结果,以及一个可选的选项对象。
RenderOptions
- 类型:
interface RenderOptions {
props: string[]
slots: string[]
events: string[]
methods: string[]
}
- 默认值:
{
props: ['Name', 'Description', 'Type', 'Required', 'Default'],
events: ['Event Name', 'Description', 'Parameters'],
slots: ['Name', 'Description', 'Default Slot Content'],
methods: ['Method', 'Description', 'Parameters']
}
你可能已经注意到了,每个数组中的字符串就是渲染出来的表格的标题。但很不幸,你不可以改变他们的名字,不过你可以改变他们的顺序,对渲染出的表格的列排序。
实例方法 - render
调用 r.render()
函数,会返回类型为 RenderResult
的结果:
interface RenderResult {
props?: string
slots?: string
events?: string
methods?: string
}
一个例子是:
{
"props": "|Name|Description|Type|Required|Default|\n|---|---|---|---|---|\n|name|The name of the form, up to 8 characters|`String` / `Number`|`true`|-|\n",
"slots": "|Name|Description|Default Slot Content|\n|---|---|---|\n|header|Form header|`<th>title</th>`|\n",
"events": "|Event Name|Description|Parameters|\n|---|---|---|\n|onclear|Fire when the form is cleared| The argument is a boolean value representing xxx|\n",
"methods": "|Method|Description|Parameters|\n|---|---|---|\n|clear|Used to manually clear the form|-|\n"
}
实例方法 - renderMarkdown
调用 r.renderMarkdown()
函数,会返回完整的 markdown
字符串和组件名称。本质上就是把 r.render()
函数的返回值做拼装处理:
interface MarkdownResult {
content: string
componentName: string
}