class ICalPal::Event

def [](k)

Parameters:
  • k (String) -- Key/property name
def [](k)
  case k
  when 'age'                # pseudo-property
    @self['sdate'].year - @self['edate'].year
  when 'availability'       # Integer -> String
    EventKit::EKEventAvailability.select { |_k, v| v == @self['availability'] }.keys
  when 'datetime'           # date[ at time[ - time]]
    unless $opts[:sd] || $opts[:days] == 1
      t = @self['sdate'].to_s
      t += ' at ' unless @self['all_day'].positive?
    end
    unless (@self['all_day'] && @self['all_day'].positive?) || @self['placeholder']
      t ||= ''
      t += "#{@self['sctime'].strftime($opts[:tf])}" if @self['sctime']
      t += " - #{@self['ectime'].strftime($opts[:tf])}" unless $opts[:eed] || !@self['ectime'] || @self['duration'].zero?
    end
    t
  when 'location'           # location[ address]
    (@self['location'])? [ @self['location'], @self['address'] ].join(' ').chop : nil
  when 'notes'              # \n -> :nnr
    (@self['notes'])? @self['notes'].strip.gsub("\n", $opts[:nnr]) : nil
  when 'sday'               # pseudo-property
    RDT.new(*@self['sdate'].to_a[0..2])
  when 'status'             # Integer -> String
    EventKit::EKEventStatus.select { |_k, v| v == @self['status'] }.keys[0]
  when 'title'              # title[ (age N)]
    @self['title'] + ((@self['calendar'] == 'Birthdays')? " (age #{self['age']})" : '')
  when 'uid'                # for icalBuddy
    @self['UUID']
  else @self[k]
  end
end