Markdig は Markdown を HTML に変換する.NETライブラリです。nuget から簡単にインストールして使用することができます。
この記事では、Markdigを使用してMarkdownからHTMLに変換する方法を紹介します。
1. Markdig のインストール
MarkdigはNugetに公開されています。URLは以下のとおりです。
Markdig 0.34.0
A fast, powerful, CommonMark compliant, extensible Markdown processor for .NET with 20+ builtin extensions (pipetables, footnotes, definition lists... etc.)
以下のコマンドで簡単にインストールが可能です。
> dotnet add package Markdig
2. Markdown ファイルを読み込み、HTMLに変換してファイルに出力するソースコード
以下のようになります。
using System;
using Markdig;
namespace MdBlogConverter
{
class Program
{
static void Main(string[] args)
{
string mdFolderPath = "./01_Input";
string outputFolderPath = "./02_Output/";
// get file list.
string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
// loop
for(int i = 0; i < files.Length; i++)
{
outputCsHtmlFilePath = outputFolderPath + System.IO.Path.GetFileNameWithoutExtension(files[i]) + .html;
// read all text from file and set to fileContents
string fileContents = System.IO.File.ReadAllText(files[i]);
//convert Mark down to html and set to mdContents
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();
string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);
//write mark down data into outputCsHtmlFilePath
System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);
}
}
}
}
まず、インプットフォルダは、カレントディレクトリの./01_Input
フォルダとします。
アウトプットフォルダは、カレントディレクトリの./02_Output/
フォルダとします。
以下のコードで、インプットフォルダに格納されている *.md
ファイルを検出してループ処理します。
// get file list.
string[] files = System.IO.Directory.GetFiles(mdFolderPath, "*.md");
// loop
for(int i = 0; i < files.Length; i++)
{
...
}
インプットのファイルを全行読み込みます。
string fileContents = System.IO.File.ReadAllText(files[i]);
MarkdownPipeline を定義します。このパイプラインを定義することで、表形式のMarkdownをHTMLに変換することができるようになります。
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();
MarkdownをHTMLに変換し、変数に格納します。
string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);
アウトプットファイルへ出力します。
System.IO.File.AppendAllText(outputCsHtmlFilePath, mdContents);
表形式のMarkdownがHTMLに変換されないときの対処方法
パイプラインが正しく定義されているか、HTML変換時にパイプラインが使用されているかを確認してください。
Markdig.MarkdownPipeline markdownPipeline = new MarkdownPipelineBuilder().UsePipeTables().Build();
string mdContents = Markdown.ToHtml(fileContents, markdownPipeline);
おすすめ本 c#コードレシピ集
c#コードレシピ集は、「文字列を大文字あるいは小文字に変換したい」や「Taskをキャンセルしたい」など逆引き的にコードの書き方を調べられるレシピ集です。
2021年8月に発売された本で、全部で385個のレシピが収録されています。
ジャンルは日付処理やLINQ、並列処理と非同期処理など幅広く記載されています。
Kindle対応ですので、まずはサンプルをダウンロードして何が書かれているか確認してはいかがでしょうか。
リンク
コメント