From 9c7c94ab73eb1e9fe78fc022805a06be0579d4b9 Mon Sep 17 00:00:00 2001
From: Kim Alvefur <zash@zash.se>
Date: Sat, 22 Apr 2023 12:48:51 +0200
Subject: util.jsonschema: Implement 'luaPattern' - Lua variant of 'pattern'

Like 'pattern' but uses Lua patterns instead of Regular Expressions,
since only a subset of regex are also valid Lua patterns.
---
 teal-src/prosody/util/jsonschema.tl | 4 ++++
 1 file changed, 4 insertions(+)

(limited to 'teal-src')

diff --git a/teal-src/prosody/util/jsonschema.tl b/teal-src/prosody/util/jsonschema.tl
index 75cfab92..8acb1309 100644
--- a/teal-src/prosody/util/jsonschema.tl
+++ b/teal-src/prosody/util/jsonschema.tl
@@ -98,6 +98,7 @@ local record json_schema_object
 
 	-- for Lua
 	luaPatternProperties: { string : schema_t }
+	luaPattern : string
 
 	-- xml
 	record xml_t
@@ -225,6 +226,9 @@ function complex_validate (schema : json_schema_object, data : any, root : json_
 		if schema.minLength and #data < schema.minLength then
 			return false
 		end
+		if schema.luaPattern and not data:match(schema.luaPattern) then
+			return false
+		end
 	end
 
 	if data is number then
-- 
cgit v1.2.3