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
Source
# 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
Calls superclass method
Icalendar::Value::new
Public Instance Methods
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
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
Source
# File lib/icalendar/values/duration.rb, line 37 def time? hours > 0 || minutes > 0 || seconds > 0 end