mirror of
https://github.com/yuin/goldmark
synced 2025-03-04 23:04:52 +00:00
Refactoring
This commit is contained in:
parent
e9b382fb0a
commit
45222d6b03
10 changed files with 26 additions and 30 deletions
|
|
@ -220,11 +220,11 @@ type definitionList struct {
|
||||||
var DefinitionList = &definitionList{}
|
var DefinitionList = &definitionList{}
|
||||||
|
|
||||||
func (e *definitionList) Extend(m goldmark.Markdown) {
|
func (e *definitionList) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithBlockParsers(
|
m.Parser().AddOptions(parser.WithBlockParsers(
|
||||||
util.Prioritized(NewDefinitionListParser(), 101),
|
util.Prioritized(NewDefinitionListParser(), 101),
|
||||||
util.Prioritized(NewDefinitionDescriptionParser(), 102),
|
util.Prioritized(NewDefinitionDescriptionParser(), 102),
|
||||||
))
|
))
|
||||||
m.Renderer().AddOption(renderer.WithNodeRenderers(
|
m.Renderer().AddOptions(renderer.WithNodeRenderers(
|
||||||
util.Prioritized(NewDefinitionListHTMLRenderer(), 500),
|
util.Prioritized(NewDefinitionListHTMLRenderer(), 500),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -263,22 +263,18 @@ type footnote struct {
|
||||||
var Footnote = &footnote{}
|
var Footnote = &footnote{}
|
||||||
|
|
||||||
func (e *footnote) Extend(m goldmark.Markdown) {
|
func (e *footnote) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(
|
m.Parser().AddOptions(
|
||||||
parser.WithBlockParsers(
|
parser.WithBlockParsers(
|
||||||
util.Prioritized(NewFootnoteBlockParser(), 999),
|
util.Prioritized(NewFootnoteBlockParser(), 999),
|
||||||
),
|
),
|
||||||
)
|
|
||||||
m.Parser().AddOption(
|
|
||||||
parser.WithInlineParsers(
|
parser.WithInlineParsers(
|
||||||
util.Prioritized(NewFootnoteParser(), 101),
|
util.Prioritized(NewFootnoteParser(), 101),
|
||||||
),
|
),
|
||||||
)
|
|
||||||
m.Parser().AddOption(
|
|
||||||
parser.WithASTTransformers(
|
parser.WithASTTransformers(
|
||||||
util.Prioritized(NewFootnoteASTTransformer(), 999),
|
util.Prioritized(NewFootnoteASTTransformer(), 999),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
m.Renderer().AddOption(renderer.WithNodeRenderers(
|
m.Renderer().AddOptions(renderer.WithNodeRenderers(
|
||||||
util.Prioritized(NewFootnoteHTMLRenderer(), 500),
|
util.Prioritized(NewFootnoteHTMLRenderer(), 500),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@ var filterTags = []string{
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *gfm) Extend(m goldmark.Markdown) {
|
func (e *gfm) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithFilterTags(filterTags...))
|
m.Parser().AddOptions(parser.WithFilterTags(filterTags...))
|
||||||
Linkify.Extend(m)
|
Linkify.Extend(m)
|
||||||
Table.Extend(m)
|
Table.Extend(m)
|
||||||
Strikethrough.Extend(m)
|
Strikethrough.Extend(m)
|
||||||
|
|
|
||||||
|
|
@ -119,7 +119,7 @@ type linkify struct {
|
||||||
var Linkify = &linkify{}
|
var Linkify = &linkify{}
|
||||||
|
|
||||||
func (e *linkify) Extend(m goldmark.Markdown) {
|
func (e *linkify) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithInlineParsers(
|
m.Parser().AddOptions(parser.WithInlineParsers(
|
||||||
util.Prioritized(NewLinkifyParser(), 999),
|
util.Prioritized(NewLinkifyParser(), 999),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -98,10 +98,10 @@ type strikethrough struct {
|
||||||
var Strikethrough = &strikethrough{}
|
var Strikethrough = &strikethrough{}
|
||||||
|
|
||||||
func (e *strikethrough) Extend(m goldmark.Markdown) {
|
func (e *strikethrough) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithInlineParsers(
|
m.Parser().AddOptions(parser.WithInlineParsers(
|
||||||
util.Prioritized(NewStrikethroughParser(), 500),
|
util.Prioritized(NewStrikethroughParser(), 500),
|
||||||
))
|
))
|
||||||
m.Renderer().AddOption(renderer.WithNodeRenderers(
|
m.Renderer().AddOptions(renderer.WithNodeRenderers(
|
||||||
util.Prioritized(NewStrikethroughHTMLRenderer(), 500),
|
util.Prioritized(NewStrikethroughHTMLRenderer(), 500),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -219,10 +219,10 @@ type table struct {
|
||||||
var Table = &table{}
|
var Table = &table{}
|
||||||
|
|
||||||
func (e *table) Extend(m goldmark.Markdown) {
|
func (e *table) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithParagraphTransformers(
|
m.Parser().AddOptions(parser.WithParagraphTransformers(
|
||||||
util.Prioritized(NewTableParagraphTransformer(), 200),
|
util.Prioritized(NewTableParagraphTransformer(), 200),
|
||||||
))
|
))
|
||||||
m.Renderer().AddOption(renderer.WithNodeRenderers(
|
m.Renderer().AddOptions(renderer.WithNodeRenderers(
|
||||||
util.Prioritized(NewTableHTMLRenderer(), 500),
|
util.Prioritized(NewTableHTMLRenderer(), 500),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -106,10 +106,10 @@ type taskList struct {
|
||||||
var TaskList = &taskList{}
|
var TaskList = &taskList{}
|
||||||
|
|
||||||
func (e *taskList) Extend(m goldmark.Markdown) {
|
func (e *taskList) Extend(m goldmark.Markdown) {
|
||||||
m.Parser().AddOption(parser.WithInlineParsers(
|
m.Parser().AddOptions(parser.WithInlineParsers(
|
||||||
util.Prioritized(NewTaskCheckBoxParser(), 0),
|
util.Prioritized(NewTaskCheckBoxParser(), 0),
|
||||||
))
|
))
|
||||||
m.Renderer().AddOption(renderer.WithNodeRenderers(
|
m.Renderer().AddOptions(renderer.WithNodeRenderers(
|
||||||
util.Prioritized(NewTaskCheckBoxHTMLRenderer(), 500),
|
util.Prioritized(NewTaskCheckBoxHTMLRenderer(), 500),
|
||||||
))
|
))
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -71,9 +71,7 @@ func WithParser(p parser.Parser) Option {
|
||||||
// WithParserOptions applies options for the parser.
|
// WithParserOptions applies options for the parser.
|
||||||
func WithParserOptions(opts ...parser.Option) Option {
|
func WithParserOptions(opts ...parser.Option) Option {
|
||||||
return func(m *markdown) {
|
return func(m *markdown) {
|
||||||
for _, opt := range opts {
|
m.parser.AddOptions(opts...)
|
||||||
m.parser.AddOption(opt)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -87,9 +85,7 @@ func WithRenderer(r renderer.Renderer) Option {
|
||||||
// WithRendererOptions applies options for the renderer.
|
// WithRendererOptions applies options for the renderer.
|
||||||
func WithRendererOptions(opts ...renderer.Option) Option {
|
func WithRendererOptions(opts ...renderer.Option) Option {
|
||||||
return func(m *markdown) {
|
return func(m *markdown) {
|
||||||
for _, opt := range opts {
|
m.renderer.AddOptions(opts...)
|
||||||
m.renderer.AddOption(opt)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -317,7 +317,7 @@ type Parser interface {
|
||||||
Parse(reader text.Reader, opts ...ParseOption) ast.Node
|
Parse(reader text.Reader, opts ...ParseOption) ast.Node
|
||||||
|
|
||||||
// AddOption adds the given option to thie parser.
|
// AddOption adds the given option to thie parser.
|
||||||
AddOption(Option)
|
AddOptions(...Option)
|
||||||
}
|
}
|
||||||
|
|
||||||
// A SetOptioner interface sets the given option to the object.
|
// A SetOptioner interface sets the given option to the object.
|
||||||
|
|
@ -564,8 +564,10 @@ func NewParser(options ...Option) Parser {
|
||||||
return p
|
return p
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *parser) AddOption(o Option) {
|
func (p *parser) AddOptions(opts ...Option) {
|
||||||
o.SetConfig(p.config)
|
for _, opt := range opts {
|
||||||
|
opt.SetConfig(p.config)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (p *parser) addBlockParser(v util.PrioritizedValue, options map[OptionName]interface{}) {
|
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 {
|
for _, at := range p.astTransformers {
|
||||||
at.Transform(root, reader, pc)
|
at.Transform(root, reader, pc)
|
||||||
}
|
}
|
||||||
root.Dump(reader.Source(), 0)
|
//root.Dump(reader.Source(), 0)
|
||||||
return root
|
return root
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -90,8 +90,8 @@ type NodeRendererFuncRegisterer interface {
|
||||||
type Renderer interface {
|
type Renderer interface {
|
||||||
Render(w io.Writer, source []byte, n ast.Node) error
|
Render(w io.Writer, source []byte, n ast.Node) error
|
||||||
|
|
||||||
// AddOption adds given option to thie parser.
|
// AddOptions adds given option to thie parser.
|
||||||
AddOption(Option)
|
AddOptions(...Option)
|
||||||
}
|
}
|
||||||
|
|
||||||
type renderer struct {
|
type renderer struct {
|
||||||
|
|
@ -119,8 +119,10 @@ func NewRenderer(options ...Option) Renderer {
|
||||||
return r
|
return r
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *renderer) AddOption(o Option) {
|
func (r *renderer) AddOptions(opts ...Option) {
|
||||||
o.SetConfig(r.config)
|
for _, opt := range opts {
|
||||||
|
opt.SetConfig(r.config)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (r *renderer) Register(kind ast.NodeKind, v NodeRendererFunc) {
|
func (r *renderer) Register(kind ast.NodeKind, v NodeRendererFunc) {
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue