読者です 読者をやめる 読者になる 読者になる

c4se記:さっちゃんですよ☆

.。oO(さっちゃんですよヾ(〃l _ l)ノ゙☆)

.。oO(此のblogは、主に音樂考察Programmingに分類されますよ。ヾ(〃l _ l)ノ゙♬♪♡

音樂はSoundCloud等バラバラの場所に公開中です。申し訳ないがlinkをたどるなどして探してください。

考察は現在は主に此のblogで公表中です。

programmingは、ひろくみせるものはGitHubで、個人的なものはBitBucketで開発中です。

c4se

日本の祝日を扱ふholiday_jpをElixirに移植したholiday_jp-elixirを作った

日本の祝日を扱ふholiday_jpをElixirに移植したholiday_jp-elixirを作った

github.com

普段はRubyやElixirやPythonやCrystalを扱ってゐる。祝日と云ふのは本質的に難しい。何時が祝日であるかは国民の祝日に関する法律と云ふ法律に依って決まる。一年のいつが祝日であるか此の法律に書いてあるし、例外處理も書かれてゐる。故に此の法律から祝日は決定出來る。では現在の此の法律を基に祝日を扱ふ處理を書いて了って好いだらうか。ところが法律は改正されるのである。即ち現在の此の法律のalgorithmは過去に遡って適用出來ないし、未來に下って適用も出來ない。無論改正を全てalgorithmに組み込む事は出來る。然し其んな面倒な事をするよりも、數少ない祝日を全て羅列した方が安全で簡單である。Rubyではholiday_jpと云ふgemが此れをやって呉れ、皆便利に使へる樣に成った。此の度Elixirで祝日を扱ふ必要が在ったので、此れを移植した。

mix.exsのdeps/0に :holiday_jp を追加し、同じくmix.exsのapplications/0にも :holiday_jp を追加すれば使へる。HolidayJp.between/2HolidayJp.holiday?/1 と云ふ二つの函數を提供する。

iex> HolidayJp.between ~D[2016-03-01], ~D[2016-03-31]
[
  %HolidayJp.Holiday{date: ~D[2016-03-20], name: "春分の日", name_en: "Vernal Equinox Day", week: "", week_en: "Sunday"},
  %HolidayJp.Holiday{date: ~D[2016-03-21], name: "振替休日", name_en: "Holiday in lieu", week: "", week_en: "Monday"},
]

iex> HolidayJp.holiday? ~D[2017-01-02]
true

iex> HolidayJp.holiday? ~D[2016-01-02]
false

祝日の一覧はholiday-jp/holiday_jpをgit submoduleして依存してある。

因みにholiday_jp-elixirを使って作ったのは、平日丈罵倒して呉れるSlack botbotのframeworkにはHedwigを使った。打倒Hubot。