用C#编写的灵活语法高亮显示器

时间:2012-07-27 00:47:16

标签: c# html html5 xhtml syntax-highlighting

是否有一个使用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个元素的元素都会被突出显示语法

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

2 个答案:

答案 0 :(得分:3)

找到一个!我的硬盘上有一个一直存在于名为“ColorizerLibrary.dll”的托管DLL中的Sandcastle帮助文件生成器(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);

注意:请记住链接到head中的CSS文件,以显示语法颜色。

已添加:请从此处查找ColorizerLibrary的源代码:http://shfb.codeplex.com/SourceControl/changeset/view/98645#1672960

答案 1 :(得分:1)

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

有用的链接:

http://hilite.me/