Función Imprimir Tabla al estilo lua

Todas los scripts relacionados con AMS.
Esta función la uso para ver todos los miembros de una tabla y verificar que esten tal y como los genere. La pueden modificar a su antojo ;) .
function ptbl(tbl, b, c)
	local s = b or " ";
	local ss = c or "";
	local log = ss.."table "..s.."={\r\n";
	if type(tbl) == "table" then
		for row, value in pairs(tbl) do
			local k = type(value);
			if k == "table" then
				log = log..ss..ptbl(value, "["..row.."]", ss.."\t");
			else
				log = log..ss..k..": ["..row.."] = \""..tostring(value).."\",\r\n"
			end
		end
		return log..ss.."}\r\n";
	else
		return tostring(tbl);
	end
end
Ejemplo de como llamarla (siempre regresa un string):
tabla = {"a", b=1, c={1,2}}
Dialog.Message("", ptbl(tabla))
genial, muchas gracias bro!
Esta funcion bien podria estar en el includes de AMS no? "Table.Print"
A wiwi, pueden modificarla para que no les muestre el tipo de campo pero...la verdad eso ya es de cada quien.

Por cierto, vi una función llamada TableToDelimited...No le veo necesidad porque según yo es lo mismo que table.concat :)
good
Excelente la voy a usar para algunas pruebas, gracias webultra
Me tomé la libertad de editar la función original para cambiar el formato de salida a uno que en verdad se pueda solo copiar y pegar en el editor de código y el intérprete de Lua realmente comprenda :penguin:
function ptbl(tbl, indexName, identationStyle, endCharacter)
  indexName = indexName or 'table = '
  identationStyle = identationStyle or ''
  endCharacter = endCharacter or ''
  local result = identationStyle .. indexName .. '{\r\n'
  if type(tbl) == 'table' then
    for row, value in pairs(tbl) do
      row = type(row) == 'number' and '' or row .. ' = '
      if type(value) == 'table' then
        result = result .. ptbl(value, row, identationStyle .. '  ', ',\r\n')
      else
        value = type(value) == 'string' and '"' .. tostring(value) .. '"' or tostring(value)
        result = result .. identationStyle .. '  ' .. row .. value .. ',\r\n'
      end
    end
    return result .. identationStyle .. '}' .. endCharacter
  else
    return tostring(tbl)
  end
end

local tabla = {
  'a',
  1,
  2,
  miOtraTabla = {
    b = 1,
    {
      'a',
      'b',
      'c'
    }
  },
}

print(ptbl(tabla))

Código: Seleccionar todo

table = {
  "a",
  1,
  2,
  miOtraTabla = {
    {
      "a",
      "b",
      "c",
    },
    b = 1,
  },
}