diff options
| -rw-r--r-- | mardown/ast_modifier.go | 8 | ||||
| -rw-r--r-- | mardown/error.go | 20 |
2 files changed, 17 insertions, 11 deletions
diff --git a/mardown/ast_modifier.go b/mardown/ast_modifier.go index 93a5af3..36c6193 100644 --- a/mardown/ast_modifier.go +++ b/mardown/ast_modifier.go @@ -8,7 +8,7 @@ import ( ) var ( - ErrInvalidModifier = errors.Join(ErrInvalidParagraph, errors.New("invalid modifier organization")) + ErrInvalidUsage = errors.Join(ErrInvalidParagraph, errors.New("invalid modifier usage")) ErrInvalidTypeInModifier = errors.Join(ErrInvalidParagraph, errors.New("invalid type in modifier")) ) @@ -110,7 +110,7 @@ func modifier(lxs *lexers) (*astModifier, error) { case lexerBreak: lxs.Before() // because we did not use it if len(s) != 0 { - return nil, ErrInvalidModifier + return nil, ErrInvalidUsage } return mod, nil case lexerExternal: @@ -128,7 +128,7 @@ func modifier(lxs *lexers) (*astModifier, error) { } } if len(s) != 0 { - return nil, ErrInvalidModifier + return nil, ErrInvalidUsage } return mod, nil } @@ -144,7 +144,7 @@ func modifierDetect(val string) (*astModifier, error) { case 3: mod.super = true default: - return nil, ErrInvalidModifier + return nil, ErrInvalidUsage } return mod, nil } diff --git a/mardown/error.go b/mardown/error.go index bdcd9df..ad279fe 100644 --- a/mardown/error.go +++ b/mardown/error.go @@ -24,14 +24,20 @@ func (e *ParseError) Pretty() string { ind := "" for lxs.Next() && lxs.Current().Type != lexerBreak { contxt += lxs.Current().Value - ln := len(lxs.Current().Value) - if lxs.current == current-1 { - ln-- - ind += "^" - } - for range ln { - ind += "~" + if lxs.current <= current { + ch := "~" + if lxs.current == current { + ch = "^" + } + for range len(lxs.Current().Value) { + ind += ch + } } } + if lxs.current == current { + runes := []rune(ind) + runes[len(runes)-1] = '^' + ind = string(runes) + } return fmt.Sprintf("%v\n\n%s\n%s", e, contxt, ind) } |
