先日の日記から、Windows Live Writerを使っています。
コードのシンタックスハイライトは、Paste from Visual Studioアドインを使ってみたのですが、これが吐き出すマークアップがまぁ汚い。ソースを見てもらえればわかりますが、色づけが <span style="rgb( 0, 0, 255 )"> ってな具合なのですね。
これは、クリップボード経由でデータを取得するというこのアドインの性質上、仕方ないと思います。Visual Studioからコードをコピーすると、リッチテキスト形式で色情報を手に入れることができるのですね。これを元に span タグを吐いてるんでしょう。
これとは別にInsert Codeアドインというのもありまして、こっちは以前、誰かのブログで紹介されてたC# Code Formatのエンジンを使っているので、<span class="kwrd">int</span> x = 0; みたいな、若干マシなHTMLを吐いてくれるのですね。
しかし、これには大きな不満があるんです。型の名前をVisual Studio 2005風に色づけしてくれないの。
じゃあ、それに対応したアドインを自分で作ってみようか! と思い立ったものの、さてどうやればよいものか…
C# Code Formatは正規表現でコードを解析しているようですが、CodeDOMってのはこういう目的には使えないのかなぁ、と思ったわけです。
コードを食わせると内部で構文木を作ってくれて、そのノードを列挙するようなことができてもいいだろうに…と思ったのですが、できないのかなぁ。
CSharpCodeProvider.ParseがNotImprementedExceptionを吐くんですねーorz