diff options
| author | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-02 15:06:42 +0200 |
|---|---|---|
| committer | Anhgelus Morhtuuzh <william@herges.fr> | 2025-10-02 15:06:42 +0200 |
| commit | 21dd71949b05d84ef6ee2f05610ec7254f1086f0 (patch) | |
| tree | 72f94b52067774eed8264c5468b3b8a32b8553ef /mardown/ast.go | |
| parent | be4cea404c15979112653cd4d75784aab527f22c (diff) | |
feat(markdown): custom error display
Diffstat (limited to 'mardown/ast.go')
| -rw-r--r-- | mardown/ast.go | 17 |
1 files changed, 10 insertions, 7 deletions
diff --git a/mardown/ast.go b/mardown/ast.go index ed4d1f8..ceeec6f 100644 --- a/mardown/ast.go +++ b/mardown/ast.go @@ -11,14 +11,14 @@ import ( var ErrUnkownLexType = errors.New("unkown lex type") type block interface { - Eval() (template.HTML, error) + Eval() (template.HTML, *ParseError) } type tree struct { blocks []block } -func (t *tree) Eval() (template.HTML, error) { +func (t *tree) Eval() (template.HTML, *ParseError) { var content template.HTML for _, c := range t.blocks { ct, err := c.Eval() @@ -35,7 +35,7 @@ func (t *tree) String() string { return string(b) } -func ast(lxs *lexers) (*tree, error) { +func ast(lxs *lexers) (*tree, *ParseError) { tr := new(tree) newLine := true for lxs.Next() { @@ -53,9 +53,9 @@ func ast(lxs *lexers) (*tree, error) { return tr, nil } -func getBlock(lxs *lexers, newLine bool) (block, error) { +func getBlock(lxs *lexers, newLine bool) (block, *ParseError) { var b block - var err error + var err *ParseError switch lxs.Current().Type { case lexerHeader: if !newLine { @@ -83,7 +83,7 @@ func getBlock(lxs *lexers, newLine bool) (block, error) { } case lexerCode: if !newLine && len(lxs.Current().Value) == 3 { - return nil, ErrInvalidCodeBlockPosition + return nil, &ParseError{lxs: *lxs, internal: ErrInvalidCodeBlockPosition} } if len(lxs.Current().Value) == 1 { b, err = paragraph(lxs, false) @@ -94,7 +94,10 @@ func getBlock(lxs *lexers, newLine bool) (block, error) { b, err = paragraph(lxs, false) case lexerBreak: // do nothing default: - err = errors.Join(ErrUnkownLexType, fmt.Errorf("type received: %s", lxs.Current().Type)) + err = &ParseError{ + lxs: *lxs, + internal: errors.Join(ErrUnkownLexType, fmt.Errorf("type received: %s", lxs.Current().Type)), + } } return b, err } |
