diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-30 21:29:07 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-30 21:29:07 +0200 |
| commit | c4ba44b1c3e066f98ccc406c15a8c1de170e4709 (patch) | |
| tree | b4974a5acdf11c0aaddb0d5d9526bfa62e35b9c9 /mardown | |
| parent | 3d3ccdec245b5a5d1c1f01d0b6972959332c882e (diff) | |
fix(markdown): bad condition in finished lexer and missing return value in ast
Diffstat (limited to 'mardown')
| -rw-r--r-- | mardown/ast.go | 20 | ||||
| -rw-r--r-- | mardown/ast_test.go | 20 | ||||
| -rw-r--r-- | mardown/lexer.go | 2 |
3 files changed, 39 insertions, 3 deletions
diff --git a/mardown/ast.go b/mardown/ast.go index d9d2b1d..298b313 100644 --- a/mardown/ast.go +++ b/mardown/ast.go @@ -1,6 +1,7 @@ package mardown import ( + "encoding/json" "errors" "fmt" "html/template" @@ -17,7 +18,20 @@ type tree struct { } func (t *tree) Eval() (template.HTML, error) { - return "", nil + var content template.HTML + for _, c := range t.blocks { + ct, err := c.Eval() + if err != nil { + return "", err + } + content += ct + } + return content, nil +} + +func (t *tree) String() string { + b, _ := json.MarshalIndent(t, "", " ") + return string(b) } func ast(lxs *lexers) (*tree, error) { @@ -29,7 +43,9 @@ func ast(lxs *lexers) (*tree, error) { return nil, err } tr.blocks = append(tr.blocks, b) - newLine = lxs.Current().Type == lexerBreak + if !lxs.Finished() { + newLine = lxs.Current().Type == lexerBreak + } } return tr, nil } diff --git a/mardown/ast_test.go b/mardown/ast_test.go new file mode 100644 index 0000000..11a9639 --- /dev/null +++ b/mardown/ast_test.go @@ -0,0 +1,20 @@ +package mardown + +import "testing" + +func TestAst(t *testing.T) { + content := "bonsoir" + lxs := lex(content) + tree, err := ast(lxs) + if err != nil { + t.Fatal(err) + } + c, err := tree.Eval() + if err != nil { + t.Fatal(err) + } + if c != "<p>bonsoir</p>" { + t.Errorf("failed, got %s", c) + t.Logf("lxs: %s\ntree: %s", lxs, tree) + } +} diff --git a/mardown/lexer.go b/mardown/lexer.go index 7ab393f..4eaaf16 100644 --- a/mardown/lexer.go +++ b/mardown/lexer.go @@ -42,7 +42,7 @@ func (l *lexers) Current() lexer { } func (l *lexers) Finished() bool { - return l.current >= len(l.lexers)-1 + return l.current >= len(l.lexers) } func (l *lexers) String() string { |
