Clojure で日本の祝日を引く library を作った。
既に同様の library が Java に在る (holiday-jp/holiday_jp-java) が、今囘のものは JVM で動く Clojure だけではなく、Erlang VM (BEAM) 上で動く Clojerl、.NET で動く Clojure CLR、JavaScript に transpile される ClojureScript に對應した。これが Java 版には無い特徴だ。祝日の data は holiday-jp/holiday_jp を使ってゐる。
holiday-jp/between
で二つの日附の間に在る祝日を引ける。
(is (= [{:date #inst "2019-11-23T00:00:00.000-00:00" :week "土" :week_en "Saturday" :name "勤労感謝の日" :name_en "Labor Thanksgiving Day"} {:date #inst "2020-01-01T00:00:00.000-00:00" :week "水" :week_en "Wednesday" :name "元日" :name_en "New Year's Day"}] (holiday-jp/between #inst"2019-11-22" #inst"2020-01-02")))
他に holiday-jp/holiday?
と holiday-jp/on
を實裝した。
複數の Clojure 實裝に對應するには、Clojure に reader conditionals と云ふ仕組みが有りこれを使ふ。
何故作ったのか、一つは個人的な練習の爲であるが、一つは Elixir で作ってゐた application を Clojerl に移植してゐ、それに使ふ爲だ。library を作ると責務が明らかに成る爲、test を明解に書けて好い (Library を作ると云ふ開発手法)。
昔に Elixir で同等の library を作った (今でもメンテしてる!)。
Clojure のも暫く使へたら holiday-jp org へ移そうかと思ってゐる。