From 392822f48ac825416f919119964a3e0d4b19c811 Mon Sep 17 00:00:00 2001 From: "Mirar (Pontus Hagland)" <pike@sort.mirar.org> Date: Sun, 29 Oct 2000 09:40:39 +0100 Subject: [PATCH] dwim day search order fixed (22-02-2000 added, m/d/y before d/m/y) Rev: lib/modules/Calendar.pmod/YMD.pmod:1.18 --- lib/modules/Calendar.pmod/YMD.pmod | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/lib/modules/Calendar.pmod/YMD.pmod b/lib/modules/Calendar.pmod/YMD.pmod index 3824c08520..0bf7fc60f0 100644 --- a/lib/modules/Calendar.pmod/YMD.pmod +++ b/lib/modules/Calendar.pmod/YMD.pmod @@ -2411,7 +2411,7 @@ TimeRange parse(string fmt,string arg) nfmt=replace(nfmt, ({"%Y","%y","%M","%W","%D","%a","%e","%h","%m","%s","%p", "%t","%f","%d","%z","%n"}), - ({ALNU,ALNU,ALNU,"%d","%d","%d",ALNU,"%d","%d","%d",AMPM, + ({ALNU,ALNU,ALNU,"%d",NUME,"%d",ALNU,"%d","%d","%d",AMPM, NUME,NUME,NUME,"%[-+0-9A-Za-z/]","%s"})); array q=Array.map(replace(fmt,({"%*","%%"}),({"",""}))/"%", lambda(string s){ return s[..0];})-({""}); @@ -2439,7 +2439,7 @@ TimeRange parse(string fmt,string arg) m->Y=default_rules->language[f_year_number_from_name](m->Y); if (!zero_type(m->Y) && m->D && (int)m->M) - low=m->day=cal->Day(m->Y,(int)m->M,m->D); + low=m->day=cal->Day(m->Y,(int)m->M,(int)m->D); if (m->d) { @@ -2479,8 +2479,7 @@ TimeRange parse(string fmt,string arg) m->week=low=m->year->week("w"+m->W); if (!zero_type(m->D)) - if (stringp(m->D)) return 0; - else m->day=low=(m->month||cal->Month())->day(m->D); + m->day=low=(m->month||cal->Month())->day((int)m->D); else if (!zero_type(m->a)) m->day=low=m->year->day(m->a); else if (!zero_type(m->e)) @@ -2573,6 +2572,7 @@ TimeRange parse(string fmt,string arg) //! <pre> //! <ref>parse</ref> format as in //! "%y-%M-%D (%M) -W%W-%e (%e)" "2000-03-20 (Mar) -W12-1 (Mon)" +//! "%M%/%D/%y" "3/20/2000" //! "%D%*[ /]%M%*[ /-,]%y" "20/3/2000" "20 mar 2000" "20/3 -00" //! "%e%*[ ]%D%*[ /]%M%*[ /-,]%y" "Mon 20 Mar 2000" "Mon 20/3 2000" //! "%y-%M-%D" "2000-03-20", "00-03-20" @@ -2633,16 +2633,19 @@ Calendar.dwim_day("next monday"); array dwim_day_strings= ({"%y-%M-%D (%*s) -W%W-%e (%e)", "%e%*[, ]%M%*[ ,]%D%*[ ,]%y", + "%y-%M-%D", + "%M/%D/%y", "%D%*[ /]%M%*[- /,]%y", "%M %D%*[- /,]%y", "%e%*[, ]%D%*[a-z:]%*[ /]%M%*[-/ ,]%y", - "%y-%M-%D", "-%y%*[ /]%D%*[ /]%M", "-%y%*[ /]%M%*[ /]%D", "%y%*[ /]%M%*[ /]%D", "%y%*[ /]%D%*[ /]%M", "%D%*[- /]%M", "%M%*[- /]%D", + "%M-%D-%y", + "%D-%M-%y", "%e%*[- /wv]%W%*[ -/]%y", "%e%*[- /wv]%W", "%d"}); @@ -2653,7 +2656,8 @@ cDay dwim_day(string day) foreach ( dwim_day_strings, string dayformat) - if ( (d=parse(dayformat,day)) ) return d; + if ( (d=parse(dayformat+"%n",day)) ) + return d; cDay t=Day(); if ( (d=parse("%e",day)) ) -- GitLab