module Fugit::Duration::Parser
def day(i); rex(:day, i, /(\d+\.\d*|(\d*\.)?\d+) *d(ays?)?/i); end
def day(i); rex(:day, i, /(\d+\.\d*|(\d*\.)?\d+) *d(ays?)?/i); end
def dur(i); jseq(:dur, i, :sdur, :sep); end
def dur(i); jseq(:dur, i, :sdur, :sep); end
def elt(i); alt(nil, i, :yea, :mon, :wee, :day, :hou, :min, :sec, :sek); end
def elt(i); alt(nil, i, :yea, :mon, :wee, :day, :hou, :min, :sec, :sek); end
def hou(i); rex(:hou, i, /(\d+\.\d*|(\d*\.)?\d+) *h(ours?)?/i); end
def hou(i); rex(:hou, i, /(\d+\.\d*|(\d*\.)?\d+) *h(ours?)?/i); end
def merge(h0, h1)
def merge(h0, h1) sign = h1.delete(:sign) || 1 h1.inject(h0) { |h, (k, v)| h.merge(k => (h[k] || 0) + sign * v) } end
def min(i); rex(:min, i, /(\d+\.\d*|(\d*\.)?\d+) *m(in(ute)?s?)?/); end
def min(i); rex(:min, i, /(\d+\.\d*|(\d*\.)?\d+) *m(in(ute)?s?)?/); end
def mon(i); rex(:mon, i, /(\d+\.\d*|(\d*\.)?\d+) *(M|months?)/); end
def mon(i); rex(:mon, i, /(\d+\.\d*|(\d*\.)?\d+) *(M|months?)/); end
def rewrite_dur(t)
def rewrite_dur(t) o.pp(t, colours: true) t.children.inject({}) { |h, ct| merge(h, ct.name ? rewrite(ct) : {}) } end
def rewrite_sdur(t)
def rewrite_sdur(t) h = Fugit::Duration.common_rewrite_dur(t) sign = t.sublookup(:sign) sign = (sign && sign.string == '-') ? -1 : 1 h.merge(sign: sign) end
def sdur(i); seq(:sdur, i, :sign, '?', :elt, '+'); end
def sdur(i); seq(:sdur, i, :sign, '?', :elt, '+'); end
def sec(i); rex(:sec, i, /(\d+\.\d*|(\d*\.)?\d+) *s(ec(ond)?)?s?/i); end
def sec(i); rex(:sec, i, /(\d+\.\d*|(\d*\.)?\d+) *s(ec(ond)?)?s?/i); end
def sek(i); rex(:sec, i, /(\d+\.\d*|\.\d+|\d+)$/); end
def sek(i); rex(:sec, i, /(\d+\.\d*|\.\d+|\d+)$/); end
def sep(i); rex(nil, i, /([ \t,]+|and)*/i); end
def sep(i); rex(nil, i, /([ \t,]+|and)*/i); end
def sign(i); rex(:sign, i, /[-+]?/); end
def sign(i); rex(:sign, i, /[-+]?/); end
def wee(i); rex(:wee, i, /(\d+\.\d*|(\d*\.)?\d+) *w(eeks?)?/i); end
def wee(i); rex(:wee, i, /(\d+\.\d*|(\d*\.)?\d+) *w(eeks?)?/i); end
def yea(i); rex(:yea, i, /(\d+\.\d*|(\d*\.)?\d+) *y(ears?)?/i); end
def yea(i); rex(:yea, i, /(\d+\.\d*|(\d*\.)?\d+) *y(ears?)?/i); end