local MAX_DEPTH = 4

local function parce_arg(indent, arg_n, arg, depth, n, is_table_val)
  local s, n_str, arg_t = "", "", type(arg)
  arg_n = arg_n or ""
  depth = (depth or 0 ) + 1
  
  if not is_table_val then s = indent end
  if n and not is_table_val then n_str = tostring(n)..". " end
  s = s..n_str..arg_n.." "
  
  if arg_t == "table" then
    s = s.."["..tostring(arg).."]"
    
  elseif arg_t == "function" then
    s = s.."["..tostring(arg).."]"
    
  else
    s = s.."["..arg_t.."]"
  end
  
  if arg_t == "table" then      
  if depth > MAX_DEPTH then
    return ''
  end
    local i = 1
    indent = indent.."\t"
    s = s..":"
    
    for k, v in pairs(arg) do
      s = s.."\n"..parce_arg(indent, "key", k, depth, i, false).."; "..
                   parce_arg(indent, "value", v, depth, i, true)
      i = i + 1
    end
    
    return s
  end
  
  if arg_t == "string" then
    return s..'="'..arg..'"'
  end
  
  return s.."="..tostring(arg)
end

local img

local function myMain(arg)
  local a = {
    key1 = 1,
    key2 = '2',
    key3 = 'three',
  }
  
  a['a'] = a
  a[a] = 'a'
  a[3] = a['a']
  a[4] = a[a]
  a[6] = a
  print(parce_arg("",[[My test table "a"]], a).."\n")
  
  print(parce_arg("", "command_arguments", arg).."\n")
end

if love then love.load = myMain else myMain() end
