はじめに
Markdownとはプレーンテキスト形式で書いた文書からHTMLを生成するための言語です。
ブログの執筆などに活用されている方も多いと思います。
このサイトもMarkdown(MarkdownSharp)を使用していましたが、
ブロック要素や、idやclassの付与など、ちょっと凝ったことをするために直接HTMLを記述するのが億劫でした。
見つけたのが「Markdig」
idやclassの付与をする方法はないかと探していたところ素晴らしい拡張を発見しました。
Markdig
Markdownには「PHP Markdown Extra」「CommonMark」といった拡張が存在するようで、
Markdigはそれらの「いいとこどり」をしたような.NET用の拡張です。
nugetからインストールします。
PM> Install-Package Markdig -Version 0.17.1
拡張を使い、パースするには下記のようにかきます。
using Markdig;
var pipeline = new Markdig.MarkdownPipelineBuilder().UseAdvancedExtensions().Build();
var result = Markdig.Markdown.ToHtml(input, pipeline);
※UseAdvancedExtensions()ですべての拡張を使用できます。
使用したい拡張を絞る場合は下記を参考に
https://github.com/lunet-io/markdig/blob/master/src/Markdig/MarkdownExtensions.cs
例
idやclassの属性を付与するには下記のように
# 表題{#heading-link .title}
divを作るには
:::spoiler
This is a *spoiler*
:::
おわりに
単純なHTMLへの変換であれば、Markdownで十分ですが、凝ったHTMLを作りたい場合は「Markdig」おすすめです。