View difference between Paste ID: 4weXjpY6 and wyKEYXMp
SHOW: | | - or go back to the newest paste.
1-
//PrintTableDepth by Uke
1+
--[[---------------------------------------------------------
2
	Prints also a table to the console but a bit nicer
3
	PrintTableDepth( Table toPrint, Number depth, Number max )
4-
	["string"] = Color(130,130,130),
4+
	toPrint: 	The table to be printed
5
	depth: 		Amount of child-tables to open (-1 = inf, -1 <= depth)
6
	max: 		Amount of elements to print per table (-1 = inf, -1 <= max)
7
-----------------------------------------------------------]]
8
local tcol = {
9
	["string"] = Color(180,180,180),
10
	["table"] = Color(160,50,50),
11-
	["function"] = Color(20,130,180)
11+
12
	["Vector"] = Color(255,130,0),
13
	["Angle"] = Color(255,130,0),
14-
local bc = Color(120,255,70)
14+
15-
local ec = Color(200,200,50)
15+
16-
local nc = Color(255,255,255)
16+
	["function"] = Color(20,130,180),
17-
local sc = Color(180,180,180)
17+
	["Entity"] = Color(70,255,160),
18-
local cc = Color(50,150,50)
18+
	["Weapon"] = Color(70,255,160),
19-
local tc = Color(70,200,255)
19+
	["Player"] = Color(70,255,160)
20
}
21-
oldtostring = tostring
21+
22
local bc = Color(120,255,70) 	--bracket color
23-
tostring2 = function(val)
23+
local ec = Color(200,200,50) 	--equal sign color
24
local nc = Color(255,255,255) 	--normal color
25-
	local tco = tcol[tp]
25+
local sc = Color(180,180,180)	--shadow color
26
local cc = Color(50,150,50)		--comment color
27-
		MsgC(tco,"\""..string.Replace(val,"\n","\\n").."\"",nc,",\n")
27+
local tc = Color(70,200,255) 	--type function color
28
29-
		MsgC(tc,"Vector",nc,"(",tco,val.x,nc,", ",tco,val.y,nc,", ",tco,val.z,nc,"),\n")
29+
tostring2 = function(val,new)
30
	local tp = type(val)
31-
		MsgC(tc,"Angle",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,"),\n")
31+
	local tco = (tcol[tp] and new) and tcol[tp] or Color(200,200,200)
32
	if tp == "string" then
33
		MsgC(tco,"\""..string.Replace(val,"\n","\\n").."\"")
34-
			MsgC(tc,"Color",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,", ",tco,val.a,nc,"),\n")
34+
35
		MsgC(tc,"Vector",nc,"(",tco,val.x,nc,", ",tco,val.y,nc,", ",tco,val.z,nc,")")
36-
			MsgC(tc,"Color",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,"),\n")
36+
37
		MsgC(tc,"Angle",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,")")
38
	elseif tp == "Color" then
39-
		MsgC(tco,"\""..oldtostring(val).."\"",nc,",\n")
39+
40
			MsgC(tc,"Color",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,", ",tco,val.a,nc,")")
41-
		MsgC(tco,oldtostring(val),nc,",\n")
41+
42
			MsgC(tc,"Color",nc,"(",tco,val.p,nc,", ",tco,val.y,nc,", ",tco,val.r,nc,")")
43
		end
44
	elseif tp == "function" then
45
		MsgC(tco,"\""..tostring(val).."\"")
46
	elseif tp == "Entity" or tp == "Weapon" or tp == "Player" then
47
		local str = ""
48
		for w in string.gmatch(tostring(val), "%[(%d+)%]") do
49
			str = w
50
			break
51
		end
52
		MsgC(tc,"Entity",nc,"(",tco,str,nc,")",cc,"/*"..tp.."*/")
53
	else
54
		MsgC(tco,tostring(val))
55-
					MsgC(sc,indent.."[\"",nc,k,sc,"\"] ",ec,"=",nc," ",bc,"{\n")
55+
56
	if new then
57
		MsgC(nc,",\n")
58
	end
59-
					MsgC(sc,indent.."[\"",nc,k,sc,"\"] ",ec,"=",nc," ")
59+
60-
					tostring2(v)
60+
61
local function tbl_rec(tbl,depth,current,max)
62
	current = current + 1
63
	local indent = string.rep( "\t", current )
64
	if current <= depth or depth == -1 then
65
		local c = 0
66
		local c2 = 0
67
		for k,v in pairs(tbl) do
68
			c = c + 1
69
			if c <= max or max == -1 then
70
				if type(v) == "table" then
71
					MsgC(sc,indent.."[") tostring2(k,false) MsgC(sc,"] ",ec,"=",nc," ",bc,"{\n")
72
					tbl_rec(v,depth,current,max)
73
					MsgC(sc,indent,bc,"}",nc,",\n")
74
				else
75
					MsgC(sc,indent.."[") tostring2(k,false) MsgC(sc,"] ",ec,"=",nc," ")
76
					tostring2(v,true)
77
				end
78
			else
79
				c2 = c2 + 1
80
			end
81
		end
82
		if c2 > 0 then
83
			if c2 != 1 then
84
				MsgC(cc,indent.."/* ",c2," more elements. (amount restriced)*/\n")
85
			else
86
				MsgC(cc,indent.."/* ",c2," more element. (amount restriced)*/\n")
87
			end
88
		end
89
	else
90
		local c = 0
91
		for k,v in pairs(tbl) do
92
			c = c + 1
93
		end
94
		if c != 1 then
95
			MsgC(cc,indent.."/* ",c," elements. (depth restriced)*/\n")
96
		else
97
			MsgC(cc,indent.."/* ",c," element. (depth restriced)*/\n")
98
		end
99
	end
100
end
101
102
function PrintTableDepth(tab,depth,max)
103
	if tab == nil or type(tab) != "table" or depth == nil or type(depth) != "number" or depth < -1 or type(max) != "number" or max < -1 or max == nil then MsgC(Color(255,0,0),"\n\nManual:",Color(200,255,255),"\nPrintTableDepth( Table toPrint, Number depth, Number max )\ntoPrint: \tThe table to be printed\ndepth: \t\tAmount of child-tables to open (-1 = inf, -1 <= depth)\nmax: \t\tAmount of elements to print per table (-1 = inf, -1 <= max)\n\n") return end
104
	MsgC(tc,"ROOT ",ec,"=",nc," ",bc,"{\n")
105
	tbl_rec(tab,depth,0,max)
106
	MsgC(bc,"}\n\n")
107
end