module Medic::Anchor

Constants

NUMBER_WORDS

Public Instance Methods

anchor_for_symbol(sym) click to toggle source
# File lib/medic/anchor.rb, line 13
def anchor_for_symbol(sym)
  return unless sym
  return sym if sym.to_s == '0'
  return sym if sym.is_a? Fixnum
  return sym if sym.is_a? NSDate
  parts = sym.to_s.gsub('_', ' ').split.reject{ |part| part == 'ago' }
  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
  date_comp = NSDateComponents.new.send("#{component}=", -n)
  NSCalendar.currentCalendar.dateByAddingComponents(date_comp, toDate: NSDate.date, options: 0)
end