Module: When::V

Defined in:
lib/when_exe/icalendar.rb,
lib/when_exe/googlecalendar.rb

Overview

An implementation of RFC 5545 - iCalendar ( tools.ietf.org/html/rfc5545 )

Extensions of RFC 5545

Multi Calendar

  • CALSCALE Property can specify calendars other than GREGORIAN

    The value of CALSCALE Property is capitalized.
    
  • Date and Time Representation of DTSTART Property

     When.exe Standard Representation is available except ','. (',' cannot be used as a decimal mark)
     Calendar can be specified by a notation '^^calnedar' or '^calnedar'.
    (same as epoch of When::TM::CalendarEra)
    

The extension of RRULE property

  • FREQ=duration

    When.exe Standard Representation により duration を指定できる。
    ただし、この指定は BYxxx とは共存できない。
    
  • BYHOUR=h(,..)

    h に When.exe Standard Representation を使用できる
    example: 'BYHOUR=1,2'
      夏時間から標準時間への切り替え時に 夏時間の1時,標準時間の2時 を生成
    example: 'BYHOUR=1,1=,2'
      夏時間から標準時間への切り替え時に 夏時間の1時,標準時間の1時,標準時間の2時 を生成
    他のソフトウェアとの互換性を損なう可能性があるが、本ライブラリは両方の動作の違いを
    記述できる必要があると判断。
    
  • BYDAY/c=n*e±s(,..)

    c で指定したWhen::CalendarNoteオブジェクトのイベントeのうち、
    n番目のものについて、その±s日目
    デフォルトは n=all, s=0, cとeは省略不可(eはcのメソッドとして定義されている必要がある)
    example: 'BYDAY/Christian=easter-2' は、キリスト教の聖金曜日
    example: 'BYDAY/SolarTerms=term180' は、秋分日(太陽黄経が180度になる日)
    
  • BYDAY/d=n*m±s(,..);DAYST=b

    ユリウス日をdで除した余りがmになる日のうち、n番目のものについて、その±s日目
    m は b を基点として計算する
    デフォルトは n=all, s=0, b=0, dとmは省略不可
    /d がない場合、次項のBYWEEKDAYとして扱い、RFC 5545に対する互換性を確保する
    
  • BYWEEKDAY=n*m±s(,..);WKST=b

    ユリウス日を7で除した余りがmになる日のうち、n番目のものについて、その±s日目
    m は b を基点として計算する(mとbはともに文字列'MO','TU','WE','TH','FR','SA','SU'で指定)
    デフォルトは n=all, s=0, b=MO, mは省略不可
    
  • BYYEAR/d=n*m±s(,..);YEARST=b

    通年をdで除した余りがmになる年のうち、n番目のものについて、その±s年目
    m  b を基点として計算する
    デフォルトは n=all, s=0, b=4, dとmは省略不可
    通年の意味は暦法に依存する
    

icd 形式の多言語対応

  • NAMESPACE Property を追加

  • LOCALE Property を追加

  • SUMMARY Property 表現を多言語対応文字列として解釈する

  • RFC6350 ( tools.ietf.org/html/rfc6350 ) 方式にも対応

Content Lines

RFC 5545 3.1 Content Lines では、記述が75文字を超える場合、改行してインデントする。
本ライブラリでは文字数によらず、BEGIN:の次の行を基準にして、より深いインデントがある場合は、
論理的1行を物理的に分割したものとみなして解釈している。実質的には上位互換と判断している

Limitations from RFC 5545

  • VALARM VENENT や VTODO に包含されている VALARM は無視される。 包含元のイベントからの差分時刻での計算に対応していないため。

  • RRULE BYYEARDAY, BYMONTHDAY, BYDAY が存在する場合 BYWEEKDAY の n と s は指定できない。 BYYEARDAY, BYMONTHDAY, BYWEEKDAY が存在する場合 BYDAY の n と s は指定できない。

Defined Under Namespace

Classes: Alarm, Calendar, Daylight, Event, Freebusy, Journal, Root, Standard, Timezone, TimezoneProperty, Todo