Refactoring

This commit is contained in:
yuin 2019-05-04 19:27:13 +09:00
parent e9b382fb0a
commit 45222d6b03
10 changed files with 26 additions and 30 deletions

View file

@ -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),
))
}

View file

@ -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),
))
}

View file

@ -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)

View file

@ -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),
))
}

View file

@ -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),
))
}

View file

@ -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),
))
}

View file

@ -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),
))
}

View file

@ -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...)
}
}

View file

@ -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
}

View file

@ -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) {