- Lowered the precedence of tag detection so that dates and durations are
recognized first.
- Modified the allowable tokens for a tag to be almost anything.
- Re-enabled shadow files, but in a new, simpler manner, that allows the
rc.shadow.command to override settings like color if necessary.
- Modifed A3 to capture program name and store it in the Context.
- Some attribute values (ie wait:tomorrow) when parsed, need to take
the data type of the attribute (date) and use that as an implied type
of the value (date literal).
- Arg renders type-less and category-less values as "", instead of "none".
Cleaner output.
- Arg now has a _value member that reflects the value in play, rather
than the input _raw value. Only _value is used in eval.
- DOM expansion capabilities are now controlled by rc.dom.
- Arguments are now categorized as either "literal" or a specific
category, with accompanying type. Type is inferred for literals,
and referenced for attributes.
- The A3::Arg object is very similar to the E9::Term object, so the two are
being merged. First step is to separate A3::Arg into it's own space, then
add a _type member.
- Added more valid stop characters as terminators for various arg types.
- Removed redundant E9 special handling for dates, which is already built in
to the Date object.
- Duration were parsed as <int><unit> in A3, whereas <number><unit> is
correct.
- Added Nibbler::str method for internal access.
- Nibbler::save, ::restore now return positions. Useful for extracting
substrings.
- Modified countdown.t to use the (now) correct units for durations.
- Restored the <name>.<modifier>[:=]<value> syntax that was reduced
to just <name>.<modifier>:<value> to make parsing easier. Now that
A3 is more sophisticated, we can have our sugar back.
- The command line construct "tags.none:" is translated into the expression
"tags = ''", but instead of '=' I had entered '=='. Force of C/C++/Perl
habit.
- When parsing duration literals, look-ahead now prevents an ordinal
such as '31st' (August 31st) from being interpreted as two tokens
'31s' (duration) and 't' (word). This is the same fix that was
applied to A3::is_number. I'll be there are more that I missed.
- Fixed bug whereby arguments were categorized, then defaults were injected
but no subsequent categorization occurred.
- Added debug diagnostics for default.command, 'modify' and 'information'
default processing.
- When compiling the 2.0.0 branch of Taskwarrior with GCC 4.6.1, the compiler
generates a number of warnings. This patch eliminates these warnings.
Signed-off-by: Paul Beckingham <paul@beckingham.net>
- Implemented selective ID/UUID detection, allowing only a single
block of consecutive ID/UUID values to be considered a sequence.
- Implemented A3::sequence to expand task IDs and UUIDs into an
algebraic filter.
- Implemented A3::extract_pattern.
- Implemented A3::infix, which inserts 'and' operators where necessary
in expressions.
- Began implementation of A3::expand which converts old-style filters
(pri:H) to the new algebraic style (priority = H).
- A3 now tracks whether a command is read-only, and builds filters accordingly.
- Implemented extract_filter, extract_modfications and extract_words stubs.
- Removed all E9 implementation details - this is going to be written from
scratch.
- Created A3.{h,cpp} which will be a simpler, lightweight version of
Arguments.{h,cpp} that does less, but does it better.
- Created E9.{h,cpp} which will be a better implementation of
Expression.{h,cpp} that does less, but does it better.
- Integrated A3 into Context::initialize, and Arguments and A3 will
coexist until A3 surpasses Arguments.