diff --git a/mistletoe/block_tokens.py b/mistletoe/block_tokens.py index f0f8d3a..05c6df3 100644 --- a/mistletoe/block_tokens.py +++ b/mistletoe/block_tokens.py @@ -472,6 +472,8 @@ class CodeFence(BlockToken): """Code fence. (["```sh\\n", "rm -rf /", ..., "```"]) Boundary between span-level and block-level tokens. + + See """ children: ListType[Token] = attr.ib( @@ -487,14 +489,18 @@ class CodeFence(BlockToken): metadata={"doc": "Line position in source text (start, end)"} ) - pattern = re.compile(r"^( {0,3})((?:`|~){3,}) *([^`~\s]*) *([^`~]*)$") + # Tildes and backticks cannot be mixed. + pattern_tick = re.compile(r"^( {0,3})(`{3,}) *([^`\s]*) *([^`]*)$") + pattern_tilde = re.compile(r"^( {0,3})(~{3,}) *([^~\s]*) *([^~]*)$") _open_info = None @classmethod def start(cls, line): - match_obj = cls.pattern.match(line) + match_obj = cls.pattern_tick.match(line) if not match_obj: - return False + match_obj = cls.pattern_tilde.match(line) + if not match_obj: + return False prepend, leader, lang, arguments = match_obj.groups() if leader[0] in lang or leader[0] in line[match_obj.end() :]: return False diff --git a/mistletoe/cli/benchmark.py b/mistletoe/cli/benchmark.py index 367d19b..8c27ebf 100755 --- a/mistletoe/cli/benchmark.py +++ b/mistletoe/cli/benchmark.py @@ -10,7 +10,7 @@ commonmark_context = parse_context.ParseContext( find_blocks=token_sets.get_commonmark_block_tokens(), - find_spans=token_sets.get_extended_span_tokens(), + find_spans=token_sets.get_commonmark_span_tokens(), ) extended_context = parse_context.ParseContext( find_blocks=token_sets.get_extended_block_tokens(),