From aea07c141b3a2448ea367ad80ad5e12d04a78df7 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Sat, 13 Dec 2025 18:09:40 +0100 Subject: refactor(markdown): use new dom package to create html --- markdown/ast_heading.go | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) create mode 100644 markdown/ast_heading.go (limited to 'markdown/ast_heading.go') diff --git a/markdown/ast_heading.go b/markdown/ast_heading.go new file mode 100644 index 0000000..5ad7adb --- /dev/null +++ b/markdown/ast_heading.go @@ -0,0 +1,44 @@ +package markdown + +import ( + "errors" + "html/template" + "strings" + + "git.anhgelus.world/anhgelus/small-web/dom" +) + +var ErrInvalidHeader = errors.New("invalid header") + +type astHeader struct { + level uint + content *astParagraph +} + +func (a *astHeader) Eval(opt *Option) (template.HTML, *ParseError) { + if a.level > 6 { + return "", &ParseError{lxs: lexers{}, internal: ErrInvalidCodeFormat} + } + var content template.HTML + content, err := a.content.Eval(opt) + if err != nil { + return "", err + } + return dom.NewHeading( + a.level, + template.HTML(strings.TrimSpace(string(content))), + ).Render(), nil +} + +func header(lxs *lexers) (*astHeader, *ParseError) { + b := &astHeader{level: uint(len(lxs.Current().Value))} + if !lxs.Next() { + return nil, &ParseError{lxs: *lxs, internal: ErrInvalidHeader} + } + var err *ParseError + b.content, err = paragraph(lxs, true) + if err != nil { + return nil, err + } + return b, nil +} -- cgit v1.2.3 From 48311424ba2eaac254864c008b6d18e8510f827d Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Sat, 13 Dec 2025 18:11:04 +0100 Subject: style(markdown): rename header into heading --- markdown/ast_heading.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'markdown/ast_heading.go') diff --git a/markdown/ast_heading.go b/markdown/ast_heading.go index 5ad7adb..206ff94 100644 --- a/markdown/ast_heading.go +++ b/markdown/ast_heading.go @@ -10,12 +10,12 @@ import ( var ErrInvalidHeader = errors.New("invalid header") -type astHeader struct { +type astHeading struct { level uint content *astParagraph } -func (a *astHeader) Eval(opt *Option) (template.HTML, *ParseError) { +func (a *astHeading) Eval(opt *Option) (template.HTML, *ParseError) { if a.level > 6 { return "", &ParseError{lxs: lexers{}, internal: ErrInvalidCodeFormat} } @@ -30,8 +30,8 @@ func (a *astHeader) Eval(opt *Option) (template.HTML, *ParseError) { ).Render(), nil } -func header(lxs *lexers) (*astHeader, *ParseError) { - b := &astHeader{level: uint(len(lxs.Current().Value))} +func heading(lxs *lexers) (*astHeading, *ParseError) { + b := &astHeading{level: uint(len(lxs.Current().Value))} if !lxs.Next() { return nil, &ParseError{lxs: *lxs, internal: ErrInvalidHeader} } -- cgit v1.2.3