Я довольно новичок в Ruby и работаю над небольшим проектом. Я хотел бы распечатать некоторые детали из события iCalendar (* .ics). Для обработки файла ics я использую icalendar gem.Как извлечь параметр из события icalendar в Ruby?
До сих пор мне удалось извлечь правильное событие, но мне также нужно распечатать участника. Моя проблема: поле ATTENDEE использует несколько параметров. Вот пример:
BEGIN:VEVENT
DTSTAMP:20150527T074021Z
DTSTART;VALUE=DATE:20150525
DTEND;VALUE=DATE:20150530
SUMMARY:OnCall Duty
UID:1234
DESCRIPTION:
CREATED:20150512T063102Z
LAST-MODIFIED:20150512T063102Z
ATTENDEE;X-MYUSER-KEY=dfdfdf;CN=Jon
Doe;CUTYPE=INDIVIDUAL:mailto:[email protected]
SEQUENCE:1
X-CONFLUENCE-SUBCALENDAR-TYPE:other
TRANSP:TRANSPARENT
STATUS:CONFIRMED
END:VEVENT
В настоящее время мой код выглядит следующим образом:
require 'icalendar'
require 'active_support/all'
require 'open-uri'
ics_file = File.open("ops.ics")
cal = Icalendar.parse(ics_file).first
events = cal.events
now = DateTime.now
currentOnDuty = events.select{ |e| e.summary == "OnCall Duty" && e.dtstart.to_time >= now.beginning_of_week && e.dtend.to_time <= now.end_of_week }
puts "User: #{currentOnDuty.first.attendee}"
, который создает следующий вывод:
[#<URI::MailTo [email protected]>]
То, что я скорее нужно, это параметр "CN" для Attendee. Так что я хотел бы получить выход:
User: Jon Doe
Документов есть только несколько примеров для создания события с параметрами, но до сих пор я не мог понять, как извлечь определенный параметр.
Любые подсказки о том, как извлечь «CN» -параметр из поля ATTENDEE?
Решение:
currentOnDuty.first.attendee.ical_params [: сп] .Первый
Что вы получаете в объекте 'currentOnDuty'? –
currentOnDuty - это массив объектов Icalendar :: Event. Поскольку мне нужно только одно событие, я использую currentOnDuty.first. – Lemmy
Не могли бы вы попробовать «puts currentOnDuty.first.attendee.inspect» и поделиться выходом, пожалуйста. Плюс, попробуйте 'puts currentOnDuty.first.attendee.cn'. – mudasobwa