28

有没有办法让 MarkdownSharp(我正在使用NuGet 包)来处理“ GitHub 风格的 Markdown (GFM)”,尤其是 c# 代码的语法高亮,它(在 GFM 中)是这样写的:

```c#
//my code.....
```

因此,如果我将 Markdown 格式的内容传递给 MarkDownSharp,包含一个 C# 代码块(如上),我希望它为该 c# 代码生成语法突出显示的 html。有任何想法吗?我知道我可以使用支持的 4 个空格来指示代码块,但我再次寻求一种解决方案,让它支持 GitHub 风格的 Markdown。

4

3 回答 3

23

我对 MarkdownSharp 做了一些轻微的修改,将转换 github 风格的围栏代码块

https://github.com/KyleGobel/MarkdownSharp-GithubCodeBlocks

```cs
Console.WriteLine("Fenced code blocks ftw!");
```

会成为

<pre><code class='language-cs'>
Console.WriteLine("Fenced code blocks ftw!");
</code></pre>

它处理我需要使用的情况,但可能有很多边缘情况,请随意分叉/更改/修改/拉取请求。Markdown sharp 有很多注释,而且都是一个文件,所以修改也不错。

于 2014-05-11T17:45:33.843 回答
8

结果如下:https ://github.com/danielwertheim/kiwi/wiki/Use-with-Asp.Net-MVC

//D

于 2011-12-03T01:27:20.553 回答
3

正如在这篇文章中所读到的,GitHub 依赖RedCarpet来呈现 Markdown 语法。

然而,Vicent Marti ( Sundown (ex-Upskirt) 和 RedCarpet 维护者)指出语法高亮是由Python 库Pygments专门处理的。

回到您的关注点,我可以想到几个从 C# 语法突出显示中受益的选项:

  • 借助IronPython,尝试构建 Pygments 源代码的已编译托管版本( IronPython的托管 API 可用于将 Python 脚本编译为 DLL、控制台可执行文件或 Windows 可执行文件。”
  • 将 Pygment 移植到 C#
  • 使用不同的语法高亮产品(例如, Codeplex 使用的ColorCode ...)

然后:

  • Fork MarkDownSharp 使其接受插件
  • 与 GitHub 所做的类似,使用托管语法突出显示产品并后处理 MarkDownSharp 生成的 Html

顺便说一句,作为 MarkDown 的替代品,您可能需要考虑Moonshine,它是 Sundown 之上的托管包装器,据说“在针对 MarkdownSharp 自己的基准应用程序运行时,至少比 MarkdownSharp 快 20 倍”。

于 2011-12-02T13:49:56.597 回答