gopkg.in/tools/godep.v67@v67.0.0-20160513230433-2d182dfe781d/Godeps/_workspace/src/github.com/kr/pretty/pretty.go (about) 1 // Package pretty provides pretty-printing for Go values. This is 2 // useful during debugging, to avoid wrapping long output lines in 3 // the terminal. 4 // 5 // It provides a function, Formatter, that can be used with any 6 // function that accepts a format string. It also provides 7 // convenience wrappers for functions in packages fmt and log. 8 package pretty 9 10 import ( 11 "fmt" 12 "io" 13 "log" 14 ) 15 16 // Errorf is a convenience wrapper for fmt.Errorf. 17 // 18 // Calling Errorf(f, x, y) is equivalent to 19 // fmt.Errorf(f, Formatter(x), Formatter(y)). 20 func Errorf(format string, a ...interface{}) error { 21 return fmt.Errorf(format, wrap(a, false)...) 22 } 23 24 // Fprintf is a convenience wrapper for fmt.Fprintf. 25 // 26 // Calling Fprintf(w, f, x, y) is equivalent to 27 // fmt.Fprintf(w, f, Formatter(x), Formatter(y)). 28 func Fprintf(w io.Writer, format string, a ...interface{}) (n int, error error) { 29 return fmt.Fprintf(w, format, wrap(a, false)...) 30 } 31 32 // Log is a convenience wrapper for log.Printf. 33 // 34 // Calling Log(x, y) is equivalent to 35 // log.Print(Formatter(x), Formatter(y)), but each operand is 36 // formatted with "%# v". 37 func Log(a ...interface{}) { 38 log.Print(wrap(a, true)...) 39 } 40 41 // Logf is a convenience wrapper for log.Printf. 42 // 43 // Calling Logf(f, x, y) is equivalent to 44 // log.Printf(f, Formatter(x), Formatter(y)). 45 func Logf(format string, a ...interface{}) { 46 log.Printf(format, wrap(a, false)...) 47 } 48 49 // Logln is a convenience wrapper for log.Printf. 50 // 51 // Calling Logln(x, y) is equivalent to 52 // log.Println(Formatter(x), Formatter(y)), but each operand is 53 // formatted with "%# v". 54 func Logln(a ...interface{}) { 55 log.Println(wrap(a, true)...) 56 } 57 58 // Print pretty-prints its operands and writes to standard output. 59 // 60 // Calling Print(x, y) is equivalent to 61 // fmt.Print(Formatter(x), Formatter(y)), but each operand is 62 // formatted with "%# v". 63 func Print(a ...interface{}) (n int, errno error) { 64 return fmt.Print(wrap(a, true)...) 65 } 66 67 // Printf is a convenience wrapper for fmt.Printf. 68 // 69 // Calling Printf(f, x, y) is equivalent to 70 // fmt.Printf(f, Formatter(x), Formatter(y)). 71 func Printf(format string, a ...interface{}) (n int, errno error) { 72 return fmt.Printf(format, wrap(a, false)...) 73 } 74 75 // Println pretty-prints its operands and writes to standard output. 76 // 77 // Calling Print(x, y) is equivalent to 78 // fmt.Println(Formatter(x), Formatter(y)), but each operand is 79 // formatted with "%# v". 80 func Println(a ...interface{}) (n int, errno error) { 81 return fmt.Println(wrap(a, true)...) 82 } 83 84 // Sprintf is a convenience wrapper for fmt.Sprintf. 85 // 86 // Calling Sprintf(f, x, y) is equivalent to 87 // fmt.Sprintf(f, Formatter(x), Formatter(y)). 88 func Sprintf(format string, a ...interface{}) string { 89 return fmt.Sprintf(format, wrap(a, false)...) 90 } 91 92 func wrap(a []interface{}, force bool) []interface{} { 93 w := make([]interface{}, len(a)) 94 for i, x := range a { 95 w[i] = formatter{x: x, force: force} 96 } 97 return w 98 }