SHOW:
|
|
- or go back to the newest paste.
1 | roblox_typeof = typeof or type; | |
2 | roblox_typeof_new = { | |
3 | BrickColor = true, | |
4 | Color3 = true, | |
5 | Vector2 = true, | |
6 | Vector3 = true, | |
7 | CFrame = true, | |
8 | Region3 = true, | |
9 | UDim2 = true | |
10 | }; | |
11 | ||
12 | push_and_clone = function (tbl, val) | |
13 | local clone = {}; | |
14 | ||
15 | for k, v in next, tbl do | |
16 | clone[k] = v; | |
17 | end; | |
18 | ||
19 | clone [#clone + 1] = val; | |
20 | return clone; | |
21 | end; | |
22 | ||
23 | table_to_string = function (tbl, index, path) | |
24 | local index = index or 1; | |
25 | local path = path or {}; | |
26 | local output = (getmetatable (tbl) == nil and '' or '[METATABLE]') .. '{\n'; | |
27 | ||
28 | for i, v in next, path do | |
29 | if (v == tbl and i ~= #path) then | |
30 | return '[Circular Reference]'; | |
31 | end; | |
32 | end; | |
33 | ||
34 | for k, v in next, tbl do | |
35 | output = output .. string.rep ('\t', index) .. '['; | |
36 | ||
37 | if (roblox_typeof (k) == 'table') then | |
38 | output = output .. table_to_string (k, 1, push_and_clone (path, k)); | |
39 | elseif (roblox_typeof (k) == 'string') then | |
40 | output = output .. '"' .. k .. '"'; | |
41 | elseif (roblox_typeof_new [roblox_typeof (k)]) then | |
42 | output = output .. roblox_typeof (k) .. '.new (' .. tostring(v) .. ')' | |
43 | else | |
44 | output = output .. tostring (k); | |
45 | end; | |
46 | ||
47 | output = output .. '] = '; | |
48 | ||
49 | if (roblox_typeof (v) == 'table') then | |
50 | output = output .. table_to_string (v, index + 1, push_and_clone (path, v)); | |
51 | elseif (roblox_typeof (v) == 'string') then | |
52 | output = output .. '"' .. v .. '"'; | |
53 | elseif (roblox_typeof_new [roblox_typeof (v)]) then | |
54 | output = output .. roblox_typeof (v) .. '.new (' .. tostring(v) .. ')' | |
55 | else | |
56 | output = output .. tostring (v); | |
57 | end; | |
58 | ||
59 | output = output .. '\n'; | |
60 | end; | |
61 | ||
62 | return output .. string.rep ('\t', math.max (index - 1, 0)) .. '};'; | |
63 | end; |