From 96f395276f524105ff281c40413c883b55d3e9da Mon Sep 17 00:00:00 2001 From: Anhgelus Morhtuuzh Date: Tue, 30 Sep 2025 21:40:34 +0200 Subject: fix(markdown): invalid modifier organization --- mardown/ast_modifier.go | 9 +++++++-- mardown/ast_test.go | 14 ++++++++++++++ 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/mardown/ast_modifier.go b/mardown/ast_modifier.go index b9e53a1..7437ab8 100644 --- a/mardown/ast_modifier.go +++ b/mardown/ast_modifier.go @@ -57,13 +57,13 @@ func modifier(lxs *lexers) (*astModifier, error) { } } } - n := len(modInside.symbols) var s string for lxs.Next() { switch lxs.Current().Type { case lexerLiteral: s += lxs.Current().Value case lexerModifier: + n := len(modInside.symbols) if len(lxs.Current().Value) < n { return nil, ErrInvalidModifier } @@ -92,8 +92,13 @@ func modifierDetect(val string) *astModifier { return mod } if val[:2] == "**" || val[:2] == "__" { - mod.symbols = val + mod.symbols = val[:2] mod.tag = boldTag + if len(val) > 2 { + next := modifierDetect(val[2:]) + next.parent = mod + mod.content = append(mod.content, next) + } } else { mod = modifierDetect(val[:1]) next := modifierDetect(val[1:]) diff --git a/mardown/ast_test.go b/mardown/ast_test.go index 11a9639..6712497 100644 --- a/mardown/ast_test.go +++ b/mardown/ast_test.go @@ -17,4 +17,18 @@ func TestAst(t *testing.T) { t.Errorf("failed, got %s", c) t.Logf("lxs: %s\ntree: %s", lxs, tree) } + content = "***bon*soir**" + lxs = lex(content) + tree, err = ast(lxs) + if err != nil { + t.Fatal(err) + } + c, err = tree.Eval() + if err != nil { + t.Fatal(err) + } + if c != "

bonsoir

" { + t.Errorf("failed, got %s", c) + t.Logf("lxs: %s\ntree: %s", lxs, tree) + } } -- cgit v1.2.3