- Improved sort column parsing to include an optional trailing solidus, in
  addition to the +/- sort direction.
This commit is contained in:
Paul Beckingham 2014-07-10 22:14:35 -04:00
parent 9c2aea6d62
commit bd7e66a939
3 changed files with 17 additions and 7 deletions

View file

@ -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
{

View file

@ -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 ();

View file

@ -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")