Markdown関連のコマンドレット導入

PowerShell Core 6.1では新しいコマンドレットとしてMarkdown (マークダウン)関連が導入された。

MarkdownはHTMLなどに変換することを前提としたシンプルなマークアップ言語で(もちろんそれ単体でもそれなりに可読性が高い)、現在ではさまざまなCMSでテキストを記述する際に使われている。Markdownはシンプルな書き方になっており、あとはシステムが自動的にHTMLなどに変換して使われる。

PowerShell Core 6.1で導入されたMarkdown関連の主なコマンドレットは次のとおり。

コマンドレット 内容
Show-Markdown MarkdownテキストをVT100ターミナル向けに変換して出力、または、HTMLに変換してブラウザで閲覧
Get-MarkdownOption 変換先シーケンスコードなどMarkdown変換に関するオプションを表示
Set-MarkdownOption 変換先シーケンスコードなどMarkdown変換に関するオプションを設定
ConvertFrom-Markdown Markdownから変換した後のオブジェクトを値として保持

Markdownデータを変換するコマンドレットがShow-Markdownだ。デフォルトではMarkdownデータをVT100互換のターミナルで表示できる形式に変換する。オプションを指定することでブラウザで表示できるHTMLに変換してくれる。

Get-MarkdownOptionとSet-MarkdownOptionは、Markdownデータの変換に関連するオプションを表示したり設定するためのコマンドレット。今のところVT100互換ターミナルのデータに変換する際のシーケンスコードが設定されている。

ConvertFrom-MarkdownはMarkdownデータを変換した後のHTMLデータやVT100互換テキストを変数として保持するためのコマンドレットになっている。

Markdown系コマンドレットの実行例

これらコマンドレットは実際に使ってみるのがわかりやすい。まず、次のようなMarkdown形式のREADMEファイルを用意する。

RAEDME.md - マークダウン形式のサンプル

PS /Users/daichi/tmp> Get-Content ./README.md
TTT COMMANDS
============

TTT COMMANDS is a development commands set to build information system
that could handle large datasets rapidly and flexibly. This gives you
a way lit power to build a fast process system without some kind of
databases.  You would build the data process system using only TTT
COMMANDS, Unix-style basic commands and text datasets on your own favorite
operating systems.

TTT COMMANDS is licensed under the **[2-clause BSD license](LICENSE)**.

Download
--------

[https://github.com/daichigoto/tttcmds/archive/master.zip](https://github.com/daichigoto/tttcmds/archive/master.zip)

Installation
------------

## required packages installation

* FreeBSD 11.x

        sudo pkg install kyua

* Darwin 16.0.0 (you need a [brew](http://brew.sh/))

        brew install bsdmake
        brew install kyua

* Ubuntu 16.04

        sudo apt-get install clang
        sudo apt-get install libbsd-dev
        sudo apt-get install freebsd-buildutils
        # There is no kyua package for Ubuntu.
        # There is no ATF package for Ubuntu.

## build and install

* FreeBSD 11.x

        make clean build
        sudo make install

* Darwin 16.0.0

        bsdmake clean build
        sudo bsdmake install

* Ubuntu 16.04

        bmake clean build
        sudo bmake install

*Homepage:* https://github.com/daichigoto/tttcmds/
PS /Users/daichi/tmp>

Show-Markdownコマンドレットを使うと、MarkdownデータをVT100互換のターミナルで表示できる形式に変換して表示してくる。

Show-Markdownコマンドレットの実行例

PS /Users/daichi/tmp> Show-Markdown ./README.md
...

ターミナルで表示される変換後のデータ

Show-Markdownコマンドレットはオプションとして-UseBrowserを指定すると、データをHTMLに変換した後、Webブラウザでデータを表示してくれる。

Show-MarkdownコマンドレットでHTMLデータに変換する場合

PS /Users/daichi/tmp> Show-Markdown ./README.md -UseBrowser
PS /Users/daichi/tmp>

Show-Markdownコマンドレットに-UseBrowserオプションを指定して実行

HTMLに変換された結果がWebブラウザで表示される

Get-MarkdownOptionコマンドレットを実行すると、今のところVT100互換ターミナルで使用できるエスケープシーケンスが定義されていることを確認できる。

Get-MarkdownOpitionコマンドレットの基本的な使い方

 /Users/daichi/tmp> Get-MarkdownOption
 ...

Get-MarkdownOptionコマンドレットで定義されている設定を確認

ConvertFrom-MarkdownコマンドレットはMarkdownデータを変換した後のデータを変数として保持するといった用途で使えるようだ。次のように変換後のデータが保持されていることがわかる。デフォルトではHTMLに変換されたものが、-AsVT100EncodedStringを指定するとVT100互換ターミナルで利用できる形式のテキストデータが保持されていることがわかる。

MarkdownデータがHTMLに変換されたあとの値が保持されている

MarkdownデータがVT100互換テキストに変換されたあとの値が保持されている

こんな感じでPowerShell Core 6.1にはMarkdownに関するコマンドレットが追加された。PowerShell Coreが今まさに開発されているプラットフォームであることを示す一つの例と言えるのではないかと思う。これはなかなか便利なコマンドレットだ。

参考資料