mirror of
https://github.com/GothenburgBitFactory/taskwarrior.git
synced 2025-06-26 10:54:26 +02:00
Operators
- Implemented Priority and string based <, <=, >, >= operators.
This commit is contained in:
parent
ac7bcc81ee
commit
9403bc8e49
1 changed files with 66 additions and 18 deletions
84
src/E9.cpp
84
src/E9.cpp
|
@ -278,12 +278,24 @@ void E9::operator_xor (Term& result, Term& left, Term& right)
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO Special handling for priority.
|
||||
// if (left._string != "H" && right._string == "H") result = true;
|
||||
// else if (left._string == "L" && right._string == "M") result = true;
|
||||
// else if (left._string == "" && right._string != "") result = true;
|
||||
void E9::operator_lt (Term& result, Term& left, Term& right)
|
||||
{
|
||||
if (left._raw == "priority")
|
||||
{
|
||||
if (left._value != "H" && right._value == "H") result._raw = result._value = "true";
|
||||
else if (left._value == "L" && right._value == "M") result._raw = result._value = "true";
|
||||
else if (left._value == "" && right._value != "") result._raw = result._value = "true";
|
||||
else result._raw = result._value = "false";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (left._value < right._value)
|
||||
result._raw = result._value = "true";
|
||||
else
|
||||
result._raw = result._value = "false";
|
||||
}
|
||||
|
||||
result._category = "bool";
|
||||
|
||||
std::cout << "# " << left._raw << "/" << left._value << "/" << left._category
|
||||
<< " < "
|
||||
|
@ -294,13 +306,25 @@ void E9::operator_lt (Term& result, Term& left, Term& right)
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO Special handling for priority.
|
||||
// if (left._string == right._string ) result = true;
|
||||
// else if ( right._string == "H") result = true;
|
||||
// else if (left._string == "L" && right._string == "M") result = true;
|
||||
// else if (left._string == "" ) result = true;
|
||||
void E9::operator_lte (Term& result, Term& left, Term& right)
|
||||
{
|
||||
if (left._raw == "priority")
|
||||
{
|
||||
if (left._value == right._value ) result._raw = result._value = "true";
|
||||
else if ( right._value == "H") result._raw = result._value = "true";
|
||||
else if (left._value == "L" && right._value == "M") result._raw = result._value = "true";
|
||||
else if (left._value == "" ) result._raw = result._value = "true";
|
||||
else result._raw = result._value = "false";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (left._value <= right._value)
|
||||
result._raw = result._value = "true";
|
||||
else
|
||||
result._raw = result._value = "false";
|
||||
}
|
||||
|
||||
result._category = "bool";
|
||||
|
||||
std::cout << "# " << left._raw << "/" << left._value << "/" << left._category
|
||||
<< " <= "
|
||||
|
@ -311,13 +335,25 @@ void E9::operator_lte (Term& result, Term& left, Term& right)
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO Special handling for priority.
|
||||
// if (left._string == right._string ) result = true;
|
||||
// else if (left._string == "H" ) result = true;
|
||||
// else if (left._string == "M" && right._string == "L") result = true;
|
||||
// else if ( right._string == "" ) result = true;
|
||||
void E9::operator_gte (Term& result, Term& left, Term& right)
|
||||
{
|
||||
if (left._raw == "priority")
|
||||
{
|
||||
if (left._value == right._value ) result._raw = result._value = "true";
|
||||
else if (left._value == "H" ) result._raw = result._value = "true";
|
||||
else if (left._value == "M" && right._value == "L") result._raw = result._value = "true";
|
||||
else if ( right._value == "" ) result._raw = result._value = "true";
|
||||
else result._raw = result._value = "false";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (left._value >= right._value)
|
||||
result._raw = result._value = "true";
|
||||
else
|
||||
result._raw = result._value = "false";
|
||||
}
|
||||
|
||||
result._category = "bool";
|
||||
|
||||
std::cout << "# " << left._raw << "/" << left._value << "/" << left._category
|
||||
<< " >= "
|
||||
|
@ -328,12 +364,24 @@ void E9::operator_gte (Term& result, Term& left, Term& right)
|
|||
}
|
||||
|
||||
////////////////////////////////////////////////////////////////////////////////
|
||||
// TODO Special handling for priority.
|
||||
// if (left._string == "H" && right._string != "H") result = true;
|
||||
// else if (left._string == "M" && right._string == "L") result = true;
|
||||
// else if (left._string != "" && right._string == "") result = true;
|
||||
void E9::operator_gt (Term& result, Term& left, Term& right)
|
||||
{
|
||||
if (left._raw == "priority")
|
||||
{
|
||||
if (left._value == "H" && right._value != "H") result._raw = result._value = "true";
|
||||
else if (left._value == "M" && right._value == "L") result._raw = result._value = "true";
|
||||
else if (left._value != "" && right._value == "") result._raw = result._value = "true";
|
||||
else result._raw = result._value = "false";
|
||||
}
|
||||
else
|
||||
{
|
||||
if (left._value > right._value)
|
||||
result._raw = result._value = "true";
|
||||
else
|
||||
result._raw = result._value = "false";
|
||||
}
|
||||
|
||||
result._category = "bool";
|
||||
|
||||
std::cout << "# " << left._raw << "/" << left._value << "/" << left._category
|
||||
<< " > "
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue