module Fugit::Nat

def parse_interval_elt(e, opts, h)

def parse_interval_elt(e, opts, h)
  e1 = e[1]
  case e[2]
  when 's', 'sec', 'second', 'seconds'
    h[:sec] = eone(e)
  when 'm', 'min', 'mins', 'minute', 'minutes'
    h[:hms] ||= [ [ '*', eone(e) ] ]
  when 'h', 'hour', 'hours'
    hms = h[:hms]
    if hms && hms.size == 1 && hms.first.first == '*'
      hms.first[0] = eone(e)
    elsif ! hms
      h[:hms] = [ [ eone(e), 0 ] ]
    end
  when 'd', 'day', 'days'
    h[:dom] = "*/#{e1}" if e1 > 1
    h[:hms] ||= [ [ 0, 0 ] ]
  when 'w', 'week', 'weeks'
    h[:_fail] = "cannot have crons for \"every #{e1} weeks\"" if e1 > 1
    h[:hms] ||= [ [ 0, 0 ] ]
    h[:dow] ||= 0
  when 'M', 'month', 'months'
    h[:_fail] = "cannot have crons for \"every #{e1} months\"" if e1 > 12
    h[:hms] ||= [ [ 0, 0 ] ]
    h[:dom] = 1
    h[:mon] = eone(e)
  when 'Y', 'y', 'year', 'years'
    h[:_fail] = "cannot have crons for \"every #{e1} years\"" if e1 > 1
    h[:hms] ||= [ [ 0, 0 ] ]
    h[:dom] = 1
    h[:mon] = 1
  end
end