From b13de8e099e70a2ba7494a40bb22770d0542c84a Mon Sep 17 00:00:00 2001 From: GenevensiS <66968533+G-e-n-e-v-e-n-s-i-S@users.noreply.github.com> Date: Mon, 11 May 2026 10:29:29 +0200 Subject: [PATCH] add "version_is_older" script function --- doc/function/index.txt | 1 + doc/function/version_is_older.txt | 18 ++++++++++++++++++ src/script/functions/basic.cpp | 9 +++++++++ 3 files changed, 28 insertions(+) create mode 100644 doc/function/version_is_older.txt diff --git a/doc/function/index.txt b/doc/function/index.txt index f4141feb..02e672e0 100644 --- a/doc/function/index.txt +++ b/doc/function/index.txt @@ -138,5 +138,6 @@ These functions are built into the program, other [[type:function]]s can be defi | [[fun:assert]] Check a condition for debugging purposes. | [[fun:warning]] Output a warning message. | [[fun:error]] Output an error message. +| [[fun:version_is_older]] Checks if a version number is older than another. | [[fun:exists_as_package]] Checks if a package exists. | [[fun:exists_in_package]] Checks if a file exists in a package. diff --git a/doc/function/version_is_older.txt b/doc/function/version_is_older.txt new file mode 100644 index 00000000..96cf0a22 --- /dev/null +++ b/doc/function/version_is_older.txt @@ -0,0 +1,18 @@ +Function: version_is_older + +--Usage-- +> version_is_older("version", than: "other version") + +Check if a version number is strictly older than another. + +Malformed version numbers, including nil, are treated as 0-0-0. + +--Parameters-- +! Parameter Type Description +| @input@ [[type:string]] Version we want to check. +| @than@ [[type:string]] Version we want to check against. + +--Examples-- +> version_is_older("2025-06-28", than: "2026-02-18") == true +> version_is_older("2026-02-18", than: "2026-02-18") == false +> version_is_older(nil, than: "0-0-1") == true diff --git a/src/script/functions/basic.cpp b/src/script/functions/basic.cpp index 47ee5e5b..5576dcd3 100644 --- a/src/script/functions/basic.cpp +++ b/src/script/functions/basic.cpp @@ -90,6 +90,14 @@ SCRIPT_FUNCTION(error) { return script_nil; } +SCRIPT_FUNCTION(version_is_older) { + SCRIPT_PARAM_C(String, input); + SCRIPT_PARAM(String, than); + Version input_version = Version::fromString(input); + Version than_version = Version::fromString(than); + SCRIPT_RETURN(input_version < than_version); +} + SCRIPT_FUNCTION(exists_as_package) { SCRIPT_PARAM_C(String, input); Version version_out; @@ -1026,6 +1034,7 @@ void init_script_basic_functions(Context& ctx) { ctx.setVariable(_("trace"), script_trace); ctx.setVariable(_("warning"), script_warning); ctx.setVariable(_("error"), script_error); + ctx.setVariable(_("version_is_older"), script_version_is_older); ctx.setVariable(_("exists_as_package"), script_exists_as_package); ctx.setVariable(_("exists_in_package"), script_exists_in_package); // conversion