mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-07-07 20:06:36 +02:00
Enhancement - Att::type
- Implemented Att::type to discern attribute types to assist with type-specific modifier evaluation. - Fixed bug that required attributes to have specified values, whereas stating "name:" means no value for name.
This commit is contained in:
parent
db0d85f5e7
commit
cdd07be331
3 changed files with 23 additions and 4 deletions
23
src/Att.cpp
23
src/Att.cpp
|
@ -392,6 +392,27 @@ bool Att::validMod (const std::string& mod)
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
|
// The type of an attribute is useful for modifier evaluation.
|
||||||
|
std::string type (const std::string& name)
|
||||||
|
{
|
||||||
|
if (name == "due" ||
|
||||||
|
name == "until" ||
|
||||||
|
name == "start" ||
|
||||||
|
name == "entry" ||
|
||||||
|
name == "end")
|
||||||
|
return "date";
|
||||||
|
|
||||||
|
else if (name == "recur")
|
||||||
|
return "duration";
|
||||||
|
|
||||||
|
else if (name == "limit")
|
||||||
|
return "number";
|
||||||
|
|
||||||
|
else
|
||||||
|
return "text";
|
||||||
|
}
|
||||||
|
|
||||||
////////////////////////////////////////////////////////////////////////////////
|
////////////////////////////////////////////////////////////////////////////////
|
||||||
//
|
//
|
||||||
// start --> name --> . --> mod --> : --> " --> value --> " --> end
|
// start --> name --> . --> mod --> : --> " --> value --> " --> end
|
||||||
|
@ -439,8 +460,6 @@ void Att::parse (Nibbler& n)
|
||||||
{
|
{
|
||||||
decode (mValue);
|
decode (mValue);
|
||||||
}
|
}
|
||||||
else
|
|
||||||
throw std::string ("Missing attribute value"); // TODO i18n
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
throw std::string ("Missing : after attribute name"); // TODO i18n
|
throw std::string ("Missing : after attribute name"); // TODO i18n
|
||||||
|
|
|
@ -49,6 +49,7 @@ public:
|
||||||
static bool validNameValue (const std::string&, const std::string&, const std::string&);
|
static bool validNameValue (const std::string&, const std::string&, const std::string&);
|
||||||
static bool validNameValue (std::string&, std::string&, std::string&);
|
static bool validNameValue (std::string&, std::string&, std::string&);
|
||||||
static bool validMod (const std::string&);
|
static bool validMod (const std::string&);
|
||||||
|
static std::string type (const std::string&);
|
||||||
void parse (const std::string&);
|
void parse (const std::string&);
|
||||||
void parse (Nibbler&);
|
void parse (Nibbler&);
|
||||||
bool match (const Att&) const;
|
bool match (const Att&) const;
|
||||||
|
|
|
@ -494,7 +494,6 @@ void Context::constructFilter ()
|
||||||
{
|
{
|
||||||
foreach (att, task)
|
foreach (att, task)
|
||||||
{
|
{
|
||||||
|
|
||||||
// TODO this doesn't work.
|
// TODO this doesn't work.
|
||||||
if (att->first == "description")
|
if (att->first == "description")
|
||||||
{
|
{
|
||||||
|
@ -503,7 +502,7 @@ void Context::constructFilter ()
|
||||||
foreach (word, words)
|
foreach (word, words)
|
||||||
{
|
{
|
||||||
filter.push_back (Att ("description", "has", *word));
|
filter.push_back (Att ("description", "has", *word));
|
||||||
std::cout << "Context::constructFilter " << att->first << "=" << att->second.value () << std::endl;
|
std::cout << "Context::constructFilter " << att->first << "=" << *word << std::endl;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue