C#マークダウンパーサmarkdigを使ってみる
Markdigをインストール
Nugetからインストールします。
使い方
使い方は簡単です。もちろんもっといろいろできるでしょうが、マークダウンテキストをHTMLに変換するには以下のようにします。
using System; using Markdig; namespace MarkdigTest { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); var html = Markdown.ToHtml("This is a text with some **emphasis**"); Console.WriteLine(html); } } }
Markdown.ToHtml
メソッドにマークダウンの文字列を与えるだけです。
実行結果は以下のようになります。
Hello World! <p>This is a text with some <strong>emphasis</strong></p>
**
で囲んだ場所がstrong
タグで囲まれていますね。
すごい。
もう少ししっかりしたマークダウンを読み込ませてみる
しかし、上のような非常に簡単な例だとイマイチすごさが伝わりにくいかと思うので、もっとちゃんとしたマークダウンをHTMLに変換してみます。
読み込ませるのは、このmarkdigのReadMeです。
このReadMeの編集ボタン(ペンマーク)を押して、マークダウン表記を表示します。
このようにReadMeのマークダウン表記が表示されるので、それをまるっとコピーしてテキストファイルに貼り付けて保存します。 ファイル名、拡張子はなんでも良いです。 私は「markdigReadMe.md」としました。
プログラムの方もマークダウンファイルを読み込んで、HTMLファイルを出力するように変更しましょう。
using System; using System.IO; using Markdig; namespace MarkdigTest { class Program { static void Main(string[] args) { Console.WriteLine("Hello World!"); //マークダウンファイルの読み込み var md = File.ReadAllText(@"C:\Users\hoge\Desktop\markdigReadMe.md"); //HTMLへの変換 var html = Markdown.ToHtml(md); //HTMLファイルの出力 File.WriteAllText(@"C:\Users\hoge\Desktop\markdigReadMe.html", html); Console.WriteLine(html); } } }
サンプルなのでパスを直打ちです。
実行と比較
これを実行すると、markdigReadMe.htmlというHTMLファイルが出力されます。 それをブラウザで開きます。
CSSが適用されていないので見え方が異なる点、パスの問題で画像が表示されない点を除けばしっかりと変換されていることがわかります。 表示されてはいないものの画像の位置もオリジナルと同じになっています。 すごいですね!
このmarkdigを使って自分好みのマークダウンエディタやブログサービスが作ったりしたら面白そうです。