From 21dd71949b05d84ef6ee2f05610ec7254f1086f0 Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Thu, 2 Oct 2025 15:06:42 +0200 Subject: feat(markdown): custom error display --- mardown/error.go | 38 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 38 insertions(+) create mode 100644 mardown/error.go (limited to 'mardown/error.go') diff --git a/mardown/error.go b/mardown/error.go new file mode 100644 index 0000000..f85dfbb --- /dev/null +++ b/mardown/error.go @@ -0,0 +1,38 @@ +package mardown + +import "fmt" + +type ParseError struct { + internal error + lxs lexers +} + +func (e *ParseError) Error() string { + return e.internal.Error() +} + +func (e *ParseError) Pretty() string { + lxs := e.lxs + if lxs.lexers == nil { + return e.internal.Error() + } + current := lxs.current - 1 + for lxs.Before() && lxs.Current().Type != lexerBreak { + } + current -= lxs.current + contxt := "" + ind := "" + for lxs.Next() && lxs.Current().Type != lexerBreak { + contxt += lxs.Current().Value + if lxs.current < current { + if lxs.current == current-2 { + ind += "^" + } else { + for range len(lxs.Current().Value) { + ind += "~" + } + } + } + } + return fmt.Sprintf("%v\n\n%s\n%s", e, contxt, ind) +} -- cgit v1.2.3