日付表現中の<指定>と iCalendar
昨日の仕様整理と iCalendarとの対応関係についてです。
When.exe Ruby版で拡張した iCalendar の仕様は、
http://www2u.biglobe.ne.jp/~suchowan/when_exe/When/V.html
の通りです[1]。
iCalendar は処理が重いので、実装では、どうしても必要な場合のみ、日付表現を
内部的に iCalendar の書式に変換して iCalendar の機能を利用するようにしました。
そのような場合、繰り返し間隔は、
PnY → FREQ=YEARLY;INTERVAL=n
PnM → FREQ=MONTHLY;INTERVAL=n
と変換します、また昨日の、
<集合> ::= <要素名> # <要素群>
は、
BYDAY / <要素名> = <要素群>
などと変換します。
<要素群>の書式は iCalendar のものがそのまま使えるように配慮しました。
JSON では<指定>に使う“{”“}”は“"”で囲われるのでエスケープは不要です。
別途、日付表現をIRIの一部として使用する場合には%エスケープが必要です。
[1] ただし本文の「ユリウス通日」はユリウス通日元期直後の甲子の日からの通日
と読み替えてください。甲子の日を余り 0 とするための配慮をドキュメントに
反映していませんでした。
When.exe Ruby版で拡張した iCalendar の仕様は、
http://www2u.biglobe.ne.jp/~suchowan/when_exe/When/V.html
の通りです[1]。
iCalendar は処理が重いので、実装では、どうしても必要な場合のみ、日付表現を
内部的に iCalendar の書式に変換して iCalendar の機能を利用するようにしました。
そのような場合、繰り返し間隔は、
PnY → FREQ=YEARLY;INTERVAL=n
PnM → FREQ=MONTHLY;INTERVAL=n
と変換します、また昨日の、
<集合> ::= <要素名> # <要素群>
は、
BYDAY / <要素名> = <要素群>
などと変換します。
<要素群>の書式は iCalendar のものがそのまま使えるように配慮しました。
JSON では<指定>に使う“{”“}”は“"”で囲われるのでエスケープは不要です。
別途、日付表現をIRIの一部として使用する場合には%エスケープが必要です。
[1] ただし本文の「ユリウス通日」はユリウス通日元期直後の甲子の日からの通日
と読み替えてください。甲子の日を余り 0 とするための配慮をドキュメントに
反映していませんでした。
この記事へのコメント