GarishPrint
An opinioned pretty printing package for Julia objects.
Installation
GarishPrint is a
Julia Language
package. To install GarishPrint,
please open
Julia's interactive session (known as REPL) and press ] key in the REPL to use the package mode, then type the following command
pkg> add GarishPrintUsage
there is only one function exported that is pprint,
GarishPrint.pprint — Functionpprint([io::IO=stdout], [mimetype], x; kw...)Pretty print an object x to io, default io is stdout.
pprint will detect if an object type has overloaded Base.show, and use that if possible, overloading Base.show to GarishPrint for custom type should use pprint_struct to avoid recursive call into Base.show.
Keyword Arguments
indent::Int: indent size, default is2.compact::Bool: whether print withint one line, default isget(io, :compact, false).limit::Bool: whether the print is limited, default isget(io, :compact, false).displaysize::Tuple{Int, Int}: the displaysize hint of printed string, note this is not stricted obeyed,
default is displaysize(io).
show_indent::Bool: whether print indentation hint, default istrue.color::Bool: whether print with color, default istrue.
Keyword Arguments for option struct defined by Configurations
include_defaults::Bool: whether print the default values, default isfalseto provide more compact printing in REPL.
Color Preference
color preference is available as keyword arguments to override the default color scheme. These arguments may take any of the values :normal, :default, :bold, :black, :blink, :blue, :cyan, :green, :hidden, :light_black, :light_blue, :light_cyan, :light_green, :light_magenta, :light_red, :light_yellow, :magenta, :nothing, :red, :reverse, :underline, :white, or :yellow or an integer between 0 and 255 inclusive. Note that not all terminals support 256 colors.
The default color scheme can be checked via GarishPrint.default_colors_256() for 256 color, and GarishPrint.default_colors_ansi() for ANSI color. The 256 color will be used when the terminal is detected to support 256 color.
fieldname: field name of a struct.type: the color of a type.operator: the color of an operator, e.g+,=>.literal: the color of literals.constant: the color of constants, e.gπ.number: the color of numbers, e.g1.2,1.string: the color of string.comment: comments, e.g# some commentsundef: the const binding toUndefInitializerlinenumber: line numbers.
Notes
The color print and compact print can also be turned on/off by setting IOContext, e.g IOContext(io, :color=>false) will print without color, and IOContext(io, :compact=>true) will print within one line. This is also what the standard Julia IO objects follows in printing by default.
here is a quick example
using GarishPrint
struct ABC{T1, T2, T3}
hee::T1
haa::T2
hoo::T3
end
struct Example{T1, T2}
field_a::T1
field_b::T2
abc::ABC
end
x = Example(
Dict(
"a"=>Example(
[1, 2, 3],
2.0,
ABC(1, 2.0im, 3.12f0),
),
"str" => Set([1, 2, 3]),
),
undef,
ABC(nothing, 1.2+2.1im, π),
)
pprint(x)it will print the following

License
MIT License