niszetの日記

アナログCMOS系雑用エンジニアが頑張る備忘録系日記

(Pandoc) pandoc.utils.normalize_date あるいはparseTimeMの話

Luaモジュールと見せかけてほとんどHaskell

pandoc.utils.normalize_dateという関数がある。これは日付っぽい文字列を受け取って、日付の形に返してくれる。

こいつの仕様がよくわからなかったので調べた。関数自体はLua filterのページのここに書いてある。

pandoc.org

Luaから呼び出せるが実体はHaskellで書かれていて、pandoc/src/Text/Pandoc/Lua/Module/Utils.hs にある

github.com

これは実際には Shared.normalizeDate を呼んでいるだけで、処理の中身はText.Pandoc.Sharedを見に行かねばならない。場所は下記。

github.com

この関数はISO 8601っぽい形式で出力してくれるのだが、ISO 8601と違い、1583年からではなく1601年から9999年までしか扱えない。これはMS Wordの仕様のためらしい(と、コードに書いてある)

で、実際に日付を処理しているのはさらにその先のparseTimeMという関数。この関数についてはこのページで詳しく書いてあるので追加で書くことはなかった。まだ流し読みしかできていないので後でじっくり読もう。

haskell.e-bigmoon.com

このページを見れば、フォーマット文字列がそれぞれ何を意味しているかが分かる…。

ということで、とりあえずざっと調べた内容のメモ。

実行例はまた別の機会にやるかも…?

Enjoy!!