class Icalendar::Values::Duration

Constants

DURATION_DAYS_REGEX
DURATION_HOURS_REGEX
DURATION_MINUTES_REGEX
DURATION_PAST_REGEX
DURATION_SECONDS_REGEX
DURATION_WEEKS_REGEX

Public Class Methods

new(value, params = {}) click to toggle source
Calls superclass method Icalendar::Value::new
# File lib/icalendar/values/duration.rb, line 10
def initialize(value, params = {})
  if value.is_a? Icalendar::Values::Duration
    super value.value, params
  else
    super OpenStruct.new(parse_fields value), params
  end
end

Public Instance Methods

past?() click to toggle source
# File lib/icalendar/values/duration.rb, line 18
def past?
  value.past
end
value_ical() click to toggle source
# File lib/icalendar/values/duration.rb, line 22
def value_ical
  return "#{'-' if past?}P#{weeks}W" if weeks > 0
  builder = []
  builder << '-' if past?
  builder << 'P'
  builder << "#{days}D" if days > 0
  builder << 'T' if time?
  builder << "#{hours}H" if hours > 0
  builder << "#{minutes}M" if minutes > 0
  builder << "#{seconds}S" if seconds > 0
  builder.join
end

Private Instance Methods

parse_fields(value) click to toggle source
# File lib/icalendar/values/duration.rb, line 48
def parse_fields(value)
  {
    past: (value =~ DURATION_PAST_REGEX ? $1 == '-' : false),
    weeks: (value =~ DURATION_WEEKS_REGEX ? $1.to_i : 0),
    days: (value =~ DURATION_DAYS_REGEX ? $1.to_i : 0),
    hours: (value =~ DURATION_HOURS_REGEX ? $1.to_i : 0),
    minutes: (value =~ DURATION_MINUTES_REGEX ? $1.to_i : 0),
    seconds: (value =~ DURATION_SECONDS_REGEX ? $1.to_i : 0)
  }
end
time?() click to toggle source
# File lib/icalendar/values/duration.rb, line 37
def time?
  hours > 0 || minutes > 0 || seconds > 0
end