spew.go (5969B)
1 /* 2 * Copyright (c) 2013-2016 Dave Collins <dave@davec.name> 3 * 4 * Permission to use, copy, modify, and distribute this software for any 5 * purpose with or without fee is hereby granted, provided that the above 6 * copyright notice and this permission notice appear in all copies. 7 * 8 * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES 9 * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF 10 * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR 11 * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES 12 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN 13 * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF 14 * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. 15 */ 16 17 package spew 18 19 import ( 20 "fmt" 21 "io" 22 ) 23 24 // Errorf is a wrapper for fmt.Errorf that treats each argument as if it were 25 // passed with a default Formatter interface returned by NewFormatter. It 26 // returns the formatted string as a value that satisfies error. See 27 // NewFormatter for formatting details. 28 // 29 // This function is shorthand for the following syntax: 30 // 31 // fmt.Errorf(format, spew.NewFormatter(a), spew.NewFormatter(b)) 32 func Errorf(format string, a ...interface{}) (err error) { 33 return fmt.Errorf(format, convertArgs(a)...) 34 } 35 36 // Fprint is a wrapper for fmt.Fprint that treats each argument as if it were 37 // passed with a default Formatter interface returned by NewFormatter. It 38 // returns the number of bytes written and any write error encountered. See 39 // NewFormatter for formatting details. 40 // 41 // This function is shorthand for the following syntax: 42 // 43 // fmt.Fprint(w, spew.NewFormatter(a), spew.NewFormatter(b)) 44 func Fprint(w io.Writer, a ...interface{}) (n int, err error) { 45 return fmt.Fprint(w, convertArgs(a)...) 46 } 47 48 // Fprintf is a wrapper for fmt.Fprintf that treats each argument as if it were 49 // passed with a default Formatter interface returned by NewFormatter. It 50 // returns the number of bytes written and any write error encountered. See 51 // NewFormatter for formatting details. 52 // 53 // This function is shorthand for the following syntax: 54 // 55 // fmt.Fprintf(w, format, spew.NewFormatter(a), spew.NewFormatter(b)) 56 func Fprintf(w io.Writer, format string, a ...interface{}) (n int, err error) { 57 return fmt.Fprintf(w, format, convertArgs(a)...) 58 } 59 60 // Fprintln is a wrapper for fmt.Fprintln that treats each argument as if it 61 // passed with a default Formatter interface returned by NewFormatter. See 62 // NewFormatter for formatting details. 63 // 64 // This function is shorthand for the following syntax: 65 // 66 // fmt.Fprintln(w, spew.NewFormatter(a), spew.NewFormatter(b)) 67 func Fprintln(w io.Writer, a ...interface{}) (n int, err error) { 68 return fmt.Fprintln(w, convertArgs(a)...) 69 } 70 71 // Print is a wrapper for fmt.Print that treats each argument as if it were 72 // passed with a default Formatter interface returned by NewFormatter. It 73 // returns the number of bytes written and any write error encountered. See 74 // NewFormatter for formatting details. 75 // 76 // This function is shorthand for the following syntax: 77 // 78 // fmt.Print(spew.NewFormatter(a), spew.NewFormatter(b)) 79 func Print(a ...interface{}) (n int, err error) { 80 return fmt.Print(convertArgs(a)...) 81 } 82 83 // Printf is a wrapper for fmt.Printf that treats each argument as if it were 84 // passed with a default Formatter interface returned by NewFormatter. It 85 // returns the number of bytes written and any write error encountered. See 86 // NewFormatter for formatting details. 87 // 88 // This function is shorthand for the following syntax: 89 // 90 // fmt.Printf(format, spew.NewFormatter(a), spew.NewFormatter(b)) 91 func Printf(format string, a ...interface{}) (n int, err error) { 92 return fmt.Printf(format, convertArgs(a)...) 93 } 94 95 // Println is a wrapper for fmt.Println that treats each argument as if it were 96 // passed with a default Formatter interface returned by NewFormatter. It 97 // returns the number of bytes written and any write error encountered. See 98 // NewFormatter for formatting details. 99 // 100 // This function is shorthand for the following syntax: 101 // 102 // fmt.Println(spew.NewFormatter(a), spew.NewFormatter(b)) 103 func Println(a ...interface{}) (n int, err error) { 104 return fmt.Println(convertArgs(a)...) 105 } 106 107 // Sprint is a wrapper for fmt.Sprint that treats each argument as if it were 108 // passed with a default Formatter interface returned by NewFormatter. It 109 // returns the resulting string. See NewFormatter for formatting details. 110 // 111 // This function is shorthand for the following syntax: 112 // 113 // fmt.Sprint(spew.NewFormatter(a), spew.NewFormatter(b)) 114 func Sprint(a ...interface{}) string { 115 return fmt.Sprint(convertArgs(a)...) 116 } 117 118 // Sprintf is a wrapper for fmt.Sprintf that treats each argument as if it were 119 // passed with a default Formatter interface returned by NewFormatter. It 120 // returns the resulting string. See NewFormatter for formatting details. 121 // 122 // This function is shorthand for the following syntax: 123 // 124 // fmt.Sprintf(format, spew.NewFormatter(a), spew.NewFormatter(b)) 125 func Sprintf(format string, a ...interface{}) string { 126 return fmt.Sprintf(format, convertArgs(a)...) 127 } 128 129 // Sprintln is a wrapper for fmt.Sprintln that treats each argument as if it 130 // were passed with a default Formatter interface returned by NewFormatter. It 131 // returns the resulting string. See NewFormatter for formatting details. 132 // 133 // This function is shorthand for the following syntax: 134 // 135 // fmt.Sprintln(spew.NewFormatter(a), spew.NewFormatter(b)) 136 func Sprintln(a ...interface{}) string { 137 return fmt.Sprintln(convertArgs(a)...) 138 } 139 140 // convertArgs accepts a slice of arguments and returns a slice of the same 141 // length with each argument converted to a default spew Formatter interface. 142 func convertArgs(args []interface{}) (formatters []interface{}) { 143 formatters = make([]interface{}, len(args)) 144 for index, arg := range args { 145 formatters[index] = NewFormatter(arg) 146 } 147 return formatters 148 }