mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Recurrence: Added stubbed generateAllDueDates
This commit is contained in:
parent
e62b395534
commit
aa6b5dbfba
1 changed files with 56 additions and 1 deletions
|
@ -263,7 +263,62 @@ static Datetime generateNextDueDate (
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static void synthesizeTasks (const Task&)
|
||||
// Calculates the due date for a new instance N.
|
||||
static std::vector <Datetime> generateAllDueDates (const Task& templateTask)
|
||||
{
|
||||
std::vector <Datetime> dueDates;
|
||||
|
||||
// Determine due date, recur period and until date.
|
||||
Datetime due (templateTask.get_date ("due"));
|
||||
context.debug (" due " + due.toISOLocalExtended ());
|
||||
|
||||
auto recur = templateTask.get ("recur");
|
||||
context.debug (" recur " + recur);
|
||||
|
||||
auto lastN = std::max (1, templateTask.get_int ("last"));
|
||||
context.debug (format (" last {1}", lastN));
|
||||
|
||||
bool end_in_sight = false;
|
||||
Datetime until;
|
||||
if (templateTask.get ("until") != "")
|
||||
{
|
||||
until = Datetime (templateTask.get ("until"));
|
||||
end_in_sight = true;
|
||||
context.debug (" until " + until.toISOLocalExtended ());
|
||||
}
|
||||
|
||||
auto recurrence_limit = context.config.getInteger ("recurrence.limit");
|
||||
context.debug (format (" recurrence.limit {1}", recurrence_limit));
|
||||
int recurrence_counter = 0;
|
||||
Datetime now;
|
||||
|
||||
while (1)
|
||||
{
|
||||
Datetime nextDue = generateNextDueDate (due, recur, lastN);
|
||||
|
||||
// TODO Safety.
|
||||
if (dueDates.size () && dueDates.back () == nextDue)
|
||||
break;
|
||||
|
||||
// If nextDue > until, it means there are no more tasks to generate, so
|
||||
// this templateTask is finished.
|
||||
if (end_in_sight && nextDue > until)
|
||||
break;
|
||||
|
||||
if (nextDue > now)
|
||||
++recurrence_counter;
|
||||
|
||||
if (recurrence_counter >= recurrence_limit)
|
||||
break;
|
||||
|
||||
dueDates.push_back (nextDue);
|
||||
}
|
||||
|
||||
return dueDates;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
static void synthesizeTasks (const Task& templateTask)
|
||||
{
|
||||
context.debug ("synthesizeTasks start");
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue