1
1
mirror of https://github.com/kanaka/mal.git synced 2024-09-20 18:18:51 +03:00
mal/lua/utils.lua
Joel Martin 9d42904e47 Lua: all steps and self-hosting.
Also some misc docs/TODO updates.
2015-01-08 23:25:40 -06:00

54 lines
1006 B
Lua

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