| // 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. For example, |
| // |
| // type LongTypeName struct { |
| // longFieldName, otherLongFieldName int |
| // } |
| // func TestFoo(t *testing.T) { |
| // var x []LongTypeName{{1, 2}, {3, 4}, {5, 6}} |
| // t.Errorf("%# v", Formatter(x)) |
| // } |
| // |
| // This package also provides a convenience wrapper for each function in |
| // package fmt that takes a format string. |
| package pretty |
| |
| import ( |
| "fmt" |
| "io" |
| "os" |
| ) |
| |
| |
| // 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{}) os.Error { |
| return fmt.Errorf(format, wrap(a)...) |
| } |
| |
| |
| // 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 os.Error) { |
| return fmt.Fprintf(w, format, wrap(a)...) |
| } |
| |
| |
| // 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 os.Error) { |
| return fmt.Printf(format, wrap(a)...) |
| } |
| |
| |
| // 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)...) |
| } |
| |
| |
| func wrap(a []interface{}) []interface{} { |
| w := make([]interface{}, len(a)) |
| for i, x := range a { |
| w[i] = Formatter(x) |
| } |
| return w |
| } |