Mac OS X の iCal.app で読み込める iCalendar 形式のファイル、例えば、http://www.aihara.co.jp/~taiji/Holidays.ja.ics を生成するために、以下のツール群を作成した。
- ics-tools-20131108.tar.bz2 …
--since date|--until date
オプションを追加。 - ics-tools-20131106.tar.bz2 …
VTODO
構成要素にて期限が無いものに対応。 - ics-tools-20131102.tar.bz2 … 加えて、微細な修正と xcalendar <-> Emacs calendar diary を追加。
- ics-tools-20131101.tar.bz2 … Emacs calendar diary 形式の対応を追加。
- ics-tools-20111216.tar.bz2 …
VTODO
構成要素などに対応し、以下の本文を併せて修正。 - ics-tools-20111209.tar.bz2 …
repeater.hpp
がらみを整理し、潜在的なバグを修正。以下の本文は変更無し。 - ics-tools-20111208.tar.bz2
このツール群には以下のプログラムが含まれる。
tsv2ics
ics2tsv
ics-view
ics-merge
tsv2ics
- タブ区切りデータファイルから iCalendar 形式のファイルを生成する。
例えば、同梱されている「春分・秋分の日」に関する equin.tsv
ファイルから equin.ics
ファイルを生成するには、以下のように実行する。
$ tsv2ics --ical equin.tsv > equin.ics
タブ区切りデータファイルの形式は、他には次の ics2tsv
が生成する形式などに対応する。
ics2tsv
- iCalendar 形式のファイルからタブ区切りデータファイルを生成する。
例えば、同梱されている「国民の休日」に関する citholid.ics
ファイルから citholid.tsv
ファイルを生成するには、以下のように実行する。
$ ics2tsv citholid.ics > citholid.tsv
これは、デフォルトで VEVENT
構成要素のみを処理する。もし、VTODO
構成要素のみを処理したいなら「--todo
」オプションを指定する。ちなみに、VALARM
構成要素や EXRULE
構成要素には対応していない。RRULE
構成要素に加えて、RDATE
, EXDATE
構成要素には対応しているが、iCal は RDATE
には対応していないようである。
ics-view
- iCalendar 形式のファイルを less
等の PAGER
で見やすくする。
例えば、以下のように実行する。
$ ics-view *.ics | less
ics-merge
- 複数の iCalendar 形式のファイルを結合して、ひとつの iCalendar 形式のファイルを生成する。
例えば、http://www.asahi-net.or.jp/~ci5m-nmr/iCal/ で配布されている holid110.zip
を展開して得られる複数の iCalendar 形式のファイルをひとつにするには以下のように実行する。
$ ics-merge holid110/*.ICS > holid110.ics
ついでに、繰り返し規則にて12ヶ月の整数倍は1ヶ年の整数倍に修正したり、終日を VALUE=DATE
で修正したりする。ちなみに、VCALENDAR
構成要素の諸情報は最初の入力ファイルのみが使用される。
その他
http://www.asahi-net.or.jp/~ci5m-nmr/iCal/ で配布されている holid110.zip
は2007年の法改正に対応しておらず、また equin201.zip
の「秋分の日」の4年毎の1951年から1979年の日付が間違っているように思われる。よって、以下のパッチを作成した。
また、http://www.aihara.co.jp/~taiji/Holidays.ja.ics を生成するにあたり、iPhone の iOS におけるカレンダーでは終点をもつ長期の繰り返し規則が無視されることがあるので、「春分・秋分の日」はせいぜい2年先までとしている。さらに、「国民の休日」や「振替休日」など holid110.zip
では対応していない祝祭日を含めた。