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