class Icalendar::Values::Duration

Public Class Methods

new(value, params = {}) click to toggle source
Calls superclass method Icalendar::Value::new
# File lib/icalendar/values/duration.rb, line 8
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 16
def past?
  value.past
end
value_ical() click to toggle source
# File lib/icalendar/values/duration.rb, line 20
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 39
def parse_fields(value)
  {
    past: (value =~ /\A([+-])P/ ? $1 == '-' : false),
    weeks: (value =~ /(\d+)W/ ? $1.to_i : 0),
    days: (value =~ /(\d+)D/ ? $1.to_i : 0),
    hours: (value =~ /(\d+)H/ ? $1.to_i : 0),
    minutes: (value =~ /(\d+)M/ ? $1.to_i : 0),
    seconds: (value =~ /(\d+)S/ ? $1.to_i : 0)
  }
end
time?() click to toggle source
# File lib/icalendar/values/duration.rb, line 35
def time?
  hours > 0 || minutes > 0 || seconds > 0
end