| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798 |
- // Package pretty provides pretty-printing for Go values. This is
- // useful during debugging, to avoid wrapping long output lines in
- // the terminal.
- //
- // It provides a function, Formatter, that can be used with any
- // function that accepts a format string. It also provides
- // convenience wrappers for functions in packages fmt and log.
- package pretty
- import (
- "fmt"
- "io"
- "log"
- )
- // Errorf is a convenience wrapper for fmt.Errorf.
- //
- // Calling Errorf(f, x, y) is equivalent to
- // fmt.Errorf(f, Formatter(x), Formatter(y)).
- func Errorf(format string, a ...interface{}) error {
- return fmt.Errorf(format, wrap(a, false)...)
- }
- // Fprintf is a convenience wrapper for fmt.Fprintf.
- //
- // Calling Fprintf(w, f, x, y) is equivalent to
- // fmt.Fprintf(w, f, Formatter(x), Formatter(y)).
- func Fprintf(w io.Writer, format string, a ...interface{}) (n int, error error) {
- return fmt.Fprintf(w, format, wrap(a, false)...)
- }
- // Log is a convenience wrapper for log.Printf.
- //
- // Calling Log(x, y) is equivalent to
- // log.Print(Formatter(x), Formatter(y)), but each operand is
- // formatted with "%# v".
- func Log(a ...interface{}) {
- log.Print(wrap(a, true)...)
- }
- // Logf is a convenience wrapper for log.Printf.
- //
- // Calling Logf(f, x, y) is equivalent to
- // log.Printf(f, Formatter(x), Formatter(y)).
- func Logf(format string, a ...interface{}) {
- log.Printf(format, wrap(a, false)...)
- }
- // Logln is a convenience wrapper for log.Printf.
- //
- // Calling Logln(x, y) is equivalent to
- // log.Println(Formatter(x), Formatter(y)), but each operand is
- // formatted with "%# v".
- func Logln(a ...interface{}) {
- log.Println(wrap(a, true)...)
- }
- // Print pretty-prints its operands and writes to standard output.
- //
- // Calling Print(x, y) is equivalent to
- // fmt.Print(Formatter(x), Formatter(y)), but each operand is
- // formatted with "%# v".
- func Print(a ...interface{}) (n int, errno error) {
- return fmt.Print(wrap(a, true)...)
- }
- // Printf is a convenience wrapper for fmt.Printf.
- //
- // Calling Printf(f, x, y) is equivalent to
- // fmt.Printf(f, Formatter(x), Formatter(y)).
- func Printf(format string, a ...interface{}) (n int, errno error) {
- return fmt.Printf(format, wrap(a, false)...)
- }
- // Println pretty-prints its operands and writes to standard output.
- //
- // Calling Print(x, y) is equivalent to
- // fmt.Println(Formatter(x), Formatter(y)), but each operand is
- // formatted with "%# v".
- func Println(a ...interface{}) (n int, errno error) {
- return fmt.Println(wrap(a, true)...)
- }
- // Sprintf is a convenience wrapper for fmt.Sprintf.
- //
- // Calling Sprintf(f, x, y) is equivalent to
- // fmt.Sprintf(f, Formatter(x), Formatter(y)).
- func Sprintf(format string, a ...interface{}) string {
- return fmt.Sprintf(format, wrap(a, false)...)
- }
- func wrap(a []interface{}, force bool) []interface{} {
- w := make([]interface{}, len(a))
- for i, x := range a {
- w[i] = formatter{x: x, force: force}
- }
- return w
- }
|