MarkdownSharp& C#代码的GitHub语法

时间:2011-11-21 11:22:46

标签: c# github markdown markdownsharp

有没有办法让MarkdownSharp(我正在使用NuGet package)来处理'GitHub flavored Markdown(GFM)',特别是c#代码的语法高亮,它(在GFM中)被写成这样:

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

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

3 个答案:

答案 0 :(得分:16)

我对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有很多评论,只有一个文件,因此修改起来并不算太糟糕。

答案 1 :(得分:6)

答案 2 :(得分:3)

正如人们可以阅读post,GitHub依赖于RedCarpet来呈现Markdown语法。

然而,Vicent Marti(Sundown(前Upskirt)和RedCarpet维护者)states语法突出显示由Pygments(一个python库)专门处理。

回到你的问题,我可以想到几个选项,可以从C#语法高亮中受益:

  • 通过source code“IronPython的托管API可用于将Python脚本编译为DLL,控制台可执行文件或Windows可执行文件),尝试并构建Pygments IronPython的编译托管版本。”
  • Port Pygment to C#
  • 使用不同的语法高亮产品(例如,Codeplex使用的ColorCode ...)

然后:

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

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