From 4be73acc61f6805c9df2743e68a86ee646d43e25 Mon Sep 17 00:00:00 2001 From: EsPaKira Date: Sun, 2 Aug 2026 21:07:02 +0400 Subject: [PATCH] fix fix lua version comparision --- res/layouts/pages/content.xml.lua | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/res/layouts/pages/content.xml.lua b/res/layouts/pages/content.xml.lua index 70b5a486c..6d684b130 100644 --- a/res/layouts/pages/content.xml.lua +++ b/res/layouts/pages/content.xml.lua @@ -182,15 +182,15 @@ end local Version = {} function Version.matches_pattern(version) - for _, letter in string.gmatch(version, "%.+") do - if type(letter) ~= "number" or letter ~= "." then - return false; - end + local t = string.split(version, ".") + if #t ~= 2 and #t ~= 3 then return false end - local t = string.split(version, ".") - - return #t == 2 or #t == 3; + for i = 1, #t do + local matched = string.match(t[i], "^%d+$") + if not matched then return false end end + + return true end function Version.__equal(ver1, ver2) @@ -208,7 +208,7 @@ function Version.__less(ver1, ver2) end function Version.__greater_or_equal(ver1, ver2) - return not Version.__less(ver1, ver2) + return not Version.__less(ver2, ver1) end function Version.__less_or_equal(ver1, ver2) @@ -230,9 +230,9 @@ function Version.compare(op, ver1, ver2) local comparison_func = Version.operators[op]; if comparison_func then - return comparison_func(ver1, ver2); + return comparison_func(ver1, ver2) else - return false; + return false end end @@ -247,13 +247,12 @@ function Version.parse(version) return op, string.sub(version, #op + 1) end - return "=", version; + return "=", version end -local function compare_version(dependent_version, actual_version) +local function compare_version(op, dependent_version, actual_version) if Version.matches_pattern(dependent_version) and Version.matches_pattern(actual_version) then - local op, dep_ver = Version.parse_version(dependent_version) - Version.compare(op, dep_ver, actual_version) + return Version.compare(op, dep_ver, actual_version) elseif dependent_version == "*" or dependent_version == actual_version then return true else @@ -280,7 +279,7 @@ function check_dependencies(packinfo) local dep_pack = pack.get_info(depid) local op, ver = Version.parse(depver) - if not compare_version(depver, dep_pack.version) then + if not compare_version(op, ver, dep_pack.version) then return string.format( "%s: %s != %s (%s)", gui.str("error.dependency-version-not-met"),