diff --git a/src/Arguments.cpp b/src/Arguments.cpp index 5e8878163..b793021f3 100644 --- a/src/Arguments.cpp +++ b/src/Arguments.cpp @@ -1551,7 +1551,7 @@ Arguments Arguments::extract_write_filter () } //////////////////////////////////////////////////////////////////////////////// -Arguments Arguments::extract_modifications () +Arguments Arguments::extract_modifications (bool include_seq/* = false*/) { Arguments modifications; @@ -1566,9 +1566,11 @@ Arguments Arguments::extract_modifications () } // Sequence excluded regardless of location. - else if (arg->_third == "id" || + else if (arg->_third == "id" || arg->_third == "uuid") { + if (include_seq) + modifications.push_back (Triple (arg->_first, arg->_second, "word")); } else if (seen_command) diff --git a/src/Arguments.h b/src/Arguments.h index 5b6506b39..efc3fbc50 100644 --- a/src/Arguments.h +++ b/src/Arguments.h @@ -131,7 +131,7 @@ public: Arguments extract_read_only_filter (); Arguments extract_write_filter (); - Arguments extract_modifications (); + Arguments extract_modifications (bool include_seq = false); Arguments extract_simple_words (); static bool valid_modifier (const std::string&); diff --git a/src/DOM.cpp b/src/DOM.cpp index 2b7145597..6d714553e 100644 --- a/src/DOM.cpp +++ b/src/DOM.cpp @@ -255,9 +255,9 @@ const std::string DOM::get (const std::string& name, const Task& task) } } - // [] . - if (name == ".id") return format (task.id); - else if (name == ".urgency") return format (task.urgency_c (), 4, 3); + // [.] + if (name == "id") return format (task.id); + else if (name == "urgency") return format (task.urgency_c (), 4, 3); else if (task.has (name.substr (1))) return task.get (name.substr (1)); // Delegate to the context-free version of DOM::get. diff --git a/src/Expression.cpp b/src/Expression.cpp index 1d1822369..ac3e22371 100644 --- a/src/Expression.cpp +++ b/src/Expression.cpp @@ -638,15 +638,15 @@ void Expression::tokenize ( else if (n.getNumber (d)) tokens.push_back (Triple (format (d), "number", category)); - else if (n.getInt (i)) - tokens.push_back (Triple (format (i), "int", category)); - else if (n.getDateISO (t)) tokens.push_back (Triple (Date (t).toISO (), "date", category)); else if (n.getDate (date_format, t)) tokens.push_back (Triple (Date (t).toString (date_format), "date", category)); + else if (n.getInt (i)) + tokens.push_back (Triple (format (i), "int", category)); + else if (n.getWord (s)) tokens.push_back (Triple (s, "rvalue", category)); diff --git a/src/Nibbler.cpp b/src/Nibbler.cpp index 7e799c674..c681cf254 100644 --- a/src/Nibbler.cpp +++ b/src/Nibbler.cpp @@ -933,18 +933,6 @@ bool Nibbler::getDOM (std::string& result) std::string right; int number; - if (skip ('.') && - getWord (right)) - { - while (skip ('.') && - getWord (right)) - ; - - result = mInput.substr (i, mCursor - i); - return true; - } - - restore (); if (getWord (left) && skip ('.') && getWord (right)) @@ -982,6 +970,18 @@ bool Nibbler::getDOM (std::string& result) result = mInput.substr (i, mCursor - i); return true; } + + restore (); + if (getWord (right)) + { + while (skip ('.') && + getWord (right)) + ; + + result = mInput.substr (i, mCursor - i); + return true; + } + } return false; diff --git a/src/commands/CmdAdd.cpp b/src/commands/CmdAdd.cpp index 396cdba76..68bca4b22 100644 --- a/src/commands/CmdAdd.cpp +++ b/src/commands/CmdAdd.cpp @@ -56,7 +56,7 @@ int CmdAdd::execute (std::string& output) task.set ("uuid", uuid ()); // Apply the command line modifications to the new task. - Arguments modifications = context.args.extract_modifications (); + Arguments modifications = context.args.extract_modifications (true); modify_task_description_replace (task, modifications); apply_defaults (task); diff --git a/test/nibbler.t.cpp b/test/nibbler.t.cpp index be02bf90d..6fbff61ad 100644 --- a/test/nibbler.t.cpp +++ b/test/nibbler.t.cpp @@ -414,9 +414,9 @@ int main (int argc, char** argv) t.diag ("Nibbler::getDOM"); // positive. - n = Nibbler (".due "); - t.ok (n.getDOM (s), "'.due' getDOM -> ok"); - t.is (s, ".due", "'.due' getDOM -> '.due'"); + n = Nibbler ("due "); + t.ok (n.getDOM (s), "'due' getDOM -> ok"); + t.is (s, "due", "'due' getDOM -> 'due'"); n = Nibbler ("123.due "); t.ok (n.getDOM (s), "'123.due' getDOM -> ok");