From e2cff346410c57686478d68fabd96cf4247df927 Mon Sep 17 00:00:00 2001 From: Kim Alvefur Date: Thu, 20 Oct 2022 16:50:12 +0200 Subject: util.mathcompat: Module to ease reuse of math.type() Mostly to ensure it is available during tests, as util.startup is not invoked there --- util/datamapper.lua | 4 ++++ util/mathcompat.lua | 13 +++++++++++++ util/serialization.lua | 4 ++++ util/startup.lua | 11 +---------- 4 files changed, 22 insertions(+), 10 deletions(-) create mode 100644 util/mathcompat.lua (limited to 'util') diff --git a/util/datamapper.lua b/util/datamapper.lua index 2378314c..e1484525 100644 --- a/util/datamapper.lua +++ b/util/datamapper.lua @@ -1,5 +1,9 @@ -- This file is generated from teal-src/util/datamapper.lua +if not math.type then + require("util.mathcompat") +end + local st = require("util.stanza"); local pointer = require("util.jsonpointer"); diff --git a/util/mathcompat.lua b/util/mathcompat.lua new file mode 100644 index 00000000..e8acb261 --- /dev/null +++ b/util/mathcompat.lua @@ -0,0 +1,13 @@ +if not math.type then + + local function math_type(t) + if type(t) == "number" then + if t % 1 == 0 and t ~= t + 1 and t ~= t - 1 then + return "integer" + else + return "float" + end + end + end + _G.math.type = math_type +end diff --git a/util/serialization.lua b/util/serialization.lua index 6552d53b..e2e104f1 100644 --- a/util/serialization.lua +++ b/util/serialization.lua @@ -21,6 +21,10 @@ local to_hex = require "util.hex".to; local pcall = pcall; local envload = require"util.envload".envload; +if not math.type then + require "util.mathcompat" +end + local pos_inf, neg_inf = math.huge, -math.huge; local m_type = math.type; diff --git a/util/startup.lua b/util/startup.lua index 9e512cb3..68b74984 100644 --- a/util/startup.lua +++ b/util/startup.lua @@ -280,16 +280,7 @@ function startup.init_global_state() -- COMPAT Lua < 5.3 if not math.type then - -- luacheck: ignore 122/math - function math.type(n) - if type(n) == "number" then - if n % 1 == 0 and (n + 1 ~= n and n - 1 ~= n) then - return "integer" - else - return "float" - end - end - end + require "util.mathcompat" end end -- cgit v1.2.3