mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-08-23 23:46:42 +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
1
AUTHORS
1
AUTHORS
|
@ -262,3 +262,4 @@ suggestions:
|
||||||
Dylan Mikus
|
Dylan Mikus
|
||||||
Andrea Rizzi
|
Andrea Rizzi
|
||||||
Florian Petry
|
Florian Petry
|
||||||
|
Lars Beckers
|
||||||
|
|
|
@ -32,6 +32,8 @@
|
||||||
- TW-1488 You have more urgent tasks (thanks to Stefan Betz, Denis Kasak).
|
- TW-1488 You have more urgent tasks (thanks to Stefan Betz, Denis Kasak).
|
||||||
- TW-1511 Project titles not properly parsed if they contain hyphens (thanks to
|
- TW-1511 Project titles not properly parsed if they contain hyphens (thanks to
|
||||||
Leon Feng, Blake Sweeney, Dylan Mikus).
|
Leon Feng, Blake Sweeney, Dylan Mikus).
|
||||||
|
- TW-1515 abbreviation.minimum does not apply to date recognition (thanks to
|
||||||
|
Lars Beckers).
|
||||||
- TW-1521 task project!=PROJECTNAME does not work (Regression) (thanks to
|
- TW-1521 task project!=PROJECTNAME does not work (Regression) (thanks to
|
||||||
Florian Petry).
|
Florian Petry).
|
||||||
- TW-1527 Extra spaces added around slashes (thanks to Renato Alves).
|
- TW-1527 Extra spaces added around slashes (thanks to Renato Alves).
|
||||||
|
|
|
@ -31,6 +31,7 @@
|
||||||
#include <Dates.h>
|
#include <Dates.h>
|
||||||
#include <Date.h>
|
#include <Date.h>
|
||||||
#include <Lexer.h>
|
#include <Lexer.h>
|
||||||
|
#include <CLI2.h>
|
||||||
#include <i18n.h>
|
#include <i18n.h>
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -134,20 +135,22 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
struct tm* t = localtime (&now);
|
struct tm* t = localtime (&now);
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
|
int minimum = CLI2::minimumMatchLength;
|
||||||
|
|
||||||
// Dynamics.
|
// Dynamics.
|
||||||
if (name == "now")
|
if (closeEnough ("now", name, minimum))
|
||||||
{
|
{
|
||||||
value = Variant (now, Variant::type_date);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_isdst = -1;
|
t->tm_isdst = -1;
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
value = Variant (mktime (t), Variant::type_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (name == "sod")
|
else if (closeEnough ("sod", name, minimum))
|
||||||
{
|
{
|
||||||
t->tm_mday++;
|
t->tm_mday++;
|
||||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
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);
|
value = Variant (mktime (t), Variant::type_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (name == "eod")
|
else if (closeEnough ("eod", name, minimum))
|
||||||
{
|
{
|
||||||
t->tm_mday++;
|
t->tm_mday++;
|
||||||
t->tm_hour = t->tm_min = 0;
|
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);
|
value = Variant (mktime (t), Variant::type_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (name == "tomorrow")
|
else if (closeEnough ("tomorrow", name, minimum))
|
||||||
{
|
{
|
||||||
t->tm_mday++;
|
t->tm_mday++;
|
||||||
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
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);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_isdst = -1;
|
t->tm_isdst = -1;
|
||||||
|
@ -203,7 +206,8 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_year = 138;
|
t->tm_year = 138;
|
||||||
|
@ -213,7 +217,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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_hour = t->tm_min = 0;
|
||||||
t->tm_sec = -1;
|
t->tm_sec = -1;
|
||||||
|
@ -224,7 +228,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_mon = 0;
|
t->tm_mon = 0;
|
||||||
|
@ -234,7 +238,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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_hour = t->tm_min = 0;
|
||||||
t->tm_sec = -1;
|
t->tm_sec = -1;
|
||||||
|
@ -250,7 +254,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_mon += 3 - (t->tm_mon % 3);
|
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);
|
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_hour = t->tm_min = t->tm_sec = 0;
|
||||||
t->tm_mday = 1;
|
t->tm_mday = 1;
|
||||||
|
@ -273,7 +277,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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;
|
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);
|
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_hour = 24;
|
||||||
t->tm_min = 0;
|
t->tm_min = 0;
|
||||||
|
@ -299,7 +304,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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;
|
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||||
int extra = t->tm_wday * 86400;
|
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);
|
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_hour = t->tm_min = 0;
|
||||||
t->tm_sec = -1;
|
t->tm_sec = -1;
|
||||||
|
@ -316,7 +322,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t) + extra, Variant::type_date);
|
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;
|
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||||
int extra = (7 - t->tm_wday) * 86400;
|
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);
|
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;
|
t->tm_hour = t->tm_min = t->tm_sec = 0;
|
||||||
int extra = (t->tm_wday - 1) * 86400;
|
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);
|
value = Variant (mktime (t) - extra, Variant::type_date);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (name == "eoww")
|
else if (closeEnough ("eoww", name, minimum))
|
||||||
{
|
{
|
||||||
t->tm_hour = 24;
|
t->tm_hour = 24;
|
||||||
t->tm_min = 0;
|
t->tm_min = 0;
|
||||||
|
@ -439,11 +445,11 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
throw std::string (STRING_DATES_MONTH_31);
|
throw std::string (STRING_DATES_MONTH_31);
|
||||||
}
|
}
|
||||||
|
|
||||||
else if (name == "easter" ||
|
else if (closeEnough ("easter", name, minimum) ||
|
||||||
name == "eastermonday" ||
|
closeEnough ("eastermonday", name, minimum) ||
|
||||||
name == "ascension" ||
|
closeEnough ("ascension", name, minimum) ||
|
||||||
name == "pentecost" ||
|
closeEnough ("pentecost", name, minimum) ||
|
||||||
name == "goodfriday")
|
closeEnough ("goodfriday", name, minimum))
|
||||||
{
|
{
|
||||||
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||||
easter (t);
|
easter (t);
|
||||||
|
@ -457,15 +463,15 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
easter (t);
|
easter (t);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (name == "goodfriday") t->tm_mday -= 2;
|
if (closeEnough ("goodfriday", name, minimum)) t->tm_mday -= 2;
|
||||||
else if (name == "eastermonday") t->tm_mday += 1;
|
else if (closeEnough ("eastermonday", name, minimum)) t->tm_mday += 1;
|
||||||
else if (name == "ascension") t->tm_mday += 39;
|
else if (closeEnough ("ascension", name, minimum)) t->tm_mday += 39;
|
||||||
else if (name == "pentecost") t->tm_mday += 49;
|
else if (closeEnough ("pentecost", name, minimum)) t->tm_mday += 49;
|
||||||
|
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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);
|
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||||
midsommar (t);
|
midsommar (t);
|
||||||
|
@ -482,7 +488,7 @@ bool namedDates (const std::string& name, Variant& value)
|
||||||
value = Variant (mktime (t), Variant::type_date);
|
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);
|
Variant valueNow = Variant (mktime (t), Variant::type_date);
|
||||||
midsommarafton (t);
|
midsommarafton (t);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue