2

是否有使用 C# 编写的开源项目,它可以以类似于 shjs 的方式将语法高亮应用于各种语言?

这是一些伪代码:

public string HighlightSourceInHTML(string html) {
    return Highlighter.HighlightHTML(html);
}

输入 HTML 将类似于以下内容:

<!DOCTYPE html>
<html>
<head>...</head>
<body>
    <p>Here is a function written using C#:</p>
    <pre class="source lang-csharp">public void foo(int a, int b) {
    return a + b;
}</pre>

    <p>Here is the same function written using JavaScript:</p>
    <pre class="source lang-javascript">function foo(a, b) {
    return a + b;
}</pre>
</body>
</html>

上面的内容基本上会返回整个 HTML 文件,其中所有pre具有类的元素source都在定义源语言的地方突出显示语法

注意:这不适用于服务器端脚本,而是性能不太重要的离线应用程序的一部分。

4

2 回答 2

3

找到一个!我的硬盘上一直有一个,位于名为“ColorizerLibrary.dll”的托管 DLL 中的 Sandcastle Help File Builder (SHFB) 文件夹中。

只需添加对此 DLL 的引用,语法着色就变得非常容易。

这是一个使用示例:

ColorizerLibrary.CodeColorizer colorizer = new ColorizerLibrary.CodeColorizer(
    @"C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Colorizer\highlight.xml",
    @"C:\Program Files (x86)\EWSoftware\Sandcastle Help File Builder\Colorizer\highlight.xsl"
);
colorizer.Init();

string htmlText = "<!DOCTYPE html><html><head><title>Test Page</title></head><body><pre codelanguage=\"CSharp\">public string Foo(string a, int b = 4) {\n\treturn a + b * 3;\n}</pre></body></html>";
return colorizer.ProcessAndHighlightText(htmlText);

注意:请记住链接到 CSS 文件head以可视化语法颜色。

补充:ColorizerLibrary从这里找到源代码:http: //shfb.codeplex.com/SourceControl/changeset/view/98645#1672960

于 2012-07-27T18:39:31.017 回答
1

不完全是你的追求,但它可能会有所帮助。

有用的链接:

http://hilite.me/

于 2012-07-27T08:34:47.417 回答