From 746e6e059f0d6897431e5339567d18789093d0c9 Mon Sep 17 00:00:00 2001 From: ll3006 Date: Wed, 8 Oct 2025 00:07:40 +0200 Subject: [PATCH] fix: inline parsing edge case with nested emphasis before this, parsing would differ from CommonMark reference implementation, giving '

**a_{b}**

' for '**a_{b}**'. changes: * decrease cur after deleting a delimiter with can_open = False * add test --- marko/inline_parser.py | 1 + tests/test_spec.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/marko/inline_parser.py b/marko/inline_parser.py index e4d5bd9..e73d7c6 100644 --- a/marko/inline_parser.py +++ b/marko/inline_parser.py @@ -437,6 +437,7 @@ def process_emphasis( underscore_bottom = bottom if not d_closer.can_open: delimiters.remove(d_closer) + cur = cur - 1 if cur > 0 else None cur = _next_closer(delimiters, cur) lower = stack_bottom + 1 if stack_bottom is not None else 0 del delimiters[lower:] diff --git a/tests/test_spec.py b/tests/test_spec.py index 2e72f56..22749fa 100644 --- a/tests/test_spec.py +++ b/tests/test_spec.py @@ -90,6 +90,11 @@ def gfm() -> Markdown: "![foo\nbar\nbaz](/image.png)", '

foo\nbar\nbaz

', ), + ( + "emphasis_underscore_in_strong", + "**a_{b}**", + "

a_{b}

", + ) ]