From 02047a6e9987a1ed364de012209b4070f80bbe25 Mon Sep 17 00:00:00 2001 From: Paul Beckingham Date: Mon, 12 Sep 2011 22:45:58 -0400 Subject: [PATCH] Legacy - Created legacy checking function to determine whether deprecated or obsolete attributes are being used. --- src/commands/Command.cpp | 91 +++++++++++++++++++++------------------- src/legacy.cpp | 10 +++++ src/main.h | 3 ++ 3 files changed, 62 insertions(+), 42 deletions(-) diff --git a/src/commands/Command.cpp b/src/commands/Command.cpp index ea34a77af..20482a802 100644 --- a/src/commands/Command.cpp +++ b/src/commands/Command.cpp @@ -36,6 +36,7 @@ #include #include #include +#include #include #include @@ -431,56 +432,62 @@ void Command::modify_task ( Column* column = context.columns[name]; // All values must be eval'd first. - A3 fragment; - fragment.capture (value); - fragment = fragment.postfix (fragment.tokenize (fragment)); + A3 value_tokens; + value_tokens.capture (value); + value_tokens = value_tokens.postfix (value_tokens.tokenize (value_tokens)); - E9 e (fragment); + E9 e (value_tokens); std::string result = e.evalExpression (task); context.debug (std::string ("Eval '") + value + "' --> '" + result + "'"); - // Dependencies must be resolved to UUIDs. - if (name == "depends") + if (result == "") { - // Convert ID to UUID. - std::vector deps; - split (deps, result, ','); - - // Apply or remove dendencies in turn. - std::vector ::iterator i; - for (i = deps.begin (); i != deps.end (); i++) - { - int id = strtol (i->c_str (), NULL, 10); - if (id < 0) - task.removeDependency (-id); - else - task.addDependency (id); - } + task.remove (name); } - - // Dates are special, maybe. - else if (column->type () == "date") - { - // If the date value is less than 5 years, it is a duration, not a - // date, therefore add 'now'. - long l = strtol (result.c_str (), NULL, 10); - if (labs (l) < 5 * 365 * 86400) - { - Date now; - now += l; - task.set (name, now.toEpochString ()); - } - else - task.set (name, result); - } - - // By default, just add it. else - task.set (name, result); + { + // Dependencies must be resolved to UUIDs. + if (name == "depends") + { + // Convert ID to UUID. + std::vector deps; + split (deps, result, ','); - // Legacy checks. - if (name == "fg" || name == "bg") - context.footnote (format (STRING_LEGACY_FEATURE, name)); + // Apply or remove dendencies in turn. + std::vector ::iterator i; + for (i = deps.begin (); i != deps.end (); i++) + { + int id = strtol (i->c_str (), NULL, 10); + if (id < 0) + task.removeDependency (-id); + else + task.addDependency (id); + } + } + + // Dates are special, maybe. + else if (column->type () == "date") + { + // If the date value is less than 5 years, it is a duration, not a + // date, therefore add 'now'. + long l = strtol (result.c_str (), NULL, 10); + if (labs (l) < 5 * 365 * 86400) + { + Date now; + now += l; + task.set (name, now.toEpochString ()); + } + else + task.set (name, result); + } + + // By default, just add/remove it. + else + task.set (name, result); + + // Warn about deprecated/obsolete attribute usage. + legacyAttributeCheck (name); + } } else throw format (STRING_CMD_ADD_BAD_ATTRIBUTE, name); diff --git a/src/legacy.cpp b/src/legacy.cpp index 24cd8573f..07e57e7d7 100644 --- a/src/legacy.cpp +++ b/src/legacy.cpp @@ -25,11 +25,21 @@ // //////////////////////////////////////////////////////////////////////////////// +#define L10N // Localization complete. + #include +#include +#include extern Context context; //////////////////////////////////////////////////////////////////////////////// +void legacyAttributeCheck (const std::string& name) +{ + // Legacy checks. + if (name == "fg" || name == "bg") + context.footnote (format (STRING_LEGACY_FEATURE, name)); +} //////////////////////////////////////////////////////////////////////////////// diff --git a/src/main.h b/src/main.h index 6efb7b7c6..038a624bc 100644 --- a/src/main.h +++ b/src/main.h @@ -78,6 +78,9 @@ std::string feedback (const Task&, const Task&); // sort.cpp void sort_tasks (std::vector &, std::vector &, const std::string&); +// legacy.cpp +void legacyAttributeCheck (const std::string&); + // list template /////////////////////////////////////////////////////////////////////////////// template bool listDiff (const T& left, const T& right)