diff options
Diffstat (limited to 'markup/converter/converter.go')
-rw-r--r-- | markup/converter/converter.go | 22 |
1 files changed, 18 insertions, 4 deletions
diff --git a/markup/converter/converter.go b/markup/converter/converter.go index 7e5b56b07..e5a07f1a1 100644 --- a/markup/converter/converter.go +++ b/markup/converter/converter.go @@ -74,7 +74,7 @@ var NopConverter = new(nopConverter) type nopConverter int -func (nopConverter) Convert(ctx RenderContext) (Result, error) { +func (nopConverter) Convert(ctx RenderContext) (ResultRender, error) { return &bytes.Buffer{}, nil } @@ -85,15 +85,29 @@ func (nopConverter) Supports(feature identity.Identity) bool { // Converter wraps the Convert method that converts some markup into // another format, e.g. Markdown to HTML. type Converter interface { - Convert(ctx RenderContext) (Result, error) + Convert(ctx RenderContext) (ResultRender, error) Supports(feature identity.Identity) bool } -// Result represents the minimum returned from Convert. -type Result interface { +// ParseRenderer is an optional interface. +// The Goldmark converter implements this, and this allows us +// to extract the ToC without having to render the content. +type ParseRenderer interface { + Parse(RenderContext) (ResultParse, error) + Render(RenderContext, any) (ResultRender, error) +} + +// ResultRender represents the minimum returned from Convert and Render. +type ResultRender interface { Bytes() []byte } +// ResultParse represents the minimum returned from Parse. +type ResultParse interface { + Doc() any + TableOfContents() *tableofcontents.Fragments +} + // DocumentInfo holds additional information provided by some converters. type DocumentInfo interface { AnchorSuffix() string |