- Fixed bug #1091, allowing filters to use 'urgency.over:4.5'.
This commit is contained in:
Paul Beckingham 2013-01-12 16:49:48 -05:00
parent 76468f3ddd
commit dd1f154376
7 changed files with 134 additions and 5 deletions

View file

@ -97,7 +97,7 @@ static struct
{ "_hastag_", 9, 'b', 0, 'l'}, // +tag [Pseudo-op]
{ "_notag_", 9, 'b', 0, 'l'}, // -tag [Pseudo-op]
// { "-", 15, 'u', 1, 'r' }, // Unary minus
{ "-", 15, 'u', 1, 'r' }, // Unary minus
{ "*", 13, 'b', 1, 'l' }, // Multiplication
{ "/", 13, 'b', 1, 'l' }, // Division
// { "%", 13, 'b', 1, 'l' }, // Modulus

View file

@ -337,6 +337,32 @@ void E9::operator_lt (Arg& result, Arg& left, Arg& right)
: "false";
}
}
else if (left._type == Arg::type_duration ||
right._type == Arg::type_duration)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{
Duration left_duration (left._value);
Duration right_duration (right._value);
result._value = (left_duration < right_duration)
? "true"
: "false";
}
}
else if (left._type == Arg::type_number ||
right._type == Arg::type_number)
{
float left_number = strtof (left._value.c_str (), NULL);
float right_number = strtof (right._value.c_str (), NULL);
result._value = (left_number < right_number)
? "true"
: "false";
}
else
{
result._value = (left._value < right._value)
@ -376,6 +402,32 @@ void E9::operator_lte (Arg& result, Arg& left, Arg& right)
: "false";
}
}
else if (left._type == Arg::type_duration ||
right._type == Arg::type_duration)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{
Duration left_duration (left._value);
Duration right_duration (right._value);
result._value = (left_duration <= right_duration)
? "true"
: "false";
}
}
else if (left._type == Arg::type_number ||
right._type == Arg::type_number)
{
float left_number = strtof (left._value.c_str (), NULL);
float right_number = strtof (right._value.c_str (), NULL);
result._value = (left_number <= right_number)
? "true"
: "false";
}
else
{
result._value = (left._value <= right._value)
@ -415,6 +467,32 @@ void E9::operator_gte (Arg& result, Arg& left, Arg& right)
: "false";
}
}
else if (left._type == Arg::type_duration ||
right._type == Arg::type_duration)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{
Duration left_duration (left._value);
Duration right_duration (right._value);
result._value = (left_duration >= right_duration)
? "true"
: "false";
}
}
else if (left._type == Arg::type_number ||
right._type == Arg::type_number)
{
float left_number = strtof (left._value.c_str (), NULL);
float right_number = strtof (right._value.c_str (), NULL);
result._value = (left_number >= right_number)
? "true"
: "false";
}
else
{
result._value = (left._value >= right._value)
@ -453,6 +531,32 @@ void E9::operator_gt (Arg& result, Arg& left, Arg& right)
: "false";
}
}
else if (left._type == Arg::type_duration ||
right._type == Arg::type_duration)
{
if (left._value == "" ||
right._value == "")
result._value = "false";
else
{
Duration left_duration (left._value);
Duration right_duration (right._value);
result._value = result._value = (left_duration > right_duration)
? "true"
: "false";
}
}
else if (left._type == Arg::type_number ||
right._type == Arg::type_number)
{
float left_number = strtof (left._value.c_str (), NULL);
float right_number = strtof (right._value.c_str (), NULL);
result._value = (left_number > right_number)
? "true"
: "false";
}
else
{
result._value = (left._value > right._value)