- Now maps unsupported duration values to supported values.
This commit is contained in:
Paul Beckingham 2014-07-03 13:38:18 -04:00
parent 140757cfe1
commit b7c2fd0d9c
3 changed files with 58 additions and 9 deletions

View file

@ -555,6 +555,7 @@ bool Task::is_overdue () const
//
void Task::parse (const std::string& input)
{
// TODO Is this simply a 'chomp'?
std::string copy;
if (input[input.length () - 1] == '\n')
copy = input.substr (0, input.length () - 1);
@ -588,15 +589,8 @@ void Task::parse (const std::string& input)
nl.skip (':') &&
nl.getQuoted ('"', value))
{
// Experimental legacy value translation of 'recur:m' --> 'recur:mo'.
if (name == "recur" &&
digitsOnly (value.substr (0, value.length () - 1)) &&
value[value.length () - 1] == 'm')
value += 'o';
// TW-1274, Standardization.
if (name == "modification")
name = "modified";
legacyAttributeMap (name);
legacyValueMap (name, value);
if (name.substr (0, 11) == "annotation_")
++annotation_count;

View file

@ -25,6 +25,7 @@
////////////////////////////////////////////////////////////////////////////////
#include <cmake.h>
#include <cstddef>
#include <sstream>
#include <Context.h>
#include <text.h>
@ -161,3 +162,55 @@ std::string legacyCheckForDeprecatedColumns ()
}
////////////////////////////////////////////////////////////////////////////////
void legacyAttributeMap (std::string& name)
{
// TW-1274
if (name == "modification")
name = "modified";
}
////////////////////////////////////////////////////////////////////////////////
void legacyValueMap (const std::string& name, std::string& value)
{
// One-time initialization value mapping.
static std::map <std::string, std::string> mapping;
if (mapping.size () == 0)
{
mapping["hrs"] = "hours";
mapping["hrs"] = "hours";
mapping["hr"] = "hours";
mapping["mins"] = "minutes";
mapping["mnths"] = "months";
mapping["mths"] = "months";
mapping["mth"] = "months";
mapping["mos"] = "months";
mapping["qrtrs"] = "quarters";
mapping["qtrs"] = "quarters";
mapping["qtr"] = "quarters";
mapping["secs"] = "seconds";
mapping["sec"] = "seconds";
mapping["s"] = "seconds";
mapping["wks"] = "weeks";
mapping["wk"] = "weeks";
mapping["yrs"] = "years";
mapping["yr"] = "years";
}
if (name == "recur")
{
std::size_t letter = value.find_first_not_of ("0123456789.");
if (letter == std::string::npos)
letter = 0;
std::map <std::string, std::string>::iterator i = mapping.find (value.substr (letter));
if (i != mapping.end ())
{
if (letter)
value = value.substr (0, letter) + i->second;
else
value = i->second;
}
}
}
////////////////////////////////////////////////////////////////////////////////

View file

@ -86,6 +86,8 @@ void legacySortColumnMap (std::string&);
std::string legacyCheckForDeprecatedColor ();
std::string legacyCheckForDeprecatedVariables ();
std::string legacyCheckForDeprecatedColumns ();
void legacyAttributeMap (std::string&);
void legacyValueMap (const std::string&, std::string&);
// list template
///////////////////////////////////////////////////////////////////////////////