diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-30 20:06:54 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-09-30 20:06:54 +0200 |
| commit | 1d524762bc56950a85aa748aa873901621741dc7 (patch) | |
| tree | b896618b8d4bb138de36d52d8833768f83689333 /mardown/ast.go | |
| parent | 9b6eb662150adbcd5ffe293a8719ffc4d7c14996 (diff) | |
refactor(markdown): create top layer type paragraph
Diffstat (limited to 'mardown/ast.go')
| -rw-r--r-- | mardown/ast.go | 26 |
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)) } |
