mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
TW-1515: abbreviation.minimum does not apply to date recognition
- Thanks to Lars Beckers.
This commit is contained in:
parent
a007d6c174
commit
f36c14e6b4
3 changed files with 39 additions and 30 deletions
|
@ -31,6 +31,7 @@
|
|||
#include <Dates.h>
|
||||
#include <Date.h>
|
||||
#include <Lexer.h>
|
||||
#include <CLI2.h>
|
||||
#include <i18n.h>
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
|
@ -134,20 +135,22 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
struct tm* t = localtime (&now);
|
||||
int i;
|
||||
|
||||
int minimum = CLI2::minimumMatchLength;
|
||||
|
||||
// Dynamics.
|
||||
if (name == "now")
|
||||
if (closeEnough ("now", name, minimum))
|
||||
{
|
||||
value = Variant (now, Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "today")
|
||||
else if (closeEnough ("today", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_isdst = -1;
|
||||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "sod")
|
||||
else if (closeEnough ("sod", name, minimum))
|
||||
{
|
||||
t->tm_mday++;
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
|
@ -155,7 +158,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eod")
|
||||
else if (closeEnough ("eod", name, minimum))
|
||||
{
|
||||
t->tm_mday++;
|
||||
t->tm_hour = t->tm_min = 0;
|
||||
|
@ -164,7 +167,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "tomorrow")
|
||||
else if (closeEnough ("tomorrow", name, minimum))
|
||||
{
|
||||
t->tm_mday++;
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
|
@ -172,7 +175,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "yesterday")
|
||||
else if (closeEnough ("yesterday", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_isdst = -1;
|
||||
|
@ -203,7 +206,8 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "later" || name == "someday")
|
||||
else if (closeEnough ("later", name, minimum) ||
|
||||
closeEnough ("someday", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_year = 138;
|
||||
|
@ -213,7 +217,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eoy")
|
||||
else if (closeEnough ("eoy", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = 0;
|
||||
t->tm_sec = -1;
|
||||
|
@ -224,7 +228,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "soy")
|
||||
else if (closeEnough ("soy", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_mon = 0;
|
||||
|
@ -234,7 +238,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eoq")
|
||||
else if (closeEnough ("eoq", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = 0;
|
||||
t->tm_sec = -1;
|
||||
|
@ -250,7 +254,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "soq")
|
||||
else if (closeEnough ("soq", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_mon += 3 - (t->tm_mon % 3);
|
||||
|
@ -265,7 +269,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "socm")
|
||||
else if (closeEnough ("socm", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
t->tm_mday = 1;
|
||||
|
@ -273,7 +277,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "som")
|
||||
else if (closeEnough ("som", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
|
||||
|
@ -289,7 +293,8 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eom" || name == "eocm")
|
||||
else if (closeEnough ("eom", name, minimum) ||
|
||||
closeEnough ("eocm", name, minimum))
|
||||
{
|
||||
t->tm_hour = 24;
|
||||
t->tm_min = 0;
|
||||
|
@ -299,7 +304,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "socw")
|
||||
else if (closeEnough ("socw", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
int extra = t->tm_wday * 86400;
|
||||
|
@ -307,7 +312,8 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t) - extra, Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eow" || name == "eocw")
|
||||
else if (closeEnough ("eow", name, minimum) ||
|
||||
closeEnough ("eocw", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = 0;
|
||||
t->tm_sec = -1;
|
||||
|
@ -316,7 +322,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t) + extra, Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "sow")
|
||||
else if (closeEnough ("sow", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
int extra = (7 - t->tm_wday) * 86400;
|
||||
|
@ -324,7 +330,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t) + extra, Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "soww")
|
||||
else if (closeEnough ("soww", name, minimum))
|
||||
{
|
||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||
int extra = (t->tm_wday - 1) * 86400;
|
||||
|
@ -335,7 +341,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t) - extra, Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "eoww")
|
||||
else if (closeEnough ("eoww", name, minimum))
|
||||
{
|
||||
t->tm_hour = 24;
|
||||
t->tm_min = 0;
|
||||
|
@ -439,11 +445,11 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
throw std::string (STRING_DATES_MONTH_31);
|
||||
}
|
||||
|
||||
else if (name == "easter" ||
|
||||
name == "eastermonday" ||
|
||||
name == "ascension" ||
|
||||
name == "pentecost" ||
|
||||
name == "goodfriday")
|
||||
else if (closeEnough ("easter", name, minimum) ||
|
||||
closeEnough ("eastermonday", name, minimum) ||
|
||||
closeEnough ("ascension", name, minimum) ||
|
||||
closeEnough ("pentecost", name, minimum) ||
|
||||
closeEnough ("goodfriday", name, minimum))
|
||||
{
|
||||
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||
easter (t);
|
||||
|
@ -457,15 +463,15 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
easter (t);
|
||||
}
|
||||
|
||||
if (name == "goodfriday") t->tm_mday -= 2;
|
||||
else if (name == "eastermonday") t->tm_mday += 1;
|
||||
else if (name == "ascension") t->tm_mday += 39;
|
||||
else if (name == "pentecost") t->tm_mday += 49;
|
||||
if (closeEnough ("goodfriday", name, minimum)) t->tm_mday -= 2;
|
||||
else if (closeEnough ("eastermonday", name, minimum)) t->tm_mday += 1;
|
||||
else if (closeEnough ("ascension", name, minimum)) t->tm_mday += 39;
|
||||
else if (closeEnough ("pentecost", name, minimum)) t->tm_mday += 49;
|
||||
|
||||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "midsommar")
|
||||
else if (closeEnough ("midsommar", name, minimum))
|
||||
{
|
||||
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||
midsommar (t);
|
||||
|
@ -482,7 +488,7 @@ bool namedDates (const std::string& name, Variant& value)
|
|||
value = Variant (mktime (t), Variant::type_date);
|
||||
}
|
||||
|
||||
else if (name == "midsommarafton")
|
||||
else if (closeEnough ("midsommarafton", name, minimum))
|
||||
{
|
||||
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||
midsommarafton (t);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue