aboutsummaryrefslogtreecommitdiffstats
path: root/teal-src
diff options
context:
space:
mode:
Diffstat (limited to 'teal-src')
-rw-r--r--teal-src/util/datamapper.tl2
-rw-r--r--teal-src/util/jsonschema.tl2
-rw-r--r--teal-src/util/mathcompat.tl15
3 files changed, 19 insertions, 0 deletions
diff --git a/teal-src/util/datamapper.tl b/teal-src/util/datamapper.tl
index 23f5ecaa..4ff3a02c 100644
--- a/teal-src/util/datamapper.tl
+++ b/teal-src/util/datamapper.tl
@@ -19,6 +19,8 @@
-- TODO s/number/integer/ once we have appropriate math.type() compat
--
+if not math.type then require "util.mathcompat" end
+
local st = require "util.stanza";
local json = require"util.json"
local pointer = require"util.jsonpointer";
diff --git a/teal-src/util/jsonschema.tl b/teal-src/util/jsonschema.tl
index 160c164c..14b04370 100644
--- a/teal-src/util/jsonschema.tl
+++ b/teal-src/util/jsonschema.tl
@@ -8,6 +8,8 @@
-- https://json-schema.org/draft/2020-12/json-schema-validation.html
--
+if not math.type then require "util.mathcompat" end
+
local json = require"util.json"
local null = json.null;
diff --git a/teal-src/util/mathcompat.tl b/teal-src/util/mathcompat.tl
new file mode 100644
index 00000000..1e3f9bab
--- /dev/null
+++ b/teal-src/util/mathcompat.tl
@@ -0,0 +1,15 @@
+if not math.type then
+ local enum number_subtype
+ "float" "integer"
+ end
+ local function math_type(t:any) : number_subtype
+ if t is 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