class Mhc::PropertyValue::Period

Constants

REGEXP
UNIT2MIN
UNITS

Public Class Methods

parse(string) click to toggle source
# File lib/mhc/property_value/period.rb, line 9
def self.parse(string)
  return new.parse(string)
end

Public Instance Methods

alarm_trigger() click to toggle source
# File lib/mhc/property_value/period.rb, line 37
def alarm_trigger
  duration = nil
  if @alarm
    seconds = @alarm
    duration = "-P"
    duration += "#{seconds /= 86400}D" if seconds >= 86400
    duration += "T#{seconds /= 3600}H" if seconds >= 3600
    duration += "T#{seconds /= 60}M"   if seconds >= 60
  end
  return duration
end
parse(string) click to toggle source
# File lib/mhc/property_value/period.rb, line 13
def parse(string)
  if REGEXP =~ string
    @minutes = (UNIT2MIN[$2] * $1.to_i)
  else
    raise ParseError, "invalid period string \"#{string}\""
  end
  return self
end
to_mhc_string() click to toggle source
# File lib/mhc/property_value/period.rb, line 22
def to_mhc_string
  return "" unless @minutes

  value, unit_size, unit_name = @minutes, 1, "minute"

  UNIT2MIN.each do |unit,minutes|
    if @minutes % minutes == 0
      value = @minutes / minutes
      unit_size = minutes
      unit_name = unit
    end
  end
  return "#{value} #{unit_name}" + (value > 1 ? "s" : "")
end