別に何か作ったわけじゃないけど。恐らくいちばん新しい Ruby 用の iCal ライブラリ。
とりあえず情報の出力。
RiCal.parse( open( ICS_FILE ) ).first.events.map { |e|
puts e.summary
}
で summary 一覧を出力できる。map を each にしちゃダメなんだけど、どういうポリシーでこうなっているのかはよく分かってない。
組み立ての方は DSL で書ける。個人的にはこの DSL っていうのが聞き飽きたというかあまり便利に感じられることが言うほど多くないと思っていたんだけど、RiCal の DSL はいいと思う。
README に書かれているサンプルをそのままコピペするとこんな感じ。
RiCal.Calendar do
event do
description "MA-6 First US Manned Spaceflight"
dtstart DateTime.parse("2/20/1962 14:47:39")
dtend DateTime.parse("2/20/1962 19:43:02")
location "Cape Canaveral"
add_attendee "john.glenn@nasa.gov"
alarm do
description "Segment 51"
end
end
end
こういうのを真面目にオブジェクト指向で組み立てさせるとえらいややこしい記述が必要になったりするんだけど、これは実に自然に書けていると思う。