本社区的论坛框架 Flarum 用到的一个核心组件,可以用来自定义编辑器的语法。
研究了一下,发现这玩意设计还挺有意思,核心是通过中间态的 XML 存储实际解析的内容;然后以一系列的插件来实现具体的解析功能;目前主要支持 BBCode 和 Markdown,并可以通过正则、BBCode 的 tag 再结合 XSLT 语言实现自定义扩展语法。
另外,它除了在 PHP 后台部分做文本解析,还可以生成语法等价的解析 JS,直接在前端实现预览的功能(就是你在编辑帖子时看到的同步刷新)。
相关链接:
一直想魔改编辑器与文本渲染相关的逻辑,后续也会多分享一些折腾的记录,有兴趣的话可以一起搞。