diff --git a/AUTHORS b/AUTHORS index 24b3f475a..dec886fdb 100644 --- a/AUTHORS +++ b/AUTHORS @@ -291,3 +291,4 @@ suggestions: Reg Yaroslav Molochko Michael Meier + Slaven ʙanovic diff --git a/ChangeLog b/ChangeLog index e031b691b..8145a2e5f 100644 --- a/ChangeLog +++ b/ChangeLog @@ -14,6 +14,8 @@ pending tasks. - TW-1795 Calendar underline on Day padding (thanks to Renato Alves). +- TW-1806 project:ide is not allowed + (thanks to Slaven ʙanovic). - Added 'juhannus' as a synonym for 'midsommarafton' (thanks to Lynoure Braakman). - Deprecated the 'DUETODAY' virtual tag, which is a synonym for the 'TODAY' diff --git a/src/Eval.cpp b/src/Eval.cpp index 7a4d9fc61..9736d0981 100644 --- a/src/Eval.cpp +++ b/src/Eval.cpp @@ -387,7 +387,7 @@ void Eval::evaluatePostfixStack ( // If there is more than one variant left on the stack, then the original // expression was not valid. if (values.size () != 1) - throw std::string (STRING_EVAL_NO_EVAL); + throw std::string (STRING_EVAL_NOT_EXPRESSION); result = values[0]; } diff --git a/src/columns/ColProject.cpp b/src/columns/ColProject.cpp index 0e803aae9..f94a967f0 100644 --- a/src/columns/ColProject.cpp +++ b/src/columns/ColProject.cpp @@ -124,15 +124,30 @@ void ColumnProject::modify (Task& task, const std::string& value) if (lexer.token (domRef, type) && type == Lexer::Type::dom) { - Eval e; - e.addSource (domSource); - e.addSource (namedDates); - contextTask = task; + try + { + Eval e; + e.addSource (domSource); + e.addSource (namedDates); + contextTask = task; - Variant v; - e.evaluateInfixExpression (value, v); - task.set (_name, (std::string) v); - context.debug (label + _name + " <-- '" + (std::string) v + "' <-- '" + value + "'"); + Variant v; + e.evaluateInfixExpression (value, v); + task.set (_name, (std::string) v); + context.debug (label + _name + " <-- '" + (std::string) v + "' <-- '" + value + "'"); + } + catch (const std::string& e) + { + // If the expression failed because it didn't look like an expression, + // simply store it as-is. + if (e == STRING_EVAL_NOT_EXPRESSION) + { + task.set (_name, value); + context.debug (label + _name + " <-- '" + value + "'"); + } + else + throw; + } } else { diff --git a/src/l10n/deu-DEU.h b/src/l10n/deu-DEU.h index 3135d37ac..960195312 100644 --- a/src/l10n/deu-DEU.h +++ b/src/l10n/deu-DEU.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Nicht unterstützter Operator: '{1}'." #define STRING_EVAL_OP_EXPECTED "Operator erwartet." #define STRING_EVAL_NO_EVAL "Der Ausdruck konnte nicht ausgewertet werden." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Ungültige Klammerung in Ausdruck." // edit diff --git a/src/l10n/eng-USA.h b/src/l10n/eng-USA.h index 84de21d6b..0e58ee66a 100644 --- a/src/l10n/eng-USA.h +++ b/src/l10n/eng-USA.h @@ -679,6 +679,7 @@ #define STRING_EVAL_UNSUPPORTED "Unsupported operator '{1}'." #define STRING_EVAL_OP_EXPECTED "Operator expected." #define STRING_EVAL_NO_EVAL "The expression could not be evaluated." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Mismatched parentheses in expression" // edit diff --git a/src/l10n/epo-RUS.h b/src/l10n/epo-RUS.h index cb07b51e7..fa09d5ee6 100644 --- a/src/l10n/epo-RUS.h +++ b/src/l10n/epo-RUS.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Ne subtenas infikson '{1}'." #define STRING_EVAL_OP_EXPECTED "Anticipis infikson." #define STRING_EVAL_NO_EVAL "Ne povis kalkuli la esprimon." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Malbalancataj parentezoj en esprimo" // edit diff --git a/src/l10n/esp-ESP.h b/src/l10n/esp-ESP.h index c46fd745e..303f2723d 100644 --- a/src/l10n/esp-ESP.h +++ b/src/l10n/esp-ESP.h @@ -690,6 +690,7 @@ #define STRING_EVAL_UNSUPPORTED "Operador no soportado '{1}'." #define STRING_EVAL_OP_EXPECTED "Se esperaba operador." #define STRING_EVAL_NO_EVAL "La expresión podría no ser evaluada." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Paréntesis desemparejados en expresión" // edit diff --git a/src/l10n/fra-FRA.h b/src/l10n/fra-FRA.h index 4046ed457..5bb47aef0 100644 --- a/src/l10n/fra-FRA.h +++ b/src/l10n/fra-FRA.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Unsupported operator '{1}'." #define STRING_EVAL_OP_EXPECTED "Operator expected." #define STRING_EVAL_NO_EVAL "The expression could not be evaluated." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Mismatched parentheses in expression" // edit diff --git a/src/l10n/ita-ITA.h b/src/l10n/ita-ITA.h index 95e0da6b2..86d8969d5 100644 --- a/src/l10n/ita-ITA.h +++ b/src/l10n/ita-ITA.h @@ -680,6 +680,7 @@ #define STRING_EVAL_UNSUPPORTED "Operatore non supportato '{1}'." #define STRING_EVAL_OP_EXPECTED "Operator expected." #define STRING_EVAL_NO_EVAL "The expression could not be evaluated." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Mismatched parentheses in expression" // edit diff --git a/src/l10n/jpn-JPN.h b/src/l10n/jpn-JPN.h index e82ba9bc7..4ef19a050 100644 --- a/src/l10n/jpn-JPN.h +++ b/src/l10n/jpn-JPN.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Unsupported operator '{1}'." #define STRING_EVAL_OP_EXPECTED "Operator expected." #define STRING_EVAL_NO_EVAL "式を評価出来ません。" +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Mismatched parentheses in expression" // edit diff --git a/src/l10n/pol-POL.h b/src/l10n/pol-POL.h index 1264c3f6f..c6e1d7723 100644 --- a/src/l10n/pol-POL.h +++ b/src/l10n/pol-POL.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Niewspierany operator '{1}'." #define STRING_EVAL_OP_EXPECTED "Oczekiwany operator." #define STRING_EVAL_NO_EVAL "Wyrażenie nie może być przetworzone." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Niedopasowane nawiasy w wyrażeniu" // edit diff --git a/src/l10n/por-PRT.h b/src/l10n/por-PRT.h index 0de68ed5c..0c73f794e 100644 --- a/src/l10n/por-PRT.h +++ b/src/l10n/por-PRT.h @@ -681,6 +681,7 @@ #define STRING_EVAL_UNSUPPORTED "Operador não suportado '{1}'." #define STRING_EVAL_OP_EXPECTED "Operador em falta." #define STRING_EVAL_NO_EVAL "Não foi possível calcular a expressão." +#define STRING_EVAL_NOT_EXPRESSION "The value is not an expression." #define STRING_PAREN_MISMATCH "Parentesis incompatíveis na expressão." // edit