C/C++的Markdown实现

39

什么是C或C++中最好的Markdown实现?

我通过谷歌找到了以下内容,并希望得到关于哪些工具效果好,哪些不好(以及是否有我错过的其他工具)的评论:


另请参见http://fletcherpenney.net/multimarkdown/ - mb21
cmark 是最快的。 - Melroy van den Berg
1个回答

63

Disadvantages

  • Can be difficult to read and modify due to its hardcore C code style.
  • Limited functionality compared to other implementations.
  1. peg-markdown 依赖于GLib和其他第三方工具。我已经测试过,它的功能非常好。

    优点:

    • 双重许可证GPL和MIT。
    • 使用内部形式语法,易于维护和扩展。

    缺点:

    • 依赖于GLib。
    • 提供C API。
  2. Cpp-Markdown, 大多数是C++代码,但速度较慢且有些臃肿。另一方面,它很容易理解和修改,依赖于boost-1.35。

    优点:

    • 仅依赖于boost。
    • 用C++编写,看起来更安全。
    • 采用MIT协议。

    缺点:

    • 速度较慢(仍然比Perl实现快约10倍,但比Discount慢约10倍)。
  3. Discount, 这是我在博客http://art-blog.no-ip.info/cppcms/blog和维基http://art-blog.no-ip.info/wikipp/en/page/main中使用的代码。它是由资深C程序员编写的,具有相当难以维护的特点(即使开发人员也在积极维护它)。

    优点:

    • 极快速。
    • 纯C编写(没有第三方依赖)。
    • 积极维护。

    缺点:

    • 由于其资深C代码风格,阅读和修改可能有困难。
    • 与其他实现相比,功能受限。
  • 拥有宽松的3条款BSD许可证。
  • 缺点

    • 几乎不可能维护(即使我可以删除/添加一些特性)。
    • 只有FILE API,因此我需要调整代码以使其与通用缓冲区配合使用
    • 根据4条款BSD许可证进行许可,该许可证与GPL不兼容。如果您想将其用于不作为GPL软件的一部分,则会出现问题

    我为什么这么了解它们呢?

    因为我正在开发 CppCMS,所以我需要一个好的Markdown转换成HTML工具。当我选择了一个(Discount)时,它是唯一的解决方案。从那时起,由于许可问题,我需要替换它。但话说回来,我仍然很喜欢它,因为它是最快的Markdown解决方案。

    P.S.:如果您想要Discount的C++包装器,请查看http://cppcms.svn.sourceforge.net/viewvc/cppcms/cms/trunk/cxxmarkdown/,这不是最新版本,但它已经过调整。

    编辑:我刚访问了Discount网站,并发现它已添加了非FILE API。所以现在它是一个真正的库。

    编辑2:如果您找到更好的实现或编写自己的FOSS许可证,请告诉我;)

    编辑3:如cloose所评论的,discount已将许可证更改为3条款BSD。


    11
    你在这里使用“hardly”的方式是不正确的。 - Mike Weller
    2
    在这里没有提到 https://github.com/vmg/sundown,你可以去看看。 - Grzegorz Adam Hankiewicz
    1
    啊,Sundown已经不再维护了,它以https://github.com/hoedown/hoedown的形式存在。 - Grzegorz Adam Hankiewicz
    16
    “hardly maintainable/impossible to maintain” 是什么意思?这让人觉得Discount的代码难以维护(即一团糟的代码,不应该碰)。但是你又在括号里说它正在被积极维护,而且你可以相对轻松地添加/删除功能。你具体指的是什么? - Cornstalks
    2
    cmark是另一种替代方案(CommonMark实现):https://github.com/jgm/cmark - dacap
    显示剩余4条评论

    网页内容由stack overflow 提供, 点击上面的
    可以查看英文原文,
    原文链接