This commit adds a function named Sdump which works exactly like Dump and
Fdump except it returns the formatted output as a string. This serves the
same purpose as the the Sprint* family of functions.
The name indent better describes the function. This also will help
differentiate the function from planned functions that are intended to
perform padding for the purposes of aligning fields, types, and values.
It was previously possible for an invalid reflect value to lead to a panic
in certain obscure cases. Rather than adding multiple checks for the
invalid reflect value, handle invalid reflect values immediately.
This commit implements feature request #3. In particular, it allows the
formatter to respond to %#v and %#+v. The # flag (%#v) adds type
information to the output and the combination of the # and + flags (%#+v)
adds both type information and pointer information. This allows the
consumer a choice between displaying types, pointer information, or both.
This commit adds a new type, SpewState, which can be used to create
instances with unique configuration options. The methods of SpewState are
equivalent to the top-level functions. Full documentation and examples
are included.
This paves the way to support individual configuration options through a
separate type while still providing the simple global config and package
level methods.