2

shjs と同様の方法で幅広い言語に構文強調表示を適用できる、C# を使用して記述されたオープン ソース プロジェクトはありますか?

ここにいくつかの擬似コードがあります:

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) フォルダーに、HDD に常に 1 つありました。

この 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

于 2012-07-27T18:39:31.017 に答える
1

正確にはあなたの後にはありませんが、それは役立つかもしれません。

便利なリンク:

http://hilite.me/

于 2012-07-27T08:34:47.417 に答える