CapsAdmin

Untitled

May 15th, 2011
177
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 1.71 KB | None | 0 0
  1. luadata = luadata or {} local s = luadata
  2.  
  3. local q = [["]]
  4. local tab = 1
  5.  
  6. luadata.Types = {
  7.     ["number"] = function(var)
  8.         return ("%f"):format(var)
  9.     end,
  10.     ["string"] = function(var)
  11.         return ("%q"):format(var)
  12.     end,
  13.     ["boolean"] = function(var)
  14.         return ("%s"):format(var and "true" or "false")
  15.     end,
  16.     ["Vector"] = function(var)
  17.         return ("Vector(%f, %f, %f)"):format(var.x, var.y, var.z)
  18.     end,
  19.     ["Angle"] = function(var)
  20.         return ("Angle(%f, %f, %f)"):format(var.p, var.y, var.r)
  21.     end,
  22.     ["Entity"] = function(var)
  23.         return "NULL"
  24.     end,
  25.     ["Player"] = function(var)
  26.         return "NULL"
  27.     end,
  28.     ["NPC"] = function(var)
  29.         return "NULL"
  30.     end,
  31.     ["Panel"] = function(var)
  32.         return "NULL"
  33.     end,
  34.     ["table"] = function(var)
  35.         tab = tab + 1
  36.         local str = luadata.Encode(var)
  37.         tab = tab - 1
  38.         return str
  39.     end,
  40.     ["function"] = function(var)
  41.         return q .. string.dump(var):gsub("\0", "") .. q
  42.     end,
  43. }
  44.  
  45. function luadata.ToString(var)
  46.     local func = luadata.Types[type(var)]
  47.     return func and func(var)
  48. end
  49.  
  50. function luadata.Encode(tbl)
  51.     local str = "{\n"
  52.    
  53.     for key, value in pairs(tbl) do
  54.         value = s.ToString(value)
  55.         if value then  
  56.             str = str .. ("\t"):rep(tab) ..  ("[%q] = %s,\n"):format(key, value)
  57.         end
  58.     end
  59.    
  60.     str = str .. ("\t"):rep(tab-1) .. "}"
  61.    
  62.     s.__tab = 1
  63.    
  64.     return str
  65. end
  66.  
  67. function luadata.Decode(str)
  68.     local func = CompileString("return " .. str, "luadata")
  69.     return func()
  70. end
  71.  
  72. if SERVER then return end
  73.  
  74. easylua.Start(Ply"caps")
  75. local data = luadata.Encode{
  76.     here = here,
  77.     caps = me,
  78.     stringyes = "yes, yes",
  79.     numbers = 198232983.1238713287,
  80.     angle = Angle(123,312,325135),
  81.     atable = {1,2,3,4,5, here, there, trace},
  82. }
  83.  
  84. PrintTable(luadata.Decode(data))
  85. easylua.End()
Advertisement
Add Comment
Please, Sign In to add comment