Fandom

Kirkburn Wiki

Module:HF

729pages on
this wiki
Add New Page
Talk0
local HF = {}
 
function HF.var_dump( table )
if type(table) == 'table' then
	dump = '{ '
	for k,v in pairs(table) do
		if type(k) ~= number then k = '"'..k..'"' end
		dump = dump..'['..k..'] = '..HF.var_dump(v)..', '
	end
	dump = dump..' }'
	return dump
	else
	return tostring( table )
end
end
 
function HF.explode( sep, text )
local sep, fields = sep or "::", {}
local pattern = string.format("([^%s]+)", sep)
text:gsub(pattern, function(c) fields[#fields+1] = c end)
return fields
end
 
function HF.trim(s)
if s ~= nil then
  return (s:gsub("^%s*(.-)%s*$", "%1"))
else
  return nil
end
end
 
function HF.isempty(s)
return s == nil or s == ""
end
 
function HF.print_r( t, name, indent )
 local cart     -- a container
 local autoref  -- for self references
 
 --[[ counts the number of elements in a table
 local function tablecount(t)
    local n = 0
    for _, _ in pairs(t) do n = n+1 end
    return n
 end
 ]]
 -- (RiciLake) returns true if the table is empty
 local function isemptytable(t) return next(t) == nil end
 
 local function basicSerialize (o)
    local so = tostring(o)
    if type(o) == "function" then
       local info = debug.getinfo(o, "S")
       -- info.name is nil because o is not a calling level
       if info.what == "C" then
          return string.format("%q", so .. ", C function")
       else 
          -- the information is defined through lines
          return string.format("%q", so .. ", defined in (" ..
              info.linedefined .. "-" .. info.lastlinedefined ..
              ")" .. info.source)
       end
    elseif type(o) == "number" or type(o) == "boolean" then
       return so
    else
       return string.format("%q", so)
    end
 end
 
 local function addtocart (value, name, indent, saved, field)
    indent = indent or ""
    saved = saved or {}
    field = field or name
 
    cart = cart .. indent .. field
 
    if type(value) ~= "table" then
       cart = cart .. " = " .. basicSerialize(value) .. ";\n"
    else
       if saved[value] then
          cart = cart .. " = {}; -- " .. saved[value] 
                      .. " (self reference)\n"
          autoref = autoref ..  name .. " = " .. saved[value] .. ";\n"
       else
          saved[value] = name
          --if tablecount(value) == 0 then
          if isemptytable(value) then
             cart = cart .. " = {};\n"
          else
             cart = cart .. " = {\n"
             for k, v in pairs(value) do
                k = basicSerialize(k)
                local fname = string.format("%s[%s]", name, k)
                field = string.format("[%s]", k)
                -- three spaces between levels
                addtocart(v, fname, indent .. "   ", saved, field)
             end
             cart = cart .. indent .. "};\n"
          end
       end
    end
 end
 
 name = name or "__unnamed__"
 if type(t) ~= "table" then
    return name .. " = " .. basicSerialize(t)
 end
 cart, autoref = "", ""
 addtocart(t, name, indent)
 return cart .. autoref
end
 
function HF.firstToUpper( str )
return (str:gsub("^%l", string.upper))
end
 
return HF

Ad blocker interference detected!


Wikia is a free-to-use site that makes money from advertising. We have a modified experience for viewers using ad blockers

Wikia is not accessible if you’ve made further modifications. Remove the custom ad blocker rule(s) and the page will load as expected.