local MAX_DEPTH = 3

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
  
  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
    local i = 1
    indent = indent.."\t"
    s = s..":"
    
    for k, v in pairs(arg) do
      if k == arg or v == arg then
        depth = depth + 1
        
        if depth > MAX_DEPTH then
          s = s.."\n"..indent.."Recursive table, breaking".."\n"..indent
          break
        end
      end
      
      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 main = myMain end
