diff options
Diffstat (limited to 'mardown/ast_header.go')
| -rw-r--r-- | mardown/ast_header.go | 32 |
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 } |
