Module: PudimServer.utils
Type validation, logging, and file utility helpers.
utils:createInterface(fields, extends?)
Creates type contracts for runtime validation.
Inputs: fields (type table), extends? (optional table).
Output: interface/contract object.
local utils = require("PudimServer.utils")
local User = utils:createInterface{
name = "string",
age = "number"
}
utils:verifyTypes(value, contract, printerFn?, break?)
Validates types and returns (true) or (false, errorMsg).
Inputs: value, contract, printerFn?, break?.
Output: boolean and optionally an error string.
local ok, err = utils:verifyTypes({name = "Ana", age = 21}, User)
print(ok, err)
utils:loadMessageOnChange(channel, msg, printerFn)
Emits a message only when its content changes.
Inputs: channel (string), msg (string), printerFn (function).
Output: no meaningful return value (logging side effect).
utils:loadMessageOnChange("reload", "module reloaded", print)
utils:checkFilesExist(file)
Checks whether a file exists on disk.
Inputs: file (string).
Output: boolean.
local exists = utils:checkFilesExist("./README.md")
print(exists)
utils:getContentFile(file)
Reads file content and returns a string.
Inputs: file (string).
Output: string with file content.
local content = utils:getContentFile("./README.md")
print(content)
utils:writeFile(file, content)
Writes content to a file.
Inputs: file (string), content (string).
Output: no meaningful return value.
utils:writeFile("./tmp.txt", "Hello from PudimServer")
utils:mkdir(path)
Creates a directory recursively when needed.
Inputs: path (string).
Output: no meaningful return value.
utils:mkdir("./tmp/nested")