aboutsummaryrefslogtreecommitdiff
path: root/mardown/ast_header.go
diff options
context:
space:
mode:
Diffstat (limited to 'mardown/ast_header.go')
-rw-r--r--mardown/ast_header.go32
1 files changed, 9 insertions, 23 deletions
diff --git a/mardown/ast_header.go b/mardown/ast_header.go
index 7c997d5..07d7e1c 100644
--- a/mardown/ast_header.go
+++ b/mardown/ast_header.go
@@ -10,7 +10,7 @@ var ErrInvalidHeader = errors.New("invalid header")
type astHeader struct {
level uint
- content []block
+ content *astParagraph
}
func (a *astHeader) Eval() (template.HTML, error) {
@@ -18,33 +18,19 @@ func (a *astHeader) Eval() (template.HTML, error) {
return "", ErrInvalidHeader
}
var content template.HTML
- for _, b := range a.content {
- c, err := b.Eval()
- if err != nil {
- return "", err
- }
- content += c
+ content, err := a.content.Eval()
+ if err != nil {
+ return "", err
}
- return template.HTML(fmt.Sprintf("<h%d>%s<h%d>", a.level, content, a.level)), nil
+ return template.HTML(fmt.Sprintf("<h%d>%s</h%d>", a.level, content, a.level)), nil
}
func header(lxs lexers) (block, error) {
b := &astHeader{level: uint(len(lxs.Current().Value))}
- for lxs.Next() && lxs.Current().Type != lexerBreak {
- bl, err := getBlock(lxs)
- if err != nil {
- return nil, err
- }
- // if this is a header, just consider it as literal #
- if h, ok := bl.(*astHeader); ok {
- var s string
- for range h.level {
- s += "#"
- }
- b.content = append(b.content, astLiteral(s))
- b.content = append(b.content, h.content...)
- }
- b.content = append(b.content, bl)
+ var err error
+ b.content, err = paragraph(lxs, true)
+ if err != nil {
+ return nil, err
}
return b, nil
}