<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en-GB">
	<id>https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FNyoron%2FanyToString</id>
	<title>Module:Sandbox/Nyoron/anyToString - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://stockhub.co/index.php?action=history&amp;feed=atom&amp;title=Module%3ASandbox%2FNyoron%2FanyToString"/>
	<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nyoron/anyToString&amp;action=history"/>
	<updated>2026-04-21T10:24:09Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.5</generator>
	<entry>
		<id>https://stockhub.co/index.php?title=Module:Sandbox/Nyoron/anyToString&amp;diff=145931&amp;oldid=prev</id>
		<title>imported&gt;にょろん at 16:17, 16 May 2016</title>
		<link rel="alternate" type="text/html" href="https://stockhub.co/index.php?title=Module:Sandbox/Nyoron/anyToString&amp;diff=145931&amp;oldid=prev"/>
		<updated>2016-05-16T16:17:54Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;local p = {}&lt;br /&gt;
&lt;br /&gt;
local T = {}&lt;br /&gt;
local T_table = {}&lt;br /&gt;
&lt;br /&gt;
local function table_sort_f(a,b)&lt;br /&gt;
	if type(a) == &amp;#039;nil&amp;#039; then return true end&lt;br /&gt;
&lt;br /&gt;
	if type(a) == &amp;#039;boolean&amp;#039; then&lt;br /&gt;
        if type(b) == &amp;#039;nil&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;boolean&amp;#039; then return tostring(a) &amp;lt; tostring(b) end&lt;br /&gt;
	    return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	if type(a) == &amp;#039;number&amp;#039; then&lt;br /&gt;
        if type(b) == &amp;#039;nil&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;boolean&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;number&amp;#039; then return a &amp;lt; b end&lt;br /&gt;
	    return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	if type(a) == &amp;#039;string&amp;#039; then&lt;br /&gt;
        if type(b) == &amp;#039;nil&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;boolean&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;number&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;string&amp;#039; then return a &amp;lt; b end&lt;br /&gt;
	    return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	if type(a) == &amp;#039;function&amp;#039; then&lt;br /&gt;
        if type(b) == &amp;#039;nil&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;boolean&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;number&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;string&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;function&amp;#039; then&lt;br /&gt;
    		return T.func.name[a] &amp;lt; T.func.name[b]&lt;br /&gt;
    	end&lt;br /&gt;
	    return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
	if type(a) == &amp;#039;table&amp;#039; then&lt;br /&gt;
        if type(b) == &amp;#039;nil&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;boolean&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;number&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;string&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;function&amp;#039; then return false end&lt;br /&gt;
    	if type(b) == &amp;#039;table&amp;#039; then&lt;br /&gt;
    		return T_table.name[a] &amp;lt; T_table.name[b]&lt;br /&gt;
        end&lt;br /&gt;
	    return true&lt;br /&gt;
    end&lt;br /&gt;
&lt;br /&gt;
    return true&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function __anyToString( var, indent, indent2 )&lt;br /&gt;
