forked from go-gitea/gitea
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Use markdown frontmatter to provide Table of contents, language and f…
…rontmatter rendering (go-gitea#11047) * Add control for the rendering of the frontmatter * Add control to include a TOC * Add control to set language - allows control of ToC header and CJK glyph choice. Signed-off-by: Andrew Thornton art27@cantab.net
- Loading branch information
Showing
10 changed files
with
509 additions
and
16 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,107 @@ | ||
// Copyright 2020 The Gitea Authors. All rights reserved. | ||
// Use of this source code is governed by a MIT-style | ||
// license that can be found in the LICENSE file. | ||
|
||
package markdown | ||
|
||
import "github.com/yuin/goldmark/ast" | ||
|
||
// Details is a block that contains Summary and details | ||
type Details struct { | ||
ast.BaseBlock | ||
} | ||
|
||
// Dump implements Node.Dump . | ||
func (n *Details) Dump(source []byte, level int) { | ||
ast.DumpHelper(n, source, level, nil, nil) | ||
} | ||
|
||
// KindDetails is the NodeKind for Details | ||
var KindDetails = ast.NewNodeKind("Details") | ||
|
||
// Kind implements Node.Kind. | ||
func (n *Details) Kind() ast.NodeKind { | ||
return KindDetails | ||
} | ||
|
||
// NewDetails returns a new Paragraph node. | ||
func NewDetails() *Details { | ||
return &Details{ | ||
BaseBlock: ast.BaseBlock{}, | ||
} | ||
} | ||
|
||
// IsDetails returns true if the given node implements the Details interface, | ||
// otherwise false. | ||
func IsDetails(node ast.Node) bool { | ||
_, ok := node.(*Details) | ||
return ok | ||
} | ||
|
||
// Summary is a block that contains the summary of details block | ||
type Summary struct { | ||
ast.BaseBlock | ||
} | ||
|
||
// Dump implements Node.Dump . | ||
func (n *Summary) Dump(source []byte, level int) { | ||
ast.DumpHelper(n, source, level, nil, nil) | ||
} | ||
|
||
// KindSummary is the NodeKind for Summary | ||
var KindSummary = ast.NewNodeKind("Summary") | ||
|
||
// Kind implements Node.Kind. | ||
func (n *Summary) Kind() ast.NodeKind { | ||
return KindSummary | ||
} | ||
|
||
// NewSummary returns a new Summary node. | ||
func NewSummary() *Summary { | ||
return &Summary{ | ||
BaseBlock: ast.BaseBlock{}, | ||
} | ||
} | ||
|
||
// IsSummary returns true if the given node implements the Summary interface, | ||
// otherwise false. | ||
func IsSummary(node ast.Node) bool { | ||
_, ok := node.(*Summary) | ||
return ok | ||
} | ||
|
||
// Icon is an inline for a fomantic icon | ||
type Icon struct { | ||
ast.BaseInline | ||
Name []byte | ||
} | ||
|
||
// Dump implements Node.Dump . | ||
func (n *Icon) Dump(source []byte, level int) { | ||
m := map[string]string{} | ||
m["Name"] = string(n.Name) | ||
ast.DumpHelper(n, source, level, m, nil) | ||
} | ||
|
||
// KindIcon is the NodeKind for Icon | ||
var KindIcon = ast.NewNodeKind("Icon") | ||
|
||
// Kind implements Node.Kind. | ||
func (n *Icon) Kind() ast.NodeKind { | ||
return KindIcon | ||
} | ||
|
||
// NewIcon returns a new Paragraph node. | ||
func NewIcon(name string) *Icon { | ||
return &Icon{ | ||
BaseInline: ast.BaseInline{}, | ||
Name: []byte(name), | ||
} | ||
} | ||
|
||
// IsIcon returns true if the given node implements the Icon interface, | ||
// otherwise false. | ||
func IsIcon(node ast.Node) bool { | ||
_, ok := node.(*Icon) | ||
return ok | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.