Categorygithub.com/Code-Hex/dd
modulepackage
1.1.0
Repository: https://github.com/code-hex/dd.git
Documentation: pkg.go.dev

# README

dd test Go Reference

dd dumps Go data structures as valid syntax in Go.

  • ✅ Simple API
  • ✅ Support Go 1.16 ~ 1.18 (available generics!)
  • ✅ Customizable dump format each types
    • Available some options in df package
  • ✅ Support pretty print
    • You can use any color theme you like.

There are several libraries similar to this exist. I like them all, each one leans toward debugging purposes mainly.

In some cases, we want to use these data structures as test data. None of them output valid Go syntax, so I had to manually modify them.

dd solves this problem. Output as valid syntax, we did get also more prettry and readable form.

Synopsis

Generator purpose

Add this import line to the file you're working in:

import "github.com/Code-Hex/dd"

and just call Dump function.

data := map[string]int{
  "b": 2,
  "a": 1,
  "c": 3,
}
fmt.Println(dd.Dump(data))
// map[string]int{
//   "a": 1,
//   "b": 2,
//   "c": 3,
// }

// There are also some options
fmt.Println(dd.Dump(data, dd.WithIndent(4)))
// map[string]int{
//     "a": 1,
//     "b": 2,
//     "c": 3,
// }

Debugging purpose

Add this import line to the file you're working in:

import "github.com/Code-Hex/dd/p"

and just call p.P

func main() {
  srv := &http.Server{
    Addr:    ":8080",
    Handler: http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {}),
  }
  fmt.Println("--- monokai")
  p.P(srv)
}
color.png

You can read examples/pretty/main.go. If you want to adopt a color theme of your own choice, the following links will help you: pkg.go.dev/github.com/alecthomas/chroma/styles.

Customize the format

WithDumpFunc option helps you if you want to customize the format for each type. This option works as code using Generics for 1.18 and above, otherwise it uses reflect.

Several wrapper options using this option are provided in the df package.

import "github.com/Code-Hex/dd/df"

and call Dump function with options within the package.

// json.RawMessage(`{"message":"Hello, World"}`)
fmt.Println(
  dd.Dump(
    json.RawMessage(`{"message":"Hello, World"}`),
    df.WithJSONRawMessage(),
  ),
)

// func() []byte {
//   // 00000000  48 65 6c 6c 6f 2c 20 57  6f 72 6c 64              |Hello, World|
//
//   return []byte{0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x57, 0x6f, 0x72, 0x6c, 0x64}
// }()
fmt.Println(
  dd.Dump([]byte("Hello, World"), df.WithRichBytes()),
)

License

MIT License

Copyright (c) 2022 codehex

# Packages

No description provided by the author
No description provided by the author
No description provided by the author

# Functions

Dump dumps specified data.
WithDumpFunc is an option to add function for customize specified type dump string.
WithExportedOnly enables to display only exported struct field.
WithIndent adjust indent nested in any blocks.
WithListBreakLineSize is an option to specify the number of elements to break lines when dumped a listing (slice, array) of a given type.
WithUintFormat specify mode to display uint format.

# Constants

BinaryUint is mode to display uint as binary format The format be like 0b00000000.
DecimalUint is mode to display uint as decimal format.
HexUint is mode to display uint as hex format The format be like 0x00.

# Interfaces

Writer is a writer for dump string.

# Type aliases

DumpFunc is a function to dump you specified custom format.
OptionFunc is a function for making options.
No description provided by the author