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;
|
||||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// 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
|
||||
|
@ -439,8 +460,6 @@ void Att::parse (Nibbler& n)
|
|||
{
|
||||
decode (mValue);
|
||||
}
|
||||
else
|
||||
throw std::string ("Missing attribute value"); // TODO i18n
|
||||
}
|
||||
else
|
||||
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 (std::string&, std::string&, std::string&);
|
||||
static bool validMod (const std::string&);
|
||||
static std::string type (const std::string&);
|
||||
void parse (const std::string&);
|
||||
void parse (Nibbler&);
|
||||
bool match (const Att&) const;
|
||||
|
|
|
@ -494,7 +494,6 @@ void Context::constructFilter ()
|
|||
{
|
||||
foreach (att, task)
|
||||
{
|
||||
|
||||
// TODO this doesn't work.
|
||||
if (att->first == "description")
|
||||
{
|
||||
|
@ -503,7 +502,7 @@ void Context::constructFilter ()
|
|||
foreach (word, words)
|
||||
{
|
||||
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