module Medic::Interval

Constants

NUMBER_WORDS

Public Instance Methods

interval(sym) click to toggle source
# File lib/medic/interval.rb, line 13
def interval(sym)
  return sym if sym.is_a? NSDateComponents
  parts = sym.to_s.gsub('_', ' ').split
  component = parts.pop.chomp('s')
  n = parts.map{|p| NUMBER_WORDS[p] || p.to_i}.reduce do |sum, p|
    if p == 100 && sum > 0
      sum * p
    else
      sum + p
    end
  end
  n ||= 1

  NSDateComponents.new.send("#{component}=", n)
end