Context
- Improved sort column parsing to include an optional trailing solidus, in addition to the +/- sort direction.
This commit is contained in:
@@ -694,19 +694,28 @@ void Context::createDefaultConfig ()
|
||||
void Context::decomposeSortField (
|
||||
const std::string& field,
|
||||
std::string& key,
|
||||
bool& ascending)
|
||||
bool& ascending,
|
||||
bool& breakIndicator)
|
||||
{
|
||||
int length = field.length ();
|
||||
|
||||
if (field[length - 1] == '+')
|
||||
int decoration = 1;
|
||||
breakIndicator = false;
|
||||
if (field[length - decoration] == '/')
|
||||
{
|
||||
breakIndicator = true;
|
||||
++decoration;
|
||||
}
|
||||
|
||||
if (field[length - decoration] == '+')
|
||||
{
|
||||
ascending = true;
|
||||
key = field.substr (0, length - 1);
|
||||
key = field.substr (0, length - decoration);
|
||||
}
|
||||
else if (field[length - 1] == '-')
|
||||
else if (field[length - decoration] == '-')
|
||||
{
|
||||
ascending = false;
|
||||
key = field.substr (0, length - 1);
|
||||
key = field.substr (0, length - decoration);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
@@ -71,7 +71,7 @@ public:
|
||||
void clearMessages ();
|
||||
void clear ();
|
||||
|
||||
void decomposeSortField (const std::string&, std::string&, bool&);
|
||||
void decomposeSortField (const std::string&, std::string&, bool&, bool&);
|
||||
|
||||
private:
|
||||
void staticInitialization ();
|
||||
|
||||
@@ -71,6 +71,7 @@ static bool sort_compare (int left, int right)
|
||||
{
|
||||
std::string field;
|
||||
bool ascending;
|
||||
bool breakIndicator;
|
||||
Column* column;
|
||||
int left_number;
|
||||
int right_number;
|
||||
@@ -82,7 +83,7 @@ static bool sort_compare (int left, int right)
|
||||
std::vector <std::string>::iterator k;
|
||||
for (k = global_keys.begin (); k != global_keys.end (); ++k)
|
||||
{
|
||||
context.decomposeSortField (*k, field, ascending);
|
||||
context.decomposeSortField (*k, field, ascending, breakIndicator);
|
||||
|
||||
// Urgency.
|
||||
if (field == "urgency")
|
||||
|
||||
Reference in New Issue
Block a user