c/c++/d ソースを html 化するコマンドライン・ツールです。
まあ、よくある類の簡単ツールなんで、ネットで検索したら、 いろいろあるけれど、微妙に己の欲求をみたす色分けが可能な ものは無かったので、作ってみた、と。
(単に見つけられなかっただけのような気もする。見に行くWeb頁で 己好みの色分けがあったりすし...間抜けてそうオレ^^;)とりあえず、可能なことは、以下の通り。
- (C/C++)キーワードの色付け
キーワードはグループに分けて登録可能。
キーワードは別ファイルに記述。
※なんで #や"'\の扱いが同じC系の言語なら、C/C++以外でも:-)
- C/C++記号の色付け
- #名前 の色付け. #前後の空白に対応。
- "文字列"の色付け
- 文字定数'C'の色付け
- [選択] \エスケープの色付け。\x??,\u????なども
- [選択] "文字列"や'C'以外にある \\ (主に行連結)は別色で色付け。
- 数値定数の色付け
- [選択] 0のみ以外の8進数の色付け
- コメントの色付け
- [選択] doxygenコメント部( /// /** //! /*! )を別途色付け
- [選択] //直後の空白の有無で色違いのコメント色付け
- [選択] 行末に特定の文字列のある行のみ色付き、以外をハーフトーン化
- 生成するhtmlの最初(header部)と最後(footer部)も定義ファイルに記述
- タブ・サイズ指定
- 行番号付加
- 入力はシフトJIS文字かUTF8.(自動判別でなく、オプション指定).
- D言語固有の /+ コメント +/ や
\エスケープしない文字列の r"文字列" `文字列` に対応
ああと、生成するhtml は v4.0系ってことになるのかな。 <pre></pre>で囲み <span> <strong>に class=を付けたものに なります。
(記号に色つけちゃうと、どうしてもhtmlは太っちゃいますね)
まあ、こんな、感じにです。
(ああ適当にサンプルとして書いたものなんで、実際の不具合は突っ込まないでね^^;)1 : // サンプル・プログラム. ごてごてhello world 2 : #include <stdio.h> 3 : #include <stdlib.h> 4 : 5 : #if defined(NDEBUG) 6 : # define ASSERT(x) 7 : #else 8 : #define ASSERT(x) ((x) || (printf("%s %d : %s は偽\n", \ 9 : __FILE__, __LINE__, #x), ((int(*)(int))exit)(1)) ) 10 : #endif 11 : 12 : /// メイン 13 : int main(int argc, char *argv[]) 14 : { 15 : ASSERT(argc < 2); 16 : #ifdef __cplusplus // c++のとき 17 : cout << "hello world!" << endl; 18 : #else // c のとき 19 : printf("hello world!\n"); 20 : #endif 21 : return 0; 22 : }
usage> c2htm [-opts] 入力ファイル(s)
入力ファイルに拡張子 .htm をたしたファイルに変換結果を書出す。
-c[CFGFILE] デフォルト以外の定義ファイルを読込む。 :NAME -cの特化系。
exeと同じフォルダにある c2htm-NAME.cfg を読込む。 :win :java とかしてライブラリキーワードや言語 キーワードを切り替えたい場合を想定。-o[FILE] 出力ファイル名をFILEにする。 -n[N[:S]] 行番号を付加.
N=桁数(省略:5) -n-, -n0 だと行番号を着けない
S=行番号と本文の敷居文字列. (省略 " : ")
定義ファイルに書かれたものを、これで置き換え可能。-t[N] 入力ソースのタブサイズの設定(省略:4)
定義ファイルに書かれたものを、これで置き換え可能。-m[N] ヘッダ&フッダ組の番号
定義ファイルにヘッダ&フッタは 4組までもてるので いずれを使うかを変更。デフォルト 0-ql<STR> 行末に STR のある行のみ色付き変換し、以外の行はハーフトーンにする。
ex) c2htm -ql★ foo.c1 : void foo(void) { 2 : bar(); 3 : baz(); // この行だけ色つけ ★ 4 : }-qr<STR> -ql にほぼ同じだが、行末のSTRを出力しない。 -s[N] 標準入出力を可能にする。
-gencfg デフォルトcfg定義を標準出力
内臓の状態の確認 & exeしかなかったときに .cfg を再作成する用に。
デフォルトの定義ファイル c2htm.cfg が c2htm.exe と同じフォルダ に必要。
※exe名に連動するので、c2htm.exe を java2htm.exe に変えたら 定義ファイルも java2htm.cfg にする。定義ファイルに定義できることについては、付属の c2htm.cfg の コメントを見たってください。定義ファイルの文法は、
ってだけです。
- コメントは、行頭、または直前が空白の // から行末まで。 (文字列中に詰まって // がある場合、それはコメントにならない)
- 定義は
名前=文字列または名前 { 文字列1 文字列2 : : }の形になる。
C_CMTK を設定すると、
//コメント ※コメント開始記号の直後に空白がない場合と// コメント ※コメント開始記号の直後に空白がある場合を別物として扱います。これはのように、説明としてのコメントは 空白つき//で行い、 プログラムをコメントアウトした部分は空白無し//コメント にする習慣があるならば、それを反映したいなあ、てことで あります。// テスト //test2(); test();