A Config struct is a data structure that holds configuration of the Renderer.
type Config struct { Options map[OptionName]interface{} NodeRenderers util.PrioritizedSlice }
func NewConfig() *Config
NewConfig returns a new Config.
A NodeRenderer interface offers NodeRendererFuncs.
type NodeRenderer interface { // RendererFuncs registers NodeRendererFuncs to given NodeRendererFuncRegisterer. RegisterFuncs(NodeRendererFuncRegisterer) }
NodeRendererFunc is a function that renders a given node.
type NodeRendererFunc func(writer util.BufWriter, source []byte, n ast.Node, entering bool) (ast.WalkStatus, error)
A NodeRendererFuncRegisterer registers given NodeRendererFunc to this object.
type NodeRendererFuncRegisterer interface { // Register registers given NodeRendererFunc to this object. Register(ast.NodeKind, NodeRendererFunc) }
An Option interface is a functional option type for the Renderer.
type Option interface { SetConfig(*Config) }
func WithNodeRenderers(ps ...util.PrioritizedValue) Option
WithNodeRenderers is a functional option that allow you to add NodeRenderers to the renderer.
func WithOption(name OptionName, value interface{}) Option
WithOption is a functional option that allow you to set an arbitrary option to the parser.
An OptionName is a name of the option.
type OptionName string
A Renderer interface renders given AST node to given writer with given Renderer.
type Renderer interface { Render(w io.Writer, source []byte, n ast.Node) error // AddOptions adds given option to this renderer. AddOptions(...Option) }
func NewRenderer(options ...Option) Renderer
NewRenderer returns a new Renderer with given options.
A SetOptioner interface sets given option to the object.
type SetOptioner interface { // SetOption sets given option to the object. // Unacceptable options may be passed. // Thus implementations must ignore unacceptable options. SetOption(name OptionName, value interface{}) }