如果你在做AI相关的工作,可能会用到这个插件。它可以帮助你在markdown中嵌入数据块,并且支持自定义标签和数据格式。
注意是类 fence 语法,最好输出是使用换行符包裹避免出现意外情况
- 直接在
markdown
中使用yugu
标签,标签的开始和结束都需要添加yugu-start
和yugu-end
,中间可以放置任意内容。 - 支持自定义开始结束标签对应的
tag
, 例如app
,sub
,yugu-start
和yugu-end
中的tag
属性值需要一致。必须使用[]
包裹 - 支持自定义数据,数据可以是字符串和 json 对象,json 对象需要转义。且数据必须用
$
包裹 - 支持嵌套标签,嵌套标签必须成对,不能跨
yugu-xx
分开。
插件依赖markdown-it-attrs
,需要在 markdown-it
中注册该插件。
import MarkdownIt from 'markdown-it'
import markdownItAttrs from 'markdown-it-attrs'
import markdownItDataBlock from '@yuguaa/markdown-it-data-block'
const md = new MarkdownIt()
.use(markdownItAttrs)
.use(markdownItDataBlock)
const html = md.render(
`::: yugu-start[app]\${"a": 1,"b":[{"c":222}]}\$
app 块内容
\n::: yugu-start[sub]\${"a": 1,"b":[{"c":55}]}\$
sub 块内容
\n::: yugu-end[sub]\$支持嵌套,但必须合并标签嵌套\$
app 块内容结束,在app块内
\n::: yugu-end[app]\$这里是数据,可以是字符串和json\$
app 块内容外`
)
console.log(html)
// 注意流式情况下包裹换行符号避免意外情况
'::: yugu-start[app]${"a":1,"b":[{"c":222}]}$ \napp开始了\n # 一级标题\n::: yugu-start[sub]\n # 二级标签开始了\n::: yugu-end[sub]\n- [ ] 7:30-8:00 晨跑3公里\n- [ ] 每工作1小时起身拉伸/喝水\n\n\n # 二级标签结束了\n \n\n::: yugu-end[app]$这里是数据,可以是字符串和json$\n'