Documentation ¶
Overview ¶
Missing feature of the standard library: printing arbitrary inputs as Go code, with proper spacing and support for multi-line output with indentation. The name "repr" stands for "representation" and alludes to the Python function with the same name.
Index ¶
- Variables
- func Bytes[A any](src A) []byte
- func BytesC[A any](conf Conf, src A) []byte
- func BytesIndent[A any](src A, lvl int) []byte
- func BytesIndentC[A any](conf Conf, src A, lvl int) []byte
- func Println[A any](src A)
- func PrintlnC[A any](conf Conf, src A)
- func Prn[A any](desc string, src A)
- func String[A any](src A) string
- func StringC[A any](conf Conf, src A) string
- func StringIndent[A any](src A, lvl int) string
- func StringIndentC[A any](conf Conf, src A, lvl int) string
- type Conf
- type Fmt
Examples ¶
Constants ¶
This section is empty.
Variables ¶
var ConfDefault = Conf{Indent: gg.Indent}
Default config used by top-level formatting functions in this package.
var ConfFull = Conf{Indent: gg.Indent, ZeroFields: true}
Config that allows formatting of struct zero fields.
Functions ¶
func Bytes ¶ added in v0.1.7
Similar to `fmt.Sprintf("%#v")` or `gg.GoString`, but more advanced. Formats the input as Go code, using the config `ConfDefault`, returning the resulting bytes.
func BytesC ¶ added in v0.1.7
Formats the input as Go code, using the given config, returning the resulting bytes.
func BytesIndent ¶ added in v0.1.7
Formats the input as Go code, using the default config with the given indentation level, returning the resulting bytes.
func BytesIndentC ¶ added in v0.1.7
Formats the input as Go code, using the given config with the given indentation level, returning the resulting bytes.
func Println ¶ added in v0.1.0
func Println[A any](src A)
Shortcut for printing the input as Go code, using the default config.
func Prn ¶ added in v0.0.5
Shortcut for printing the input as Go code, prefixed with the given description, using the default config. Handy for debug-printing.
func String ¶
Similar to `fmt.Sprintf("%#v")` or `gg.GoString`, but more advanced. Formats the input as Go code, using the config `ConfDefault`, returning the resulting string.
Example ¶
package main import ( "fmt" "github.com/mitranim/gg" "github.com/mitranim/gg/grepr" ) type Outer struct { OuterId int OuterName string Embed Inner *Inner } type Embed struct { EmbedId int EmbedName string } type Inner struct { InnerId *int InnerName *string } var testInner = Inner{ InnerId: gg.Ptr(30), InnerName: gg.Ptr(`inner`), } var testEmbed = Embed{EmbedId: 20} var testOuter = Outer{ OuterName: `outer`, Embed: testEmbed, Inner: &testInner, } func main() { fmt.Println(grepr.String(testOuter)) }
Output: grepr_test.Outer{ OuterName: `outer`, Embed: grepr_test.Embed{EmbedId: 20}, Inner: &grepr_test.Inner{ InnerId: gg.Ptr(30), InnerName: gg.Ptr(`inner`), }, }
func StringC ¶ added in v0.1.7
Formats the input as Go code, using the given config, returning the resulting string.
func StringIndent ¶
Formats the input as Go code, using the default config with the given indentation level, returning the resulting string.
Types ¶
type Conf ¶
Formatting config.
- `.Indent` controls indentation. If empty, output is single line.
- `.ZeroFields`, if set, forces printing of zero fields in structs. By default zero fields are skipped.
- `.Pkg`, if set, indicates the package name to strip from type names.