Bye Bye Moore

PoCソルジャーな零細事業主が作業メモを残すブログ

Pandoc on docker な環境にplantUMLをレンダリング出来るように

shuzo-kino.hateblo.jp
の続き的内容

ドキュメント生成ができるなら図表だってバージョン管理したくなるというもの。
大分まえから取り上げていて、Gitlabのmarkdownでも使えるplantUMLを使えるように

実際のところ

たたき台のDocker環境を用意

作業用のDocker環境をpandocの公式イメージから生成します
後々作業するため、WindowsのDocumentディレクトリをボリューム領域としてリンクさせておきます

$ docker.exe run -it --volume "C:\Users\user\Documents:/data"  --name ourDocumentServer pandoc/core

必要なソフトウェア群の入手

普通にいれていればalpine linuxなのでapkでJavaRuntimeを入手

$ apk -U update
$ apk add openjdk8-jre

plantuml.jarはplantUML公式から導入してWinの作業ディレクトリにおいておけばよいです。

さらに、変換用のLuaスクリプトも入れましょう。
lua-filters/diagram-generator at master · pandoc/lua-filters · GitHubから"diagram-generator.lua"を確保。
これもWinの作業ディレクトリでよいです。

実際に動かす

こんなサンプルファイルを用意します

$ cat foobar.md
# My document

This is a paragraph.

```{.plantuml}
@startuml
Alice -> Bob: Authentication Request
Bob --> Alice: Authentication Response

Alice -> Bob: Another authentication Request
Alice <-- Bob: another authentication Response
@enduml
```

これをレンダリングするには

$ pandoc foobar.md --lua-filter=diagram-generator.lua -t docx -o FOOBAR.docx


ditaaも使えるように

ここまで出来るなら、任意図面の自動化もしたいところ
shuzo-kino.hateblo.jp

$ apk add graphviz

今度は

$ cat foobar.md
# My document

This is a paragraph.

```{.plantuml}
@startuml
digraph foo {
 PlantUML -> Dot [label=use];
}
@enduml


```

```{.plantuml}
@startuml
ditaa
+--------+   +-------+    +-------+
|cBLU    +---+ ditaa +--> |       |
|  Text  |   +-------+    |diagram|
|Document|   |!magic!|    |       |
|     {d}|   | cRED  |    |       |
+---+----+   +-------+    +-------+
    :                         ^
    |       Lots of work      |
    +-------------------------+
@enduml
```

コマンドは変わらず

$ pandoc foobar.md --lua-filter=diagram-generator.lua -t docx -o FOOBAR.docx

結果、色分けされたZIGBEEのスタック図がご覧の通り