Support rendering definition lists

This commit is contained in:
Christian Muehlhaeuser
2019-12-13 03:00:45 +01:00
parent cc0738c20a
commit e310343e4a
3 changed files with 42 additions and 1 deletions
+27
View File
@@ -299,6 +299,33 @@ func (tr *TermRenderer) NewElement(node ast.Node, source []byte) Element {
},
}
// Definition Lists
case astext.KindDefinitionList:
e := &BlockElement{
Block: &bytes.Buffer{},
Style: cascadeStyle(ctx.blockStack.Current().Style, ctx.style[DefinitionList], true),
Margin: true,
}
return Element{
Entering: "\n",
Renderer: e,
Finisher: e,
}
case astext.KindDefinitionTerm:
return Element{
Renderer: &BaseElement{
Style: ctx.style[DefinitionTerm],
},
}
case astext.KindDefinitionDescription:
return Element{
Renderer: &BaseElement{
Style: ctx.style[DefinitionDescription],
},
}
// Handled by parents
case astext.KindTaskCheckBox:
// handled by KindListItem
+4 -1
View File
@@ -91,7 +91,10 @@ func (tr *TermRenderer) Render(in string) string {
// RenderBytes returns the markdown rendered into a byte slice.
func (tr *TermRenderer) RenderBytes(in []byte) []byte {
md := goldmark.New(
goldmark.WithExtensions(extension.GFM),
goldmark.WithExtensions(
extension.GFM,
extension.DefinitionList,
),
goldmark.WithParserOptions(
parser.WithAutoHeadingID(),
),
+11
View File
@@ -54,6 +54,11 @@ const (
TableBody
TableRow
// Definition Lists
DefinitionList
DefinitionTerm
DefinitionDescription
// HTML styles
HTMLBlock
HTMLSpan
@@ -310,6 +315,12 @@ func keyToType(key string) (StyleType, error) {
return TableBody, nil
case "table_row":
return TableRow, nil
case "definition_list":
return DefinitionList, nil
case "definition_term":
return DefinitionTerm, nil
case "definition_description":
return DefinitionDescription, nil
default:
return 0, fmt.Errorf("invalid style element type: %s", key)