<bin>ディレクトリには下記の irb.rc がありますので、 <bin>ディレクトリをカレントディレクトリとして irb を実行すると when.exe Ruby版を対話形式で使用することができます。
------irb.rc-------- require 'pp' require 'date' require 'when_exe' require 'when_exe/core/extension' require 'when_exe/mini_application' include When IRB.conf[:EVAL_HISTORY] = 100 --------------------
irb を起動します。
$ irb --noecho
今日は?
irb(main):001:0> p today 2013-05-29
現在は?
irb(main):002:0> p now 2013-05-29T06:11:04.62Z
デフォルトを日本時間にします。
irb(main):003:0> TM::Clock.local_time = Parts::Timezone['Asia/Tokyo']
いつもこれを実行するのであれば、irb.rcに書いておくとよいでしょう。
日本時間で現在は?
irb(main):004:0> p now 2013-05-29T15:11:48.00+09:00
「今日」を意味するオブジェクトの中身をもう少し詳しく見てみます。
irb(main):005:0> pp today.to_h(:method=>:to_m17n) {:frame=>"http://hosi.org/When/CalendarTypes/Gregorian", :precision=>0, :sdn=>2456442, :calendar=>["http://hosi.org/When/CalendarTypes/Gregorian"], :notes=>[[{:note=>"Month", :value=>"May"}], [{:note=>"Week", :value=>"Wednesday(2)"}]], :cal_date=>[2013, 5, 29]}
赤穂浪士の討ち入り日をグレゴリオ暦に換算すると?
irb(main):006:0> p when?('1702-12-15^^Japanese^^Gregorian') 1703-01-31
Calendar('Japanese')は表引きで求める日本の太陰太陽暦ですが、1948年以降は表を定義しておらず計算によっています。 歴史上の日本暦日は年号付きで指定すると安全です。
平成25年5月29日を意味するオブジェクトを作ってみましょう。
すべての暦年代をメモリ上にロードして検索するのに少し時間がかかります。
irb(main):007:0> when?('平成25.5.29') 平成25(2013).05.29
when_exe と端末で文字コードがあっていない場合
ArgumentError: CalendarEraName doesn't exist: 平成
のようなエラーが出るかもしれません。この場合、 when_exe の内部動作が UTF-8 なのに端末が Windows-31J だったのです。
irb(main):008:0> p [UTF8, W31J] [".UTF-8", ".Windows-31J"]
入力をUTF-8に、出力をWindows-31Jに変換してみます。
irb(main):009:0> p when?('平成25.5.29'/UTF8).to_m17n/W31J "平成25(2013).05.29"
日本暦日の暦年代をメモリ上にロード済なので、今度は一瞬で返事がありました。
irb での動作は、こんな具合になります。