12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- function _hx_print_class(obj, depth)
- local first = true
- local result = ''
- for k,v in pairs(obj) do
- if _hx_hidden[k] == nil then
- if first then
- first = false
- else
- result = result .. ', '
- end
- if _hx_hidden[k] == nil then
- result = result .. k .. ':' .. _hx_tostring(v, depth+1)
- end
- end
- end
- return '{ ' .. result .. ' }'
- end
- function _hx_print_enum(o, depth)
- if o.length == 2 then
- return o[0]
- else
- local str = o[0] .. "("
- for i = 2, (o.length-1) do
- if i ~= 2 then
- str = str .. "," .. _hx_tostring(o[i], depth+1)
- else
- str = str .. _hx_tostring(o[i], depth+1)
- end
- end
- return str .. ")"
- end
- end
- function _hx_tostring(obj, depth)
- if depth == nil then
- depth = 0
- elseif depth > 5 then
- return "<...>"
- end
- local tstr = _G.type(obj)
- if tstr == "string" then return obj
- elseif tstr == "nil" then return "null"
- elseif tstr == "number" then
- if obj == _G.math.POSITIVE_INFINITY then return "Infinity"
- elseif obj == _G.math.NEGATIVE_INFINITY then return "-Infinity"
- elseif obj == 0 then return "0"
- elseif obj ~= obj then return "NaN"
- else return _G.tostring(obj)
- end
- elseif tstr == "boolean" then return _G.tostring(obj)
- elseif tstr == "userdata" then
- local mt = _G.getmetatable(obj)
- if mt ~= nil and mt.__tostring ~= nil then
- return _G.tostring(obj)
- else
- return "<userdata>"
- end
- elseif tstr == "function" then return "<function>"
- elseif tstr == "thread" then return "<thread>"
- elseif tstr == "table" then
- if obj.__enum__ ~= nil then
- return _hx_print_enum(obj, depth)
- elseif obj.toString ~= nil and not _hx_is_array(obj) then return obj:toString()
- elseif _hx_is_array(obj) then
- if obj.length > 5 then
- return "[...]"
- else
- str = ""
- for i=0, (obj.length-1) do
- if i == 0 then
- str = str .. _hx_tostring(obj[i], depth+1)
- else
- str = str .. "," .. _hx_tostring(obj[i], depth+1)
- end
- end
- return "[" .. str .. "]"
- end
- elseif obj.__class__ ~= nil then
- return _hx_print_class(obj, depth)
- else
- first = true
- buffer = {}
- for k,v in pairs(obj) do
- if _hx_hidden[k] == nil then
- _G.table.insert(buffer, _hx_tostring(k, depth+1) .. ' : ' .. _hx_tostring(obj[k], depth+1))
- end
- end
- return "{ " .. table.concat(buffer, ", ") .. " }"
- end
- else
- _G.error("Unknown Lua type", 0)
- return ""
- end
- end
|