- When a command is encountered on the command line, followed by an
ID or UUID, the distance (in arguments) between the command and
the sequence is measured in terms of arguments that are not rc: or
rc. overrides. It cannot exceed 1. This helps disambiguate
commands like 'task list Fedora 13', because the '13' is more than
one argument away from 'list', and is therefore not an ID.
- Re-enabled the modify command.
- Re-implemented Arguments::inject_defaults to accomodate the idea
of the default command, the modify command without the modify
keyword, and the automatic info command.
- 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.
- Fixed 'limit:N' bug, whereby when a report specifies a limit, and
the user overrides it, there are potentially two limit arguments,
in which case the last one, not the first one is needed.
- Implemented support for rc.default.command.
- Implemented support for assumed info command.
- Implemented Arguments::inject_defaults to insert default arguments
at just the right location.
- Corrected CmdCustom handling of limit:page.
- Added regex support to substirutions.
- Fixed bug that prevented 1.9.4 from shipping with regexes. If the
description is "aXXaaXXa", and the substitution is /XX/.../ then the
first substitutions changes the length of the string to "a...aaXXa"
and therefore invalidates the index for the second match, and makes
this change: "a...a...Xa". The fix is to keep a running 'skew' count
of the difference in 'from' and 'to' length, to adjust the match
indexes.
- Moved the helper deltaSubstitutions function into the Task object,
which makes more sense.
- Cleaned up output composition for CmdAdd.
- Eliminated #ifdef FEATURE_REGEX. They are here to stay.
- Command line arguments are now handled a little differently. Each
argument is subjected to further splitting, to break up expressions
early in the process, prior to categorization.
- Patterns are now treated as quoted string, where the quote character
is /.
- 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.
- Corrected interpretation of integers outside the location of a
sequence as a word.
- Corrected interpretation of uuids outside the location of a
sequence as a word.
- 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.
- Began Expression::toInfix to upgrade old-style filters to infix
algebraic filters.
- Added operator support to Arguments::categorize.
- Modified CmdCustom.cpp as a read-only command guinea-pig for the
new argument processing.
- Implemented Arguments::extract_read_only_filter to isolate the
arguments that pertain to read-only command filters
- Implemented Arguments::extract_write_filter to isolate the arguments
that pertain to write command filters.
- Implemented Arguments::extract_modifications to isolate the arguments
that pertain to write command modifications.
- Created stubbed Expression object.
- Began integration of Expression and Arguments into commands/CmdCustom.
- Added proper handling for sequences, in that they must be contiguous.
- Added placeholder code for default command, and automatic info report.
- Eliminated Context::parse.
- Eliminated Context::run Timer, because when it goes out of scope, it
adds timing messages to the deubg output, which at the end of Context::run
has already been displayed. In addition, the Context::dispatch timer
is about 0.2 milliseconds shorter, so the two are redundant.
- Eliminated stored arg_overrides and file_override in Context.
- Removed Filter, Subst, Task, Sequence from Context.
- Remove shadow file support. Hallelujah.
- Disabled/commented out most commands, ready for the big transition
to the new parsing style.
- Obsoleted Subst.{h,cpp}.
- Added argument categorization, and a colorful diagnostic output
in debug mode.
- Localized all argument parsing in Arguments object, while still
allowing specific commands to choose which elements are parsed
from the command line.
- Obsoleted Command::exectute 'commandLine' argument. It is worse
than unnecessary, it is an uncategorized raw argument string, which
is only really useful for the 'execute' command, which itself now
calls Arguments::combine to reconstruct the command line string.
- Obsoleted Cmd object.
- Removed Context::dispatch, renamed dispatch2 --> dispatch.
- Commented out import and custom report functionality that depends
on Cmd. This should be about as broken as taskwarrior gets. It's
all uphill from here.
- 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.