Skip to main content
Glama
utils.lua2.57 kB
-- utils.lua: Utility functions for the test repository local utils = {} -- String utilities function utils.trim(s) return s:match("^%s*(.-)%s*$") end function utils.split(str, delimiter) local result = {} local pattern = string.format("([^%s]+)", delimiter) for match in string.gmatch(str, pattern) do table.insert(result, match) end return result end function utils.starts_with(str, prefix) return str:sub(1, #prefix) == prefix end function utils.ends_with(str, suffix) return str:sub(-#suffix) == suffix end -- Table utilities function utils.deep_copy(orig) local orig_type = type(orig) local copy if orig_type == 'table' then copy = {} for orig_key, orig_value in next, orig, nil do copy[utils.deep_copy(orig_key)] = utils.deep_copy(orig_value) end setmetatable(copy, utils.deep_copy(getmetatable(orig))) else copy = orig end return copy end function utils.table_contains(tbl, value) for _, v in ipairs(tbl) do if v == value then return true end end return false end function utils.table_merge(t1, t2) local result = {} for k, v in pairs(t1) do result[k] = v end for k, v in pairs(t2) do result[k] = v end return result end -- File utilities function utils.read_file(path) local file = io.open(path, "r") if not file then return nil, "Could not open file: " .. path end local content = file:read("*all") file:close() return content end function utils.write_file(path, content) local file = io.open(path, "w") if not file then return false, "Could not open file for writing: " .. path end file:write(content) file:close() return true end -- Class-like structure utils.Logger = {} utils.Logger.__index = utils.Logger function utils.Logger:new(name) local self = setmetatable({}, utils.Logger) self.name = name or "default" self.level = "info" return self end function utils.Logger:set_level(level) self.level = level end function utils.Logger:log(message, level) level = level or self.level print(string.format("[%s] %s: %s", self.name, level:upper(), message)) end function utils.Logger:debug(message) self:log(message, "debug") end function utils.Logger:info(message) self:log(message, "info") end function utils.Logger:warn(message) self:log(message, "warn") end function utils.Logger:error(message) self:log(message, "error") end return utils

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/ryota-murakami/serena'

If you have feedback or need assistance with the MCP directory API, please join our Discord server