【问题标题】:What library does GitHub use to render diffs between Markdown documents?GitHub 使用什么库来呈现 Markdown 文档之间的差异?
【发布时间】:2021-05-05 04:37:59
【问题描述】:

GitHub 支持可视化两个版本的 Markdown 之间的差异:

他们使用什么库?是否有任何与此库等效的开源?

【问题讨论】:

    标签: github web markdown


    【解决方案1】:

    您可以单独使用git diff 实现相同的目标:

    git diff --word-diff
    git diff --word-diff-regex
    

    并进一步配置它以使其着色,同时检查不同分支/提交之间的差异。将 diff 保存为 Markdown,将其渲染为 HTML,然后简单地解析 HTML 的输出并通过 CSS 添加颜色。

    如果你的 Markdown 渲染器出现问题(例如尝试解析或无法解析 git 符号),只需在文本周围添加反引号(`),让它呈现为“”或“”标签,然后解析 HTML 并替换使用您选择的标签和适当的 CSS 对其进行着色。

    相关文章(图片来源):https://blog.ipspace.net/2020/04/git-tip-word-diff.html

    关于他们是否有 lib somewhere openly 我找不到任何关于它的提及,因此它可能直接嵌入到他们的一些 GUI/后端代码(专有)中,或者根本不公开。

    【讨论】:

    • 我试图在我的 React 应用程序中实现差异视图。这个想法是将降价文档的当前版本与以前的版本进行区分。 Markdown 的视觉差异查看器很有意义;然后我看到了 GitHub 在做什么,更加好奇了。
    【解决方案2】:

    GitHub 在其网站github/markup 上记录了他们如何处理标记(来自 Markdown、textile、rst、asciidoc 等)。虽然这仅涉及将源文本呈现为 HTML(不区分),但它告诉我们他们使用 github/linguist 进行语法突出显示。事实证明,diff 是一种可以突出显示的语言。

    虽然这并没有告诉我们 GitHub 如何生成其差异,但它确实表明了他们如何在其网站上应用突出显示差异。正如另一个答案已经演示了如何生成 GitHub 使用的差异(word-diff)样式,您应该能够通过语言学家传递 word-diff 的文本来复制相同的行为。

    【讨论】:

    • “[github/linguist] 在 GitHub.com 上用于检测 blob 语言、忽略二进制或供应商文件、抑制 diff 中生成的文件以及生成语言分解图。” github.com/github/linguist#readme
    猜你喜欢
    • 2017-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-21
    • 1970-01-01
    相关资源
    最近更新 更多