aboutsummaryrefslogtreecommitdiff
path: root/mardown/ast.go
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-09-30 20:06:54 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2025-09-30 20:06:54 +0200
commit1d524762bc56950a85aa748aa873901621741dc7 (patch)
treeb896618b8d4bb138de36d52d8833768f83689333 /mardown/ast.go
parent9b6eb662150adbcd5ffe293a8719ffc4d7c14996 (diff)
refactor(markdown): create top layer type paragraph
Diffstat (limited to 'mardown/ast.go')
-rw-r--r--mardown/ast.go26
1 files changed, 18 insertions, 8 deletions
diff --git a/mardown/ast.go b/mardown/ast.go
index fb78113..602d21e 100644
--- a/mardown/ast.go
+++ b/mardown/ast.go
@@ -22,30 +22,40 @@ func (t *tree) Eval() (template.HTML, error) {
func ast(lxs lexers) (*tree, error) {
tr := new(tree)
+ newLine := false
for lxs.Next() {
- b, err := getBlock(lxs)
+ b, err := getBlock(lxs, newLine)
if err != nil {
return nil, err
}
tr.blocks = append(tr.blocks, b)
+ newLine = lxs.Current().Type == lexerBreak
}
return tr, nil
}
-func getBlock(lxs lexers) (block, error) {
+func getBlock(lxs lexers, newLine bool) (block, error) {
var b block
var err error
switch lxs.Current().Type {
case lexerHeader:
b, err = header(lxs)
case lexerExternal:
- case lexerModifier:
- case lexerCode:
- case lexerEscape:
+ if newLine && lxs.Current().Value == "!" {
+ //TODO: handle
+ } else {
+ b, err = paragraph(lxs)
+ }
case lexerQuote:
- case lexerBreak:
- case lexerLiteral:
- b = astLiteral(lxs.Current().Value)
+ case lexerCode:
+ if newLine && len(lxs.Current().Value) == 3 {
+ //TODO: handle
+ } else {
+ b, err = paragraph(lxs)
+ }
+ case lexerLiteral, lexerEscape, lexerModifier:
+ b, err = paragraph(lxs)
+ case lexerBreak: // do nothing
default:
err = errors.Join(ErrUnkownLexType, fmt.Errorf("type received: %s", lxs.Current().Type))
}