- Eliminated the . prefix for DOM references to the current task - it is
unnatural to state ".due < today".
- Prioritized parsing dates ahead of integers, which were masking all
dates.
- Implemented Nibbler::getWord.
- Re-implemented Nibbler::getDOM.
- Modified DOM addressed for context-based attributes from "due" to ".due",
the help disambiguate DOM references in expressions. There is now a
consistency:
<id>.due Task-specific
.due Contextual
<uuid>.due General
- Implemented associated unit tests.
- Added proper handling for when no command or filter is specified, and
no rc.default.command exists.
- Improved wording on above error message.
- Fixed typo in previous commit (managed to check in code before the
build completed, and ultimately failed).
- Now reports errors that occur during initialization at the same level
of verbosity as during command execution.
- Implemented Command::filter_shortcut to detect when a filter begins
with "status:pending" and skip the loading/parsing of completed.data.
- Removed obsolete att.t.cpp tests.
- Removed diagnostics from TDB2::TDB2 that were causing a segfault.
I suppose there is no std::cout available during global ctors?
- Implemented CmdAdd.cpp and CmdLog.cpp using TDB2.
- Implemented simple append writes in TDB2.
- Modified CmdImport to accept and parse JSON.
- Added more const-ness in DOM, Expression and Task, to allow TDB2::get_tasks
to return a const vector ref, which is a Very Good Thing.
- Corrected usage for the export command.
- Implemented Task::urgency as a call to Task::urgency_c, which is a const
overload to allow urgency calculations (without caching) for const Task
objects.
- Removed obolete code from TDB.
- Added lots of diagnostic output for TDB2 - it's annoying, but will be
gone soon.
- Added mention in CmdHelp of the new <filter> and <modifications>
syntax elements. Needs more.
- Added Command::filter overload which uses TDB2. Not in use yet.
- A substitution arg is categorized as "subst", but was tested for
"substitution".
- The Arguments::is_multipart method was triggering on '/', which is
wrong, but I can't remember why I put it in there. Hmmm.
- When extracting a write-filter, substitutions after the command
were generating an error, whereas they should be ignored.
- Task::substitute was modifying data even when the patterns were not
matching. Yikes.
- Added unit tests for en-passant modification of all types during
done, delete, start, stop.
- The dom.t tests were segfaulting because they used a blank Context
with no arguments, and when the DOM referecne 'context.program' was
queried, it failed because there was no Context::args[0].
- Added feature #559, which implements a new configuration variable,
rc.exit.on.missing.db, which causes taskwarrior to exit if the
rc.data.location is missing (thanks to Sander Marechal).
- Implemented RegX class to maintain a separate compile, and match
method, thereby allowing efficient re-use of the regex. This is
critical to Expression::eval, where an identical regex might be
applied to every task.
- Obsoleted rx.{h,cpp}, which combined the compile and match steps
into a single call, and is therefore not efficient when used in
the context of filtering.
- Fixed some unit tests that weren't building. Now they do. They
don't work of course (don't be silly) but that's a problem for
another day.
- Modified all code that relies on rx.h to use RegX.h.
- Reordered operator table so that longer operators match first, thus
disambiguating between ! and !=.
- Eliminated Expression::expand_expression.
- Modified Nibbler to know what a DOM reference looks like.
- Removed alpha equivalent operators (lt, le, gt, ge, not, eq, ne) because
these are common in descriptions (French: le, ne).
- Modified Arguments and Nibbler unit tests.
- Support and documentation for rc.patterns, which enables/disables
support for /pattern/ command line arguments.
- Support and documentation for rc.expressions, which enables/disables
support for command line expressions.
- Now canonicalizes attribute names.
- Now canonicalizes modifier names.
- New colorization (temporary) that colors all Arguments::dump output
green when processed.
- New distinction between 'old' and 'new' style command lines. Old style
is "pro:A +foo pri.not:M" with implicit "and" operators. New style
includes operators but does not include "+foo" and "/foo/".
- Many tokens are converted directly to primitive types (int, number,
string) when no further processing is required.
- Restored CmdShow to functionality, and linearized the list of supported
configuration variables, for easier insertion.
- Modified arguments.t.cpp unit tests.
- Fixed some compiler warnings.
- Added DOM detection of primitives: int, double, string.
- Began implementation of DOM task access.
- Implemented support for .startswith, .endswith, .word and .noword.
- Removed obsolete subst.t.cpp.
- Implemented an operator lookup table with type, associativity and
precedence.
- Implemented Expression::to_postfix that generates a postfix
expression list using a Dijkstra Shunt.
- Implemented Arguments::extract_command to locate the command
keyword in an argument list.
- Implemented Arguments::extract_sequence to locate and remove an ID
sequence from an argument list.
- Added unit test for extract_sequence.
- Stubbed all Argument::extract_<object> methods.
- Simplified code in (soon to be obsolete) Sequence.cpp.