- Only non-'string' type attributes ('numeric', 'date', 'duration') support the
evaluation of values in FILTER arguments, for example:
due.before:now+1d
If evaluation is supported, values need to be lexed into tokens, and if there
are multiple tokens, parenthesize the set.
- For a WRITECMD with no FILTER args, if a Lexer::Type::number exists as a
MODIFICATION, and that number is an unsigned integer, then promote it to
an ID. Added eceptions for the 'add' and 'log' command.
This feature allows for the continued use of 'task done 1', which should
be deprecated.
- When a write command contains no ID/UUID, looking for Lexer::Type::number
arguments that are tagged as MODIFICATIONS is now limited to only positive
integers that are found.
- Column indicator formats (depends.indicator, for example), should not set the
::_fixed_width flag because then the column does not have the opportunity to
be suppressed via rc.print.empty.colums=1.
- 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.
- ::dequote can now be given a string of valid quote characters, which defaults
to '".
- ::decomposeSubstitution properly parses the /from/to/g construct allowing for
escaped characters (\/).
- The 'g' at the end of a substitution is now considered to be a string of flag
characters, which may contain 'g'. No other flag values are currently
supported.
- With ::isPair using ::readWord, attribute values may now contain escaped
entities such as \t, \uNNNN, and U+NNNN.
- Removed distinct handling for <name><sep><value>, rc<sep><value> and
rc.<name><sep><value> - all generic now.
- Lexer::readWord is a general-purpose text parser, for finding plain words and
quoted strings. It supports \uNNNN and U+NNNN unicode sequences, and general
escapes, \t, \', \" etc.
- Whenever A2::attribute sees 'raw' being set, it automaticall decomposes the
arg, which can now be removed from other methods.
- New ::canonicalizeNames method means that the ::decomposeMod* methods are no
longer needed.
- Removed ::findOverrides which now does nothing.
- Removed unsupported UUID lists, which shoudl have been removed earlier when
Lexer::Type::list was dropped.
- Reversed logic in 'if' statements to perform the lowest cost comparison first.