&lt;br /&gt;
    local tp = type( var )&lt;br /&gt;
    if tp == &amp;#039;table&amp;#039; then&lt;br /&gt;
        if T_table.name[var] == nil then&lt;br /&gt;
        	T_table.num = T_table.num + 1&lt;br /&gt;
       		T_table.name[var] = &amp;#039;table_&amp;#039; .. tostring( T_table.num )&lt;br /&gt;
   		end&lt;br /&gt;
        if T_table.done[var] then return T_table.name[var] end&lt;br /&gt;
   		T_table.done[var] = true&lt;br /&gt;
        local sb = {}&lt;br /&gt;
        if not T_table.started then&lt;br /&gt;
        	T_table.started = true&lt;br /&gt;
            sb = { string.rep( &amp;quot; &amp;quot;, indent ) }&lt;br /&gt;
            sb[#sb + 1] = T_table.name[var] .. &amp;#039; = {\n&amp;#039;&lt;br /&gt;
        else&lt;br /&gt;
            sb[#sb + 1] = &amp;#039;{ -- [[ &amp;#039; .. T_table.name[var] .. &amp;#039; ]] --\n&amp;#039;&lt;br /&gt;
        end&lt;br /&gt;
        local array_keys = {}&lt;br /&gt;
        local table_keys = {}&lt;br /&gt;
        for key, value in ipairs( var ) do&lt;br /&gt;
            array_keys[key] = true&lt;br /&gt;
            table_keys[#table_keys + 1] = key&lt;br /&gt;
        end&lt;br /&gt;
        for key in pairs( var ) do&lt;br /&gt;
            if not array_keys[key] then&lt;br /&gt;
                table_keys[#table_keys + 1] = key&lt;br /&gt;
                if type( key ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                    if T_table.name[key] == nil then&lt;br /&gt;
                       	T_table.num = T_table.num + 1&lt;br /&gt;
                		T_table.name[key] = &amp;#039;table_&amp;#039; .. tostring( T_table.num )&lt;br /&gt;
                	end&lt;br /&gt;
                end&lt;br /&gt;
                if type( key ) == &amp;#039;function&amp;#039; then&lt;br /&gt;
                    if T.func.name[key] == nil then&lt;br /&gt;
                       	T.func.num = T.func.num + 1&lt;br /&gt;
                		T.func.name[key] = &amp;#039;function_&amp;#039; .. tostring( T.func.num )&lt;br /&gt;
                	end&lt;br /&gt;
                end&lt;br /&gt;
            end&lt;br /&gt;
        end&lt;br /&gt;
        if T_table.do_sort then table.sort( table_keys, table_sort_f ) end&lt;br /&gt;
        for i = 1, #table_keys do&lt;br /&gt;
            local key = table_keys[i]&lt;br /&gt;
            sb[#sb + 1] = string.rep( &amp;quot; &amp;quot;, indent + indent2 )&lt;br /&gt;
            if type( key ) == &amp;#039;table&amp;#039; then&lt;br /&gt;
                sb[#sb + 1] = &amp;#039;[&amp;#039; .. T_table.name[key] .. &amp;#039;] = &amp;#039;&lt;br /&gt;
            else&lt;br /&gt;
                sb[#sb + 1] = &amp;#039;[&amp;#039; .. __anyToString( key ) .. &amp;#039;] = &amp;#039;&lt;br /&gt;
            end&lt;br /&gt;
            sb[#sb + 1] = __anyToString( var[key], indent + indent2, indent2 )&lt;br /&gt;
        	sb[#sb + 1] = &amp;quot;,&amp;quot;&lt;br /&gt;
            if array_keys[key] then&lt;br /&gt;
                sb[#sb + 1] = &amp;#039;\t-- Array[&amp;#039; .. tostring( key ) .. &amp;#039;]&amp;#039;&lt;br /&gt;
            elseif type(key) == &amp;#039;number&amp;#039; then&lt;br /&gt;
                sb[#sb + 1] = &amp;#039;\t-- Table[&amp;#039; .. tostring( key ) .. &amp;#039;]&amp;#039;&lt;br /&gt;
        	end&lt;br /&gt;
        	sb[#sb + 1] = &amp;quot;\n&amp;quot;&lt;br /&gt;
        end&lt;br /&gt;
        sb[#sb + 1] = string.rep( &amp;quot; &amp;quot;, indent )&lt;br /&gt;
        sb[#sb + 1] = &amp;quot;}&amp;quot;&lt;br /&gt;
        return table.concat( sb )&lt;br /&gt;
    elseif tp == &amp;#039;function&amp;#039; then&lt;br /&gt;
    	if T.func.name[var] == nil then&lt;br /&gt;
    		T.func.num = T.func.num + 1&lt;br /&gt;
    		T.func.name[var] = &amp;#039;function_&amp;#039; .. tostring( T.func.num )&lt;br /&gt;
    	end&lt;br /&gt;
    	return T.func.name[var]&lt;br /&gt;
    elseif tp == &amp;#039;string&amp;#039; then&lt;br /&gt;
        return string.format( &amp;quot;%q&amp;quot;, var )&lt;br /&gt;
    else&lt;br /&gt;
        return tostring( var )&lt;br /&gt;
    end&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
p.anyToString = function( var, do_sort, indent, indent2 )&lt;br /&gt;
    -- initialize&lt;br /&gt;
    T.func = {}&lt;br /&gt;
    T.func.name = {}&lt;br /&gt;
    T.func.num = 0&lt;br /&gt;
    T_table.name = {}&lt;br /&gt;
    T_table.num = 0&lt;br /&gt;
    T_table.started = false&lt;br /&gt;
    T_table.done = {}&lt;br /&gt;
    T_table.do_sort = do_sort&lt;br /&gt;
    indent = indent or 0&lt;br /&gt;
    indent2 = indent2 or 4&lt;br /&gt;
&lt;br /&gt;
    return __anyToString( var, indent, indent2 )&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
return p&lt;/div&gt;</summary>
		<author><name>imported&gt;にょろん</name></author>
	</entry>
</feed>