[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1] [Programming .NET Tips]
[はじめに]
・プログラムソース(C#、VB.NET)をHTMLに変換するツールを
作ってみましたので、ご紹介します。
(全てのソースは膨大なので、変換処理のみ)
このブログに貼り付けているプログラムソースもこのツールで変換したものです。
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
(インデントが無視されない)
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」リンクを付加)
但し、IEのJScriptであるclipboardData.setDataメソッドを使用している為、IE限定です。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
・プログラムソース(C#、VB.NET)をHTMLに変換するツールを
作ってみましたので、ご紹介します。
(全てのソースは膨大なので、変換処理のみ)
このブログに貼り付けているプログラムソースもこのツールで変換したものです。
[機能]
プログラムソースの文字列を、HTMLに変換する。
変換後のHTMLは、<table>タグで整形した形になります。
[変換後HTML]
・インデントのスペースが「& nbsp;」に変換され、ブラウザ上でも表示される。
(インデントが無視されない)
・予約語、コメント、文字列(ダブルコーテーションで囲んだ部分)に色がつく。
・ソースコードをクリップボードにコピーする機能を提供。(「コードのコピー」リンクを付加)
但し、IEのJScriptであるclipboardData.setDataメソッドを使用している為、IE限定です。
[制限事項]
・言語は、C#とVB.NETのみです。
但し、VB6やVBA等はVB.NETと言語仕様が似ている為、
制限事項を考慮の上、利用することもできます。
・C#のコメントは、行の先頭の「//」のみサポート。
行の途中の「//」や「/*」~「*/」はサポートしません。
・VB.NETのコメントは、行の先頭の「'」のみサポート。
行の途中の「'」はサポートしません。
[使い方]
(1)ビルド前に、「System.Web」を参照設定に追加する。
追加しないとコンパイルエラーになります。
(2)CodeConverterToHtml クラスのGetInstanceメソッドで、
変換オブジェクトを取得します。
言語の種類(C#かVB.NET)は、GetInstanceメソッドの第1引数で指定します。
(3)CodeConverterToHtml クラスのConvertCodeToHtmlメソッドで、
ソースをHTMLに変換します。
ConvertCodeToHtmlメソッドの仕様
・第1引数:プログラムソースの文字列
・第2引数:整形後HTMLのタイトル。(省略可能)
・戻り値:変換後のHTMLの文字列
変換後の文字列(HTML)は、
<table>タグで整形した形となります。
(<html>タグでは囲みません。)
| |
[VB.NET]変換機能の使用例 |
[改造ポイント]
・拡張性
言語(C#、VB.NET)の固有ロジックを、
CodeConverterToHtml の派生クラスに定義しています。
(VBCodeConverterToHtml、CSharpCodeConverterToHtml)
予約語一覧、キーワードの前景色、背景色、検索条件(正規表現)、変換仕様は、
派生クラスの修正で変更できます。
また、言語を追加する場合も、既存の派生クラスの流用が簡単です。
・予約語一覧
予約語一覧は各派生クラスに定義しています。
予約語の追加、変更、削除が簡単です。
・キーワードの検索条件
正規表現を各派生クラスに定義しています。
正規表現を修正することで、キーワードの検索条件を変更できます。
・キーワードの変換仕様
正規表現の検索結果毎に、
MatchEvaluator()メソッドが呼ばれます。
MatchEvaluator()メソッドの修正で変換仕様を変更できます。
・マルチスレッド対応
スレッドセーフではありません。
派生クラスのGetRegEx() とGetReservedWords()に、
複数スレッドが同時アクセスした場合、
m_RegEx変数、m_ReservedWords変数の値に
矛盾が生じる可能性があります。
ASP.NET等のマルチスレッド環境で安全に使用する為には、
SyncLockで排他をかける必要があります。
[プログラムソース]
ブログの容量制限の為、下記に分けて記述しています。
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page1]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page2]
[.NET]プログラムコードの変換(C#、VB.NET→HTML)[Page3]
| |
[VB.NET]CodeConverterToHtml |
| |
[VB.NET]VbCodeConverterToHtml.vb |
コメント 0