Documentation
¶
Index ¶
- func Dd(vs ...any)
- func Diff(a, b any)
- func DiffHTML(a, b any) string
- func DiffStr(a, b any) string
- func Dump(vs ...any)
- func DumpHTML(vs ...any) string
- func DumpJSON(vs ...any)
- func DumpJSONStr(vs ...any) string
- func DumpStr(vs ...any) string
- func Fdump(w io.Writer, vs ...any)
- type Colorizer
- type Dumper
- func (d *Dumper) Dd(vs ...any)
- func (d *Dumper) Diff(a, b any)
- func (d *Dumper) DiffHTML(a, b any) string
- func (d *Dumper) DiffStr(a, b any) string
- func (d *Dumper) Dump(vs ...any)
- func (d *Dumper) DumpHTML(vs ...any) string
- func (d *Dumper) DumpJSON(vs ...any)
- func (d *Dumper) DumpJSONStr(vs ...any) string
- func (d *Dumper) DumpStr(vs ...any) string
- type FieldMatchMode
- type Option
- func WithDisableStringer(b bool) Option
- func WithExcludeFields(names ...string) Option
- func WithFieldMatchMode(mode FieldMatchMode) Option
- func WithMaxDepth(n int) Option
- func WithMaxItems(n int) Option
- func WithMaxStringLen(n int) Option
- func WithOnlyFields(names ...string) Option
- func WithRedactFields(names ...string) Option
- func WithRedactMatchMode(mode FieldMatchMode) Option
- func WithRedactSensitive() Option
- func WithSkipStackFrames(n int) Option
- func WithWriter(w io.Writer) Option
- func WithoutColor() Option
- func WithoutHeader() Option
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Dd ¶
func Dd(vs ...any)
Dd is a debug function that prints the values and exits the program. @group Dump
Example: dump and exit
v := map[string]int{"a": 1}
godump.Dd(v)
// #map[string]int {
// a => 1 #int
// }
func Diff ¶ added in v1.8.0
func Diff(a, b any)
Diff prints a diff between two values to stdout. @group Diff
Example: print diff
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
godump.Diff(a, b)
// <#diff // path:line
// - #map[string]int {
// - a => 1 #int
// - }
// + #map[string]int {
// + a => 2 #int
// + }
func DiffHTML ¶ added in v1.8.0
DiffHTML returns an HTML diff between two values. @group Diff
Example: HTML diff
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
html := godump.DiffHTML(a, b)
_ = html
// (html diff)
func DiffStr ¶ added in v1.8.0
DiffStr returns a string diff between two values. @group Diff
Example: diff string
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
out := godump.DiffStr(a, b)
_ = out
// <#diff // path:line
// - #map[string]int {
// - a => 1 #int
// - }
// + #map[string]int {
// + a => 2 #int
// + }
func Dump ¶
func Dump(vs ...any)
Dump prints the values to stdout with colorized output. @group Dump
Example: print to stdout
v := map[string]int{"a": 1}
godump.Dump(v)
// #map[string]int {
// a => 1 #int
// }
func DumpHTML ¶
DumpHTML dumps the values as HTML with colorized output. @group HTML
Example: dump HTML
v := map[string]int{"a": 1}
html := godump.DumpHTML(v)
_ = html
// (html output)
func DumpJSON ¶ added in v1.3.0
func DumpJSON(vs ...any)
DumpJSON dumps the values as a pretty-printed JSON string. If there is more than one value, they are dumped as a JSON array. It returns an error string if marshaling fails. @group JSON
Example: print JSON
v := map[string]int{"a": 1}
godump.DumpJSON(v)
// {
// "a": 1
// }
func DumpJSONStr ¶ added in v1.3.0
DumpJSONStr dumps the values as a JSON string. @group JSON
Example: JSON string
v := map[string]int{"a": 1}
out := godump.DumpJSONStr(v)
_ = out
// {"a":1}
Types ¶
type Colorizer ¶
Colorizer is a function type that takes a color code and a string, returning the colorized string.
type Dumper ¶ added in v1.3.0
type Dumper struct {
// contains filtered or unexported fields
}
Dumper holds configuration for dumping structured data. It controls depth, item count, and string length limits.
func NewDumper ¶ added in v1.3.0
NewDumper creates a new Dumper with the given options applied. Defaults are used for any setting not overridden. @group Builder
Example: build a custom dumper
v := map[string]int{"a": 1}
d := godump.NewDumper(
godump.WithMaxDepth(10),
godump.WithWriter(os.Stdout),
)
d.Dump(v)
// #map[string]int {
// a => 1 #int
// }
func (*Dumper) Dd ¶ added in v1.3.0
Dd is a debug function that prints the values and exits the program. @group Debug
Example: dump and exit with a custom dumper
d := godump.NewDumper()
v := map[string]int{"a": 1}
d.Dd(v)
// #map[string]int {
// a => 1 #int
// }
func (*Dumper) Diff ¶ added in v1.8.0
Diff prints a diff between two values to the configured writer. @group Diff
Example: print diff with a custom dumper
d := godump.NewDumper()
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
d.Diff(a, b)
// <#diff // path:line
// - #map[string]int {
// - a => 1 #int
// - }
// + #map[string]int {
// + a => 2 #int
// + }
func (*Dumper) DiffHTML ¶ added in v1.8.0
DiffHTML returns an HTML diff between two values. @group Diff
Example: HTML diff with a custom dumper
d := godump.NewDumper()
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
html := d.DiffHTML(a, b)
_ = html
// (html diff)
func (*Dumper) DiffStr ¶ added in v1.8.0
DiffStr returns a string diff between two values. @group Diff
Example: diff string with a custom dumper
d := godump.NewDumper()
a := map[string]int{"a": 1}
b := map[string]int{"a": 2}
out := d.DiffStr(a, b)
_ = out
// <#diff // path:line
// - #map[string]int {
// - a => 1 #int
// - }
// + #map[string]int {
// + a => 2 #int
// + }
func (*Dumper) Dump ¶ added in v1.3.0
Dump prints the values to stdout with colorized output. @group Dump
Example: print with a custom dumper
d := godump.NewDumper()
v := map[string]int{"a": 1}
d.Dump(v)
// #map[string]int {
// a => 1 #int
// }
func (*Dumper) DumpHTML ¶ added in v1.3.0
DumpHTML dumps the values as HTML with colorized output. @group HTML
Example: dump HTML with a custom dumper
d := godump.NewDumper()
v := map[string]int{"a": 1}
html := d.DumpHTML(v)
_ = html
fmt.Println(html)
// (html output)
func (*Dumper) DumpJSON ¶ added in v1.3.0
DumpJSON prints a pretty-printed JSON string to the configured writer. @group JSON
Example: print JSON
v := map[string]int{"a": 1}
d := godump.NewDumper()
d.DumpJSON(v)
// {
// "a": 1
// }
func (*Dumper) DumpJSONStr ¶ added in v1.3.0
DumpJSONStr pretty-prints values as JSON and returns it as a string. @group JSON
Example: dump JSON string
v := map[string]int{"a": 1}
d := godump.NewDumper()
out := d.DumpJSONStr(v)
_ = out
// {"a":1}
func (*Dumper) DumpStr ¶ added in v1.3.0
DumpStr returns a string representation of the values with colorized output. @group Dump
Example: get a string dump with a custom dumper
d := godump.NewDumper()
v := map[string]int{"a": 1}
out := d.DumpStr(v)
_ = out
// "#map[string]int {\n a => 1 #int\n}" #string
type FieldMatchMode ¶ added in v1.9.0
type FieldMatchMode int
FieldMatchMode controls how field names are matched.
const ( // FieldMatchExact matches field names exactly (case-insensitive). FieldMatchExact FieldMatchMode = iota // FieldMatchContains matches if the field name contains a substring (case-insensitive). FieldMatchContains // FieldMatchPrefix matches if the field name starts with a substring (case-insensitive). FieldMatchPrefix // FieldMatchSuffix matches if the field name ends with a substring (case-insensitive). FieldMatchSuffix )
type Option ¶ added in v1.3.0
Option defines a functional option for configuring a Dumper.
func WithDisableStringer ¶ added in v1.7.0
WithDisableStringer disables using the fmt.Stringer output. When enabled, the underlying type is rendered instead of String(). @group Options
Example: show raw types
// Default: false v := time.Duration(3) d := godump.NewDumper(godump.WithDisableStringer(true)) d.Dump(v) // 3 #time.Duration
func WithExcludeFields ¶ added in v1.9.0
WithExcludeFields omits struct fields that match the provided names. @group Options
Example: exclude fields
// Default: none
type User struct {
ID int
Email string
Password string
}
d := godump.NewDumper(
godump.WithExcludeFields("Password"),
)
d.Dump(User{ID: 1, Email: "user@example.com", Password: "secret"})
// #godump.User {
// +ID => 1 #int
// +Email => "user@example.com" #string
// }
func WithFieldMatchMode ¶ added in v1.9.0
func WithFieldMatchMode(mode FieldMatchMode) Option
WithFieldMatchMode sets how field names are matched for WithExcludeFields. @group Options
Example: use substring matching
// Default: FieldMatchExact
type User struct {
UserID int
}
d := godump.NewDumper(
godump.WithExcludeFields("id"),
godump.WithFieldMatchMode(godump.FieldMatchContains),
)
d.Dump(User{UserID: 10})
// #godump.User {
// }
func WithMaxDepth ¶ added in v1.3.0
WithMaxDepth limits how deep the structure will be dumped. Param n must be 0 or greater or this will be ignored, and default MaxDepth will be 15. @group Options
Example: limit depth
// Default: 15
v := map[string]map[string]int{"a": {"b": 1}}
d := godump.NewDumper(godump.WithMaxDepth(1))
d.Dump(v)
// #map[string]map[string]int {
// a => #map[string]int {
// b => 1 #int
// }
// }
func WithMaxItems ¶ added in v1.3.0
WithMaxItems limits how many items from an array, slice, or map can be printed. Param n must be 0 or greater or this will be ignored, and default MaxItems will be 100. @group Options
Example: limit items
// Default: 100
v := []int{1, 2, 3}
d := godump.NewDumper(godump.WithMaxItems(2))
d.Dump(v)
// #[]int [
// 0 => 1 #int
// 1 => 2 #int
// ... (truncated)
// ]
func WithMaxStringLen ¶ added in v1.3.0
WithMaxStringLen limits how long printed strings can be. Param n must be 0 or greater or this will be ignored, and default MaxStringLen will be 100000. @group Options
Example: limit string length
// Default: 100000 v := "hello world" d := godump.NewDumper(godump.WithMaxStringLen(5)) d.Dump(v) // "hello…" #string
func WithOnlyFields ¶ added in v1.9.0
WithOnlyFields limits struct output to fields that match the provided names. @group Options
Example: include-only fields
// Default: none
type User struct {
ID int
Email string
Password string
}
d := godump.NewDumper(
godump.WithOnlyFields("ID", "Email"),
)
d.Dump(User{ID: 1, Email: "user@example.com", Password: "secret"})
// #godump.User {
// +ID => 1 #int
// +Email => "user@example.com" #string
// }
func WithRedactFields ¶ added in v1.9.0
WithRedactFields replaces matching struct fields with a redacted placeholder. @group Options
Example: redact fields
// Default: none
type User struct {
ID int
Password string
}
d := godump.NewDumper(
godump.WithRedactFields("Password"),
)
d.Dump(User{ID: 1, Password: "secret"})
// #godump.User {
// +ID => 1 #int
// +Password => <redacted> #string
// }
func WithRedactMatchMode ¶ added in v1.9.0
func WithRedactMatchMode(mode FieldMatchMode) Option
WithRedactMatchMode sets how field names are matched for WithRedactFields. @group Options
Example: use substring matching
// Default: FieldMatchExact
type User struct {
APIKey string
}
d := godump.NewDumper(
godump.WithRedactFields("key"),
godump.WithRedactMatchMode(godump.FieldMatchContains),
)
d.Dump(User{APIKey: "abc"})
// #godump.User {
// +APIKey => <redacted> #string
// }
func WithRedactSensitive ¶ added in v1.9.0
func WithRedactSensitive() Option
WithRedactSensitive enables default redaction for common sensitive fields. @group Options
Example: redact common sensitive fields
// Default: disabled
type User struct {
Password string
Token string
}
d := godump.NewDumper(
godump.WithRedactSensitive(),
)
d.Dump(User{Password: "secret", Token: "abc"})
// #godump.User {
// +Password => <redacted> #string
// +Token => <redacted> #string
// }
func WithSkipStackFrames ¶ added in v1.5.0
WithSkipStackFrames skips additional stack frames for header reporting. This is useful when godump is wrapped and the actual call site is deeper. @group Options
Example: skip wrapper frames
// Default: 0
v := map[string]int{"a": 1}
d := godump.NewDumper(godump.WithSkipStackFrames(2))
d.Dump(v)
// <#dump // ../../../../usr/local/go/src/runtime/asm_arm64.s:1223
// #map[string]int {
// a => 1 #int
// }
func WithWriter ¶ added in v1.3.0
WithWriter routes output to the provided writer. @group Options
Example: write to buffer
// Default: stdout
var b strings.Builder
v := map[string]int{"a": 1}
d := godump.NewDumper(godump.WithWriter(&b))
d.Dump(v)
// #map[string]int {
// a => 1 #int
// }
func WithoutColor ¶ added in v1.8.0
func WithoutColor() Option
WithoutColor disables colorized output for the dumper. @group Options
Example: disable colors
// Default: false
v := map[string]int{"a": 1}
d := godump.NewDumper(godump.WithoutColor())
d.Dump(v)
// (prints without color)
// #map[string]int {
// a => 1 #int
// }
func WithoutHeader ¶ added in v1.9.0
func WithoutHeader() Option
WithoutHeader disables printing the source location header. @group Options
Example: disable header
// Default: false
d := godump.NewDumper(godump.WithoutHeader())
d.Dump("hello")
// "hello" #string