D

88250 Java golang Linux 开源
1 号画家成员, 2012-11-24 16:19:56 加入
7.6k
个人主页浏览
14.2k
帖子 + 回帖 + 评论
317.2k
贡献点
5368h35m
在线时长
✪ 全职开源程序员、B3log 开源社区联合创始人
  • 昆明 2019-09-18 22:37

    开始实现 Lute source map(源码映射):实现源码位置(source position)解析映射,可用于判断某个字符位置所在 AST 节点,以支持编辑器场景实现光标位置描述。https://github.com/b3log/lute/issues/26

    什么是 Source Map

    Source Map 即 Markdown 源码和 HTML 目标代码之间的字符关联信息。要实现双向映射 AST 上必须要有结构来存储映射关系:

    • 源码中每个字符都可以在 AST 上找到对应节点
    • 从 AST 节点也可以在源码中找到对应字符位置

    Source Map 有什么用

    • 为编辑器和预览视图联动提供支持
      • 描述光标插入位置,以支持所见即所得的 Markdown
      • 分屏阅览时可将 Markdown 和 HTML 通过映射行号对应来实现精确的同步滚动
    • 为 Markdown 语法高亮提供基础

    其实不用源码映射也可以实现上述功能,只是在稍微复杂的 Markdown 源码中会出现小问题。能结构化解决的问题最好结构化解决,否则应用陷入 if else 的泥潭就惨了。

  • 更多