// Package goldmark implements functions to convert markdown text to a desired format.
package goldmark import ( ) // DefaultParser returns a new Parser that is configured by default values. func () parser.Parser { return parser.NewParser(parser.WithBlockParsers(parser.DefaultBlockParsers()...), parser.WithInlineParsers(parser.DefaultInlineParsers()...), parser.WithParagraphTransformers(parser.DefaultParagraphTransformers()...), ) } // DefaultRenderer returns a new Renderer that is configured by default values. func () renderer.Renderer { return renderer.NewRenderer(renderer.WithNodeRenderers(util.Prioritized(html.NewRenderer(), 1000))) } var defaultMarkdown = New() // Convert interprets a UTF-8 bytes source in Markdown and // write rendered contents to a writer w. func ( []byte, io.Writer, ...parser.ParseOption) error { return defaultMarkdown.Convert(, , ...) } // A Markdown interface offers functions to convert Markdown text to // a desired format. type Markdown interface { // Convert interprets a UTF-8 bytes source in Markdown and write rendered // contents to a writer w. Convert(source []byte, writer io.Writer, opts ...parser.ParseOption) error // Parser returns a Parser that will be used for conversion. Parser() parser.Parser // SetParser sets a Parser to this object. SetParser(parser.Parser) // Parser returns a Renderer that will be used for conversion. Renderer() renderer.Renderer // SetRenderer sets a Renderer to this object. SetRenderer(renderer.Renderer) } // Option is a functional option type for Markdown objects. type Option func(*markdown) // WithExtensions adds extensions. func ( ...Extender) Option { return func( *markdown) { .extensions = append(.extensions, ...) } } // WithParser allows you to override the default parser. func ( parser.Parser) Option { return func( *markdown) { .parser = } } // WithParserOptions applies options for the parser. func ( ...parser.Option) Option { return func( *markdown) { .parser.AddOptions(...) } } // WithRenderer allows you to override the default renderer. func ( renderer.Renderer) Option { return func( *markdown) { .renderer = } } // WithRendererOptions applies options for the renderer. func ( ...renderer.Option) Option { return func( *markdown) { .renderer.AddOptions(...) } } type markdown struct { parser parser.Parser renderer renderer.Renderer extensions []Extender } // New returns a new Markdown with given options. func ( ...Option) Markdown { := &markdown{ parser: DefaultParser(), renderer: DefaultRenderer(), extensions: []Extender{}, } for , := range { () } for , := range .extensions { .Extend() } return } func ( *markdown) ( []byte, io.Writer, ...parser.ParseOption) error { := text.NewReader() := .parser.Parse(, ...) return .renderer.Render(, , ) } func ( *markdown) () parser.Parser { return .parser } func ( *markdown) ( parser.Parser) { .parser = } func ( *markdown) () renderer.Renderer { return .renderer } func ( *markdown) ( renderer.Renderer) { .renderer = } // An Extender interface is used for extending Markdown. type Extender interface { // Extend extends the Markdown. Extend(Markdown) }