- Improved the handling when parsing blank lines and empty task in the data, so
that instead of the message:
Taskwarrior no longer supports file format 1, originally used between 27
November 2006 and 31 December 2007.
We now see:
Unrecognized Taskwarrior file format or blank line in data.
- Merged t2.t.cpp into t.t.cpp.
- The command "task 1 modify due: wait:2days" gave the following
output:
Warning: You have specified that the 'wait' date is after the
'due' date.
Now, we check if the due date is zero, in which case the due date is
being removed.
- The 'json.depends.array' setting controls whether dedendencies are encoded as
a JSON array, or comma-separated string.
- The default value is on.
- Both forms are imported.
- Separated handling for 'recur' (store in raw form) and type 'duration'
attributes (store formatted).
- Added missing storage handling for type duration attributes.
- Task::modify now considers the 'g' at the end of a substitution to be a
string of characters, which may contain 'g'. No other flags are currently
supported.
- This is a large commit, as all the changes are centered around the elimination
of CLI.
- CLI is no longer compiled.
- Context no longer maintains CLI + CLI2.
- Filter now walks the parse tree and sends to Eval a
std::vector <std::pair <std::string, Lexer::Type>> containing only args tagged
with FILTER.
- Filter more efficiently sets/unsets Eval::debug, by doing it less often.
- The filterExpr.length() check is no longer meaningful, and instead the size of
the std::vector above is used.
- Filter::pendingOnly performs better analysis.
- Filter::safety makes use of the std::vector size also.
- Task::modify makes use of 'canonical' rather than 'name', which is a policy
change, not a fix.
- Use variadic templates, with a slight twist for properly supporting
Taskwarrior's l10n strings.
- Adjust code that relied on implicit type conversion which led to
problems with template instantiation.
- Move some functionality out of format() in order to keep it generic.