aboutsummaryrefslogtreecommitdiff
path: root/mardown/ast.go
diff options
context:
space:
mode:
authorAnhgelus Morhtuuzh <william@herges.fr>2025-10-02 15:06:42 +0200
committerAnhgelus Morhtuuzh <william@herges.fr>2025-10-02 15:06:42 +0200
commit21dd71949b05d84ef6ee2f05610ec7254f1086f0 (patch)
tree72f94b52067774eed8264c5468b3b8a32b8553ef /mardown/ast.go
parentbe4cea404c15979112653cd4d75784aab527f22c (diff)
feat(markdown): custom error display
Diffstat (limited to 'mardown/ast.go')
-rw-r--r--mardown/ast.go17
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
}