Luaモジュールと見せかけてほとんどHaskell
pandoc.utils.normalize_date
という関数がある。これは日付っぽい文字列を受け取って、日付の形に返してくれる。
こいつの仕様がよくわからなかったので調べた。関数自体はLua filterのページのここに書いてある。
Luaから呼び出せるが実体はHaskellで書かれていて、pandoc/src/Text/Pandoc/Lua/Module/Utils.hs にある
これは実際には Shared.normalizeDate を呼んでいるだけで、処理の中身はText.Pandoc.Sharedを見に行かねばならない。場所は下記。
この関数はISO 8601っぽい形式で出力してくれるのだが、ISO 8601と違い、1583年からではなく1601年から9999年までしか扱えない。これはMS Wordの仕様のためらしい(と、コードに書いてある)
で、実際に日付を処理しているのはさらにその先のparseTimeMという関数。この関数についてはこのページで詳しく書いてあるので追加で書くことはなかった。まだ流し読みしかできていないので後でじっくり読もう。
このページを見れば、フォーマット文字列がそれぞれ何を意味しているかが分かる…。
ということで、とりあえずざっと調べた内容のメモ。
実行例はまた別の機会にやるかも…?
Enjoy!!