mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
A3, Arg
- 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.
This commit is contained in:
parent
a3ba91c2a3
commit
de9dbbbb3d
2 changed files with 14 additions and 11 deletions
17
src/A3.cpp
17
src/A3.cpp
|
@ -901,6 +901,9 @@ const A3 A3::expand (const A3& input) const
|
||||||
std::vector <Arg>::const_iterator previous = input.begin ();
|
std::vector <Arg>::const_iterator previous = input.begin ();
|
||||||
for (arg = input.begin (); arg != input.end (); ++arg)
|
for (arg = input.begin (); arg != input.end (); ++arg)
|
||||||
{
|
{
|
||||||
|
// When expanded, the value retains the original type.
|
||||||
|
Arg::type implied = arg->_type;
|
||||||
|
|
||||||
// name:value --> name = value
|
// name:value --> name = value
|
||||||
if (arg->_category == Arg::cat_attr)
|
if (arg->_category == Arg::cat_attr)
|
||||||
{
|
{
|
||||||
|
@ -910,7 +913,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
|
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("=", Arg::cat_op));
|
expanded.push_back (Arg ("=", Arg::cat_op));
|
||||||
expanded.push_back (Arg (value, Arg::type_string, Arg::cat_literal));
|
expanded.push_back (Arg (value, implied, Arg::cat_literal));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.mod:value --> name <op sub mod> value
|
// name.mod:value --> name <op sub mod> value
|
||||||
|
@ -927,7 +930,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("<", Arg::cat_op));
|
expanded.push_back (Arg ("<", Arg::cat_op));
|
||||||
expanded.push_back (Arg (value, Arg::type_string, Arg::cat_literal));
|
expanded.push_back (Arg (value, implied, Arg::cat_literal));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.after:value --> name > value
|
// name.after:value --> name > value
|
||||||
|
@ -935,7 +938,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg (">", Arg::cat_op));
|
expanded.push_back (Arg (">", Arg::cat_op));
|
||||||
expanded.push_back (Arg (value, Arg::type_string, Arg::cat_literal));
|
expanded.push_back (Arg (value, implied, Arg::cat_literal));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.none: --> name == ""
|
// name.none: --> name == ""
|
||||||
|
@ -943,7 +946,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("=", Arg::cat_op));
|
expanded.push_back (Arg ("=", Arg::cat_op));
|
||||||
expanded.push_back (Arg ("", Arg::type_string, Arg::cat_none));
|
expanded.push_back (Arg ("", implied, Arg::cat_none));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.any: --> name != ""
|
// name.any: --> name != ""
|
||||||
|
@ -951,7 +954,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("!=", Arg::cat_op));
|
expanded.push_back (Arg ("!=", Arg::cat_op));
|
||||||
expanded.push_back (Arg ("", Arg::type_string, Arg::cat_none));
|
expanded.push_back (Arg ("", implied, Arg::cat_none));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.is:value --> name = value
|
// name.is:value --> name = value
|
||||||
|
@ -959,7 +962,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("=", Arg::cat_op));
|
expanded.push_back (Arg ("=", Arg::cat_op));
|
||||||
expanded.push_back (Arg (value, Arg::type_string, Arg::cat_none));
|
expanded.push_back (Arg (value, implied, Arg::cat_none));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.isnt:value --> name != value
|
// name.isnt:value --> name != value
|
||||||
|
@ -967,7 +970,7 @@ const A3 A3::expand (const A3& input) const
|
||||||
{
|
{
|
||||||
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
expanded.push_back (Arg (name, Arg::type_string, Arg::cat_dom));
|
||||||
expanded.push_back (Arg ("!=", Arg::cat_op));
|
expanded.push_back (Arg ("!=", Arg::cat_op));
|
||||||
expanded.push_back (Arg (value, Arg::type_string, Arg::cat_none));
|
expanded.push_back (Arg (value, implied, Arg::cat_none));
|
||||||
}
|
}
|
||||||
|
|
||||||
// name.has:value --> name ~ value
|
// name.has:value --> name ~ value
|
||||||
|
|
|
@ -121,7 +121,7 @@ const std::string Arg::type_name (Arg::type t)
|
||||||
{
|
{
|
||||||
switch (t)
|
switch (t)
|
||||||
{
|
{
|
||||||
case Arg::type_none: return "none";
|
case Arg::type_none: return "";
|
||||||
case Arg::type_pseudo: return "pseudo";
|
case Arg::type_pseudo: return "pseudo";
|
||||||
case Arg::type_bool: return "bool";
|
case Arg::type_bool: return "bool";
|
||||||
case Arg::type_string: return "string";
|
case Arg::type_string: return "string";
|
||||||
|
@ -130,7 +130,7 @@ const std::string Arg::type_name (Arg::type t)
|
||||||
case Arg::type_number: return "number";
|
case Arg::type_number: return "number";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "none";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
@ -161,7 +161,7 @@ const std::string Arg::category_name (Arg::category c)
|
||||||
{
|
{
|
||||||
switch (c)
|
switch (c)
|
||||||
{
|
{
|
||||||
case Arg::cat_none: return "none";
|
case Arg::cat_none: return "";
|
||||||
case Arg::cat_terminator: return "terminator";
|
case Arg::cat_terminator: return "terminator";
|
||||||
case Arg::cat_program: return "program";
|
case Arg::cat_program: return "program";
|
||||||
case Arg::cat_command: return "command";
|
case Arg::cat_command: return "command";
|
||||||
|
@ -180,7 +180,7 @@ const std::string Arg::category_name (Arg::category c)
|
||||||
case Arg::cat_literal: return "literal";
|
case Arg::cat_literal: return "literal";
|
||||||
}
|
}
|
||||||
|
|
||||||
return "none";
|
return "";
|
||||||
}
|
}
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
///////////////////////////////////////////////////////////////////////////////
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue