多分、どっかにあるはずなのだが、探すより作るのが早いシリーズ。
現在時刻とか、既に存在しているTimeクラスのオブジェクトの時間だけを変えたものとか、秒以下を切り捨てたものを生成する時に、キーワード引数でスマートに書きたくなったので、gemにしてみた。
こういう事ばっかやってるから、Rubyのgemは玉石混交だとか言われてしまうのだが…。
Usage
require 'keyword_arg_time'
Time.now(hour: 10, min: 15, sec: 0) # => 2014-01-10 10:15:00 +0900
time = Time.local(2014, 1, 10) # => 2014-01-10 00:00:00 +0900
time.copy(hour: 10, min: 15) # => 2014-01-10 10:15:00 +0900
Date.today(mon: 3) # => <Date: 2014-03-10 ((2456727j,0s,0n),+0s,2299161j)>
date = Date.new(2014, 1, 10) # => <Date: 2014-01-10 ((2456668j,0s,0n),+0s,2299161j)>
date.copy(day: 25) # => <Date: 2014-01-25 ((2456683j,0s,0n),+0s,2299161j)>
これ、ActiveSupportとかに入らんかなー。
もしくは、もっと良い名前で組込みメソッドとかにならんかなー。
追記:
copy
の動作をするchange
というメソッドはちゃんとあった。流石ActiveSupport。