[READ-ONLY] Mirror of https://github.com/thoda-dev/DualUniverse. DualUniverse scripts
0

Configure Feed

Select the types of activity you want to include in your feed.

added Serializer

Thomas (Aug 1, 2023, 8:41 AM +0200) f861faf3 85ebba29

+78
+77
Serializer/Serializer.lua
··· 1 + Serializer = { 2 + __index = { 3 + stringify = function(self, data) 4 + if type(data) == 'number' then 5 + return self:stringifyNumber(data) 6 + elseif type(data) == 'string' then 7 + return self:stringifyString(data) 8 + elseif type(data) == 'table' then 9 + return self:stringifyTable(data) 10 + elseif type(data) == 'boolean' then 11 + return self:stringifyBoolean(data) 12 + end 13 + return nil 14 + end, 15 + parse = function(self, str) 16 + return load("return " .. str)() 17 + end, 18 + stringifyTableKey = function(self, key) 19 + if type(key) == 'number' then 20 + return '[' .. self:stringifyNumber(key) .. ']' 21 + end 22 + return key 23 + end, 24 + stringifyNumber = function(self, num) 25 + return tostring(num) 26 + end, 27 + stringifyString = function(self, str) 28 + return string.format('%q', str):gsub('\\\n', '\n'):gsub('\\\r', '\r'):gsub('\\\t', '\t') 29 + end, 30 + stringifyTable = function(self, tbl) 31 + local str = '{' 32 + local i = 1 33 + local l = self:tableLength(tbl) 34 + for k, v in pairs(tbl) do 35 + str = str .. self:stringifyTableKey(k) ..'=' .. self:stringify(v) 36 + if i < l then str = str .. ',' end 37 + i = i + 1 38 + end 39 + return str .. '}' 40 + end, 41 + stringifyBoolean = function(self, bool) 42 + return tostring(bool) 43 + end, 44 + tableLength = function(self, tbl) 45 + local count = 0 46 + for _ in pairs(tbl) do count = count + 1 end 47 + return count 48 + end 49 + } 50 + } 51 + 52 + local s = setmetatable({}, Serializer) 53 + local test = { "aaa", a="bbb", b="cccc"} 54 + print(s:tableLength(test)) 55 + 56 + local element = {'hello "-" world', 1234, 1234.5678, { "aaa", a="bbb"}} 57 + 58 + local str = s:stringify(element) 59 + 60 + print(str) 61 + 62 + local obj = s:parse(str) 63 + 64 + 65 + dumpTable = function (t, prefix) 66 + if prefix == nil then prefix = "" end 67 + for k, v in pairs(t) do 68 + if type(v) == 'table' then 69 + print(k .. ' is a table') 70 + dumpTable(v, '\t') 71 + else 72 + print(prefix .. k ..' = ' .. v) 73 + end 74 + end 75 + end 76 + 77 + dumpTable(obj)
+1
Serializer/Serializer.min.lua
··· 1 + Serializer={__index={stringify=function(self,a)if type(a)=='number'then return self:stringifyNumber(a)elseif type(a)=='string'then return self:stringifyString(a)elseif type(a)=='table'then return self:stringifyTable(a)elseif type(a)=='boolean'then return self:stringifyBoolean(a)end;return nil end,parse=function(self,b)return load("return "..b)()end,stringifyTableKey=function(self,c)if type(c)=='number'then return'['..self:stringifyNumber(c)..']'end;return c end,stringifyNumber=function(self,d)return tostring(d)end,stringifyString=function(self,b)return string.format('%q',b):gsub('\\\n','\n'):gsub('\\\r','\r'):gsub('\\\t','\t')end,stringifyTable=function(self,e)local b='{'local f=1;local g=self:tableLength(e)for h,i in pairs(e)do b=b..self:stringifyTableKey(h)..'='..self:stringify(i)if f<g then b=b..','end;f=f+1 end;return b..'}'end,stringifyBoolean=function(self,j)return tostring(j)end,tableLength=function(self,e)local k=0;for l in pairs(e)do k=k+1 end;return k end}}