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:
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;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user