diff --git a/extension/definition_list.go b/extension/definition_list.go index 841b153..1d17e38 100644 --- a/extension/definition_list.go +++ b/extension/definition_list.go @@ -220,11 +220,11 @@ type definitionList struct { var DefinitionList = &definitionList{} func (e *definitionList) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithBlockParsers( + m.Parser().AddOptions(parser.WithBlockParsers( util.Prioritized(NewDefinitionListParser(), 101), util.Prioritized(NewDefinitionDescriptionParser(), 102), )) - m.Renderer().AddOption(renderer.WithNodeRenderers( + m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(NewDefinitionListHTMLRenderer(), 500), )) } diff --git a/extension/footnote.go b/extension/footnote.go index c3444e2..fc13ff3 100644 --- a/extension/footnote.go +++ b/extension/footnote.go @@ -263,22 +263,18 @@ type footnote struct { var Footnote = &footnote{} func (e *footnote) Extend(m goldmark.Markdown) { - m.Parser().AddOption( + m.Parser().AddOptions( parser.WithBlockParsers( util.Prioritized(NewFootnoteBlockParser(), 999), ), - ) - m.Parser().AddOption( parser.WithInlineParsers( util.Prioritized(NewFootnoteParser(), 101), ), - ) - m.Parser().AddOption( parser.WithASTTransformers( util.Prioritized(NewFootnoteASTTransformer(), 999), ), ) - m.Renderer().AddOption(renderer.WithNodeRenderers( + m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(NewFootnoteHTMLRenderer(), 500), )) } diff --git a/extension/gfm.go b/extension/gfm.go index 3b9bda5..b16a56d 100644 --- a/extension/gfm.go +++ b/extension/gfm.go @@ -24,7 +24,7 @@ var filterTags = []string{ } func (e *gfm) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithFilterTags(filterTags...)) + m.Parser().AddOptions(parser.WithFilterTags(filterTags...)) Linkify.Extend(m) Table.Extend(m) Strikethrough.Extend(m) diff --git a/extension/linkify.go b/extension/linkify.go index ec1dd07..62c41cc 100644 --- a/extension/linkify.go +++ b/extension/linkify.go @@ -119,7 +119,7 @@ type linkify struct { var Linkify = &linkify{} func (e *linkify) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithInlineParsers( + m.Parser().AddOptions(parser.WithInlineParsers( util.Prioritized(NewLinkifyParser(), 999), )) } diff --git a/extension/strikethrough.go b/extension/strikethrough.go index 7462030..cd7584b 100644 --- a/extension/strikethrough.go +++ b/extension/strikethrough.go @@ -98,10 +98,10 @@ type strikethrough struct { var Strikethrough = &strikethrough{} func (e *strikethrough) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithInlineParsers( + m.Parser().AddOptions(parser.WithInlineParsers( util.Prioritized(NewStrikethroughParser(), 500), )) - m.Renderer().AddOption(renderer.WithNodeRenderers( + m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(NewStrikethroughHTMLRenderer(), 500), )) } diff --git a/extension/table.go b/extension/table.go index 4c5636c..8f20f9f 100644 --- a/extension/table.go +++ b/extension/table.go @@ -219,10 +219,10 @@ type table struct { var Table = &table{} func (e *table) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithParagraphTransformers( + m.Parser().AddOptions(parser.WithParagraphTransformers( util.Prioritized(NewTableParagraphTransformer(), 200), )) - m.Renderer().AddOption(renderer.WithNodeRenderers( + m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(NewTableHTMLRenderer(), 500), )) } diff --git a/extension/tasklist.go b/extension/tasklist.go index 85ade26..825f8d5 100644 --- a/extension/tasklist.go +++ b/extension/tasklist.go @@ -106,10 +106,10 @@ type taskList struct { var TaskList = &taskList{} func (e *taskList) Extend(m goldmark.Markdown) { - m.Parser().AddOption(parser.WithInlineParsers( + m.Parser().AddOptions(parser.WithInlineParsers( util.Prioritized(NewTaskCheckBoxParser(), 0), )) - m.Renderer().AddOption(renderer.WithNodeRenderers( + m.Renderer().AddOptions(renderer.WithNodeRenderers( util.Prioritized(NewTaskCheckBoxHTMLRenderer(), 500), )) } diff --git a/markdown.go b/markdown.go index 20f1388..86d12e2 100644 --- a/markdown.go +++ b/markdown.go @@ -71,9 +71,7 @@ func WithParser(p parser.Parser) Option { // WithParserOptions applies options for the parser. func WithParserOptions(opts ...parser.Option) Option { return func(m *markdown) { - for _, opt := range opts { - m.parser.AddOption(opt) - } + m.parser.AddOptions(opts...) } } @@ -87,9 +85,7 @@ func WithRenderer(r renderer.Renderer) Option { // WithRendererOptions applies options for the renderer. func WithRendererOptions(opts ...renderer.Option) Option { return func(m *markdown) { - for _, opt := range opts { - m.renderer.AddOption(opt) - } + m.renderer.AddOptions(opts...) } } diff --git a/parser/parser.go b/parser/parser.go index 59eabe8..3c9f21a 100644 --- a/parser/parser.go +++ b/parser/parser.go @@ -317,7 +317,7 @@ type Parser interface { Parse(reader text.Reader, opts ...ParseOption) ast.Node // AddOption adds the given option to thie parser. - AddOption(Option) + AddOptions(...Option) } // A SetOptioner interface sets the given option to the object. @@ -564,8 +564,10 @@ func NewParser(options ...Option) Parser { return p } -func (p *parser) AddOption(o Option) { - o.SetConfig(p.config) +func (p *parser) AddOptions(opts ...Option) { + for _, opt := range opts { + opt.SetConfig(p.config) + } } func (p *parser) addBlockParser(v util.PrioritizedValue, options map[OptionName]interface{}) { @@ -686,7 +688,7 @@ func (p *parser) Parse(reader text.Reader, opts ...ParseOption) ast.Node { for _, at := range p.astTransformers { at.Transform(root, reader, pc) } - root.Dump(reader.Source(), 0) + //root.Dump(reader.Source(), 0) return root } diff --git a/renderer/renderer.go b/renderer/renderer.go index a2ef1ee..32b5012 100644 --- a/renderer/renderer.go +++ b/renderer/renderer.go @@ -90,8 +90,8 @@ type NodeRendererFuncRegisterer interface { type Renderer interface { Render(w io.Writer, source []byte, n ast.Node) error - // AddOption adds given option to thie parser. - AddOption(Option) + // AddOptions adds given option to thie parser. + AddOptions(...Option) } type renderer struct { @@ -119,8 +119,10 @@ func NewRenderer(options ...Option) Renderer { return r } -func (r *renderer) AddOption(o Option) { - o.SetConfig(r.config) +func (r *renderer) AddOptions(opts ...Option) { + for _, opt := range opts { + opt.SetConfig(r.config) + } } func (r *renderer) Register(kind ast.NodeKind, v NodeRendererFunc) {