Module pl.pretty
Pretty-printing Lua tables.
Also provides a sandboxed Lua table reader and a function to present large numbers in human-friendly format.
Dependencies: pl.utils, pl.lexer, pl.stringx, debug
Functions
read (s) | Read a string representation of a Lua table. |
load (s[, env[, paranoid]]) | Read a Lua chunk. |
write (tbl[, space[, not_clever]]) | Create a string representation of a Lua table. |
dump (t[, filename]) | Dump a Lua table out to a file or stdout. |
debug (...) | Dump a series of arguments to stdout for debug purposes. |
number (num[, kind[, prec]]) | Format large numbers nicely for human consumption. |
Functions
- read (s)
-
Read a string representation of a Lua table.
This function loads and runs the string as Lua code, but bails out
if it contains a function definition.
Loaded string is executed in an empty environment.
Parameters:
- s
string
string to read in
{...}
format, possibly with some whitespace before or after the curly braces. A single line comment may be present at the beginning.
Returns:
-
a table in case of success.
If loading the string failed, return
nil
and error message. If executing loaded string failed, returnnil
and the error it raised. - s
string
string to read in
- load (s[, env[, paranoid]])
-
Read a Lua chunk.
Parameters:
- s string Lua code.
- env tab environment used to run the code, empty by default. (optional)
- paranoid bool abort loading if any looping constructs a found in the code and disable string methods. (optional)
Returns:
-
the environment in case of success or
nil
and syntax or runtime error if something went wrong. - write (tbl[, space[, not_clever]])
-
Create a string representation of a Lua table.
This function never fails, but may complain by returning an
extra value. Normally puts out one item per line, using
the provided indent; set the second parameter to an empty string
if you want output on one line.
NOTE: this is NOT a serialization function, not a full blown debug function. Checkout out respectively the serpent or inspect Lua modules for that if you need them.
Parameters:
- tbl tab Table to serialize to a string.
- space string The indent to use. Defaults to two spaces; pass an empty string for no indentation. (optional)
- not_clever
bool
Pass
true
for plain output, e.g{['key']=1}
. Defaults tofalse
. (optional)
Returns:
- a string
- an optional error message
- dump (t[, filename])
-
Dump a Lua table out to a file or stdout.
Parameters:
- t tab The table to write to a file or stdout.
- filename string File name to write too. Defaults to writing to stdout. (optional)
- debug (...)
-
Dump a series of arguments to stdout for debug purposes.
This function is attached to the module table
__call
method, to make it extra easy to access. So the full:print(require("pl.pretty").write({...}))
Can be shortened to:
require"pl.pretty" (...)
Any
nil
entries will be printed as"<nil>"
to make them explicit.Parameters:
- ... the parameters to dump to stdout.
Usage:
-- example debug output require"pl.pretty" ("hello", nil, "world", { bye = "world", true} ) -- output: { ["arg 1"] = "hello", ["arg 2"] = "<nil>", ["arg 3"] = "world", ["arg 4"] = { true, bye = "world" } }
- number (num[, kind[, prec]])
-
Format large numbers nicely for human consumption.
Parameters: