From 516762c7ed459b91d8a6ae622e9690ba48bff85c Mon Sep 17 00:00:00 2001 From: Sheldan <5037282+Sheldan@users.noreply.github.com> Date: Sun, 15 Feb 2026 22:46:21 +0100 Subject: [PATCH] [AB-xxx] adding exceptions for instant parsing adding @time hint to duration parse exception text changing duration formatting to be able to handle negative durations --- .../main/resources/default/builtins/duration_formatting.ftl | 5 ++++- .../exceptions/instant_invalid_time_format_exception.ftl | 2 ++ .../duration_invalid_time_format_exception_text.ftl | 3 ++- .../exception/instant_invalid_time_format_exception_text.ftl | 1 + 4 files changed, 9 insertions(+), 2 deletions(-) create mode 100644 abstracto-modules/core/src/main/resources/default/exceptions/instant_invalid_time_format_exception.ftl create mode 100644 translations/core/src/main/resources/default/exception/instant_invalid_time_format_exception_text.ftl diff --git a/abstracto-modules/core/src/main/resources/default/builtins/duration_formatting.ftl b/abstracto-modules/core/src/main/resources/default/builtins/duration_formatting.ftl index 728d2088..ef03fde5 100644 --- a/abstracto-modules/core/src/main/resources/default/builtins/duration_formatting.ftl +++ b/abstracto-modules/core/src/main/resources/default/builtins/duration_formatting.ftl @@ -1 +1,4 @@ -<#if days gt 1><#include "duration_days"><#elseif days = 1><#include "duration_day"> <#if hours gt 1><#include "duration_hours"><#elseif hours = 1><#include "duration_hour"> <#if minutes gt 1><#include "duration_minutes"><#elseif minutes = 1><#include "duration_minute"> <#if seconds gt 1 || (seconds = 0 && days = 0 && hours = 0 && minutes = 0)><#include "duration_seconds"><#elseif seconds = 1><#include "duration_second"> \ No newline at end of file +<#function fits value> + <#return value != 1 && value != 0> + +<#if fits(days)><#include "duration_days"><#elseif days = 1 || days = -1><#include "duration_day"> <#if fits(hours)><#include "duration_hours"><#elseif hours = 1 || hours = -1><#include "duration_hour"> <#if fits(minutes)><#include "duration_minutes"><#elseif minutes = 1 || minutes = -1><#include "duration_minute"> <#if fits(seconds) || (seconds = 0 && days = 0 && hours = 0 && minutes = 0)><#include "duration_seconds"><#elseif seconds = 1 || seconds = -1><#include "duration_second"> \ No newline at end of file diff --git a/abstracto-modules/core/src/main/resources/default/exceptions/instant_invalid_time_format_exception.ftl b/abstracto-modules/core/src/main/resources/default/exceptions/instant_invalid_time_format_exception.ftl new file mode 100644 index 00000000..16af6cfa --- /dev/null +++ b/abstracto-modules/core/src/main/resources/default/exceptions/instant_invalid_time_format_exception.ftl @@ -0,0 +1,2 @@ +<#assign invalidFormat=model.invalidFormat> +<#include "instant_invalid_time_format_exception_text"> \ No newline at end of file diff --git a/translations/core/src/main/resources/default/exception/duration_invalid_time_format_exception_text.ftl b/translations/core/src/main/resources/default/exception/duration_invalid_time_format_exception_text.ftl index 4b266fcb..407fd7e6 100644 --- a/translations/core/src/main/resources/default/exception/duration_invalid_time_format_exception_text.ftl +++ b/translations/core/src/main/resources/default/exception/duration_invalid_time_format_exception_text.ftl @@ -1 +1,2 @@ -Invalid time format: ${invalidFormat}. Valid formats are ${validFormats}. Beware to not use a space between the number and the unit. \ No newline at end of file +Invalid time format: ${invalidFormat}. Valid formats are ${validFormats}. Do not use a space between the number and the unit. +Alternatively, you can use `@time: ` to define a duration. \ No newline at end of file diff --git a/translations/core/src/main/resources/default/exception/instant_invalid_time_format_exception_text.ftl b/translations/core/src/main/resources/default/exception/instant_invalid_time_format_exception_text.ftl new file mode 100644 index 00000000..3127b6aa --- /dev/null +++ b/translations/core/src/main/resources/default/exception/instant_invalid_time_format_exception_text.ftl @@ -0,0 +1 @@ +Invalid format for timestamp. Either use epoch seconds (see [here](https://www.unixtimestamp.com/)) or use `@time: