#define VV_HTML_ENCODE(thing) ( sanitize ? html_encode(thing) : thing ) /proc/debug_variable(name, value, level, datum/DA = null, sanitize = TRUE) var/header if(DA) if (islist(DA)) var/index = name if (value) name = DA[name] //name is really the index until this line else value = DA[name] header = "
  • (E) (C) (-) " else header = "
  • (E) (C) (M) " else header = "
  • " var/item if (isnull(value)) item = "[VV_HTML_ENCODE(name)] = null" else if (istext(value)) item = "[VV_HTML_ENCODE(name)] = \"[VV_HTML_ENCODE(value)]\"" else if (isicon(value)) #ifdef VARSICON var/icon/I = new/icon(value) var/rnd = rand(1,10000) var/rname = "tmp\ref[I][rnd].png" usr << browse_rsc(I, rname) item = "[VV_HTML_ENCODE(name)] = ([value]) " #else item = "[VV_HTML_ENCODE(name)] = /icon ([value])" #endif else if (isfile(value)) item = "[VV_HTML_ENCODE(name)] = '[value]'" else if (istype(value, /datum)) var/datum/D = value if ("[D]" != "[D.type]") //if the thing as a name var, lets use it. item = "[VV_HTML_ENCODE(name)] \ref[value] = [D] [D.type]" else item = "[VV_HTML_ENCODE(name)] \ref[value] = [D.type]" else if (islist(value)) var/list/L = value var/list/items = list() if (L.len > 0 && !(name == "underlays" || name == "overlays" || L.len > (IS_NORMAL_LIST(L) ? VV_NORMAL_LIST_NO_EXPAND_THRESHOLD : VV_SPECIAL_LIST_NO_EXPAND_THRESHOLD))) for (var/i in 1 to L.len) var/key = L[i] var/val if (IS_NORMAL_LIST(L) && !isnum(key)) val = L[key] if (isnull(val)) // we still want to display non-null false values, such as 0 or "" val = key key = i items += debug_variable(key, val, level + 1, sanitize = sanitize) item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else item = "[VV_HTML_ENCODE(name)] = /list ([L.len])" else if (name in GLOB.bitfields) var/list/flags = list() for (var/i in GLOB.bitfields[name]) if (value & GLOB.bitfields[name][i]) flags += i item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(jointext(flags, ", "))]" else item = "[VV_HTML_ENCODE(name)] = [VV_HTML_ENCODE(value)]" return "[header][item]
  • " #undef VV_HTML_ENCODE