Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- luadata = luadata or {} local s = luadata
- local q = [["]]
- local tab = 1
- luadata.Types = {
- ["number"] = function(var)
- return ("%f"):format(var)
- end,
- ["string"] = function(var)
- return ("%q"):format(var)
- end,
- ["boolean"] = function(var)
- return ("%s"):format(var and "true" or "false")
- end,
- ["Vector"] = function(var)
- return ("Vector(%f, %f, %f)"):format(var.x, var.y, var.z)
- end,
- ["Angle"] = function(var)
- return ("Angle(%f, %f, %f)"):format(var.p, var.y, var.r)
- end,
- ["Entity"] = function(var)
- return "NULL"
- end,
- ["Player"] = function(var)
- return "NULL"
- end,
- ["NPC"] = function(var)
- return "NULL"
- end,
- ["Panel"] = function(var)
- return "NULL"
- end,
- ["table"] = function(var)
- tab = tab + 1
- local str = luadata.Encode(var)
- tab = tab - 1
- return str
- end,
- ["function"] = function(var)
- return q .. string.dump(var):gsub("\0", "") .. q
- end,
- }
- function luadata.ToString(var)
- local func = luadata.Types[type(var)]
- return func and func(var)
- end
- function luadata.Encode(tbl)
- local str = "{\n"
- for key, value in pairs(tbl) do
- value = s.ToString(value)
- if value then
- str = str .. ("\t"):rep(tab) .. ("[%q] = %s,\n"):format(key, value)
- end
- end
- str = str .. ("\t"):rep(tab-1) .. "}"
- s.__tab = 1
- return str
- end
- function luadata.Decode(str)
- local func = CompileString("return " .. str, "luadata")
- return func()
- end
- if SERVER then return end
- easylua.Start(Ply"caps")
- local data = luadata.Encode{
- here = here,
- caps = me,
- stringyes = "yes, yes",
- numbers = 198232983.1238713287,
- angle = Angle(123,312,325135),
- atable = {1,2,3,4,5, here, there, trace},
- }
- PrintTable(luadata.Decode(data))
- easylua.End()
Advertisement
Add Comment
Please, Sign In to add comment