MarkdownSharp 和 MarkdownSharp C# 代码的 GitHub 语法

发布于 2024-12-17 08:34:59 字数 477 浏览 1 评论 0 原文

有没有办法让 MarkdownSharp (我使用 NuGet 包)来处理 'GitHub 风格的 Markdown (GFM)',特别是 C# 代码的语法突出显示,(在 GFM 中)被写成像这样:

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

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

Is there a way to get MarkdownSharp (I'm using the NuGet package) to handle 'GitHub flavored Markdown (GFM)' and especially syntax highlighting of c# code, which (in GFM) is written like this:

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

So, if I pass Markdown formatted content to MarkDownSharp, containg a C# code block (as above) I want it to generate syntax highlighted html for that c# code. Any ideas? I know I can use the supported 4 spaces to indicate a code block, but again, I'm seeking a solution for getting it to support GitHub flavored Markdown.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

梦冥 2024-12-24 08:34:59

我对 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 有很多注释,而且都只有一个文件,所以修改起来也还不错。

I have made some light modifications to MarkdownSharp that will transform github flavored fenced code blocks

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

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

Would become

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

It handles the cases I needed to use, there are probably lots of edge cases though, feel free to fork/change/modify/pull request. Markdown sharp has plenty of comments and is all only one file, so it's not too bad to modify.

街角卖回忆 2024-12-24 08:34:59

正如人们可以在这篇帖子中读到的那样,GitHub 依赖于RedCarpet 渲染 Markdown 语法。

然而,Vicent Marti(Sundown(前 Upskirt)和 RedCarpet 维护者)声明语法高亮是由Pygments,一个 Python 库。

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

  • 尝试构建 Pygments 的已编译托管版本 源代码感谢IronPython“IronPython的托管API可以是用于将 Python 脚本编译为 DLL、控制台可执行文件或 Windows 可执行文件。")
  • 将 Pygment 移植到 C#
  • 使用不同的语法突出显示产品(例如,ColorCode 由 Codeplex 使用...)

然后:

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

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

As one can read in this post, GitHub relies on RedCarpet to render Markdown syntax.

However, Vicent Marti (Sundown (ex-Upskirt) and RedCarpet maintainer) states that the syntax highlighting is specifically handled by Pygments, a python library.

Back to your concern, I can think of several options to benefit from syntax highlighting from C#:

  • Try and build a compiled managed version of Pygments source code thanks to IronPython ("IronPython’s Hosting APIs can be used to compile Python scripts into DLLs, console executables, or Windows executables.")
  • Port Pygment to C#
  • Use a different syntax highlighting product (for instance, ColorCode which is used by Codeplex...)

Then either:

  • Fork MarkDownSharp to make it accept plug-ins
  • Similarly to what GitHub does, use the managed syntax highlighting product and post process the Html generated by MarkDownSharp

By the way, as a MarkDown alternative, you might want to consider Moonshine, a managed wrapper on top of Sundown which is said to be "at least 20x faster than MarkdownSharp when run against MarkdownSharp's own benchmark app."

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文