module Fugit::Duration::IsoParser
def date(i); rep(nil, i, :delt, 1); end
def date(i); rep(nil, i, :delt, 1); end
def day(i); rex(:day, i, /-?\d+D/); end
def day(i); rex(:day, i, /-?\d+D/); end
def delt(i); alt(nil, i, :yea, :mon, :wee, :day); end
def delt(i); alt(nil, i, :yea, :mon, :wee, :day); end
def dur(i); seq(:dur, i, :p, :date, '?', :t_time, '?'); end
def dur(i); seq(:dur, i, :p, :date, '?', :t_time, '?'); end
def hou(i); rex(:hou, i, /-?\d+H/); end
def hou(i); rex(:hou, i, /-?\d+H/); end
def min(i); rex(:min, i, /-?\d+M/); end
def min(i); rex(:min, i, /-?\d+M/); end
def mon(i); rex(:mon, i, /-?\d+M/); end
def mon(i); rex(:mon, i, /-?\d+M/); end
def p(i); rex(nil, i, /P/); end
def p(i); rex(nil, i, /P/); end
def rewrite_dur(t); Fugit::Duration.common_rewrite_dur(t); end
def rewrite_dur(t); Fugit::Duration.common_rewrite_dur(t); end
def sec(i); rex(:sec, i, /-?(\d*\.)?\d+S/); end
def sec(i); rex(:sec, i, /-?(\d*\.)?\d+S/); end
def t(i); rex(nil, i, /T/); end
def t(i); rex(nil, i, /T/); end
def t_time(i); seq(nil, i, :t, :time); end
def t_time(i); seq(nil, i, :t, :time); end
def telt(i); alt(nil, i, :hou, :min, :sec); end
def telt(i); alt(nil, i, :hou, :min, :sec); end
def time(i); rep(nil, i, :telt, 1); end
def time(i); rep(nil, i, :telt, 1); end
def wee(i); rex(:wee, i, /-?\d+W/); end
def wee(i); rex(:wee, i, /-?\d+W/); end
def yea(i); rex(:yea, i, /-?\d+Y/); end
def yea(i); rex(:yea, i, /-?\d+Y/); end