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.go23
1 files changed, 21 insertions, 2 deletions
diff --git a/mardown/ast_header.go b/mardown/ast_header.go
index c7bc85d..7c997d5 100644
--- a/mardown/ast_header.go
+++ b/mardown/ast_header.go
@@ -1,12 +1,31 @@
package mardown
+import (
+ "errors"
+ "fmt"
+ "html/template"
+)
+
+var ErrInvalidHeader = errors.New("invalid header")
+
type astHeader struct {
level uint
content []block
}
-func (a *astHeader) Eval() error {
- return nil
+func (a *astHeader) Eval() (template.HTML, error) {
+ if a.level > 6 {
+ return "", ErrInvalidHeader
+ }
+ var content template.HTML
+ for _, b := range a.content {
+ c, err := b.Eval()
+ if err != nil {
+ return "", err
+ }
+ content += c
+ }
+ return template.HTML(fmt.Sprintf("<h%d>%s<h%d>", a.level, content, a.level)), nil
}
func header(lxs lexers) (block, error) {