MarkdownSharp和GitHub语法用于C#代码

37

有没有办法让MarkdownSharp(我正在使用NuGet包)来处理'GitHub风格的Markdown(GFM)',特别是C#代码语法高亮,它(在GFM中)像这样编写:

```c#
//my code.....
```
所以,如果我传递Markdown格式的内容给MarkDownSharp,并包含一个C#代码块(如上所示),我希望它能生成该C#代码的语法高亮html。有什么想法吗?我知道我可以使用支持的4个空格来指示代码块,但是,我正在寻找一种解决方案,以便它支持GitHub风格的Markdown。

1
我正试图解决同样的问题,但我需要特定的Github表支持。我没有找到任何现有的库似乎可以做到这一点。与此处讨论的相同问题。链接 - Yostage
3个回答

36

我对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有很多注释,并且全部只有一个文件,因此修改起来并不太麻烦。



3

正如您可以在文章中阅读到的那样,GitHub依赖于RedCarpet来呈现Markdown语法。

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

回到您的问题,我可以想到几个选项来受益于C#的语法高亮:

尝试使用IronPython编译Python脚本为DLL、控制台可执行文件或Windows可执行文件,从而构建Pygments的已编译托管版本源代码(“IronPython的Hosting API可用于将Python脚本编译为DLL、控制台可执行文件或Windows可执行文件。”)。将Pygment移植到C#。使用不同的语法高亮产品(例如,Codeplex使用的ColorCode)。然后,要么:分叉MarkDownSharp以使其接受插件;要么类似于GitHub所做的那样,使用托管语法高亮产品并后处理由MarkDownSharp生成的HTML。顺便说一下,作为MarkDown的替代品,您可能想考虑Moonshine,这是一个在Sundown之上的托管包装器,据说在运行MarkdownSharp自己的基准应用程序时至少快20倍。

1
我实际上两种方法都尝试过。使用IronPython和C#,用Pygments做了一个示例,但这条路线带来了太多的依赖关系。解决方案是使用MarkdownSharp和ColorCode进行预处理和后处理。我将其发布在GitHub和NuGet上。 - Daniel
现在一些链接已经损坏了,@nulltoken。 - Adam K Dean
2
@AdamKDean,日落链接现已修复。 - nulltoken

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