1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-11 21:57:38 +03:00
mal/impls/lua/utils.lua

54 lines
1006 B
Lua
Raw Normal View History

local M = {}
function M.try(f, catch_f)
local status, exception = pcall(f)
if not status then
catch_f(exception)
end
end
function M.instanceOf(subject, super)
super = tostring(super)
local mt = getmetatable(subject)
while true do
if mt == nil then return false end
if tostring(mt) == super then return true end
mt = getmetatable(mt)
end
end
--[[
function M.isArray(o)
local i = 0
for _ in pairs(o) do
i = i + 1
if o[i] == nil then return false end
end
return true
end
]]--
function M.map(func, obj)
local new_obj = {}
for i,v in ipairs(obj) do
new_obj[i] = func(v)
end
return new_obj
end
function M.dump(o)
if type(o) == 'table' then
local s = '{ '
for k,v in pairs(o) do
if type(k) ~= 'number' then k = '"'..k..'"' end
s = s .. '['..k..'] = ' .. M.dump(v) .. ','
end
return s .. '} '
else
return tostring(o)
end
end
return M