# HG changeset patch # User Franz Glasner # Date 1777394007 -7200 # Node ID 5517b0be67f038ca9644668518d91fa8c0a7f96a # Parent b3dd247b27a557233826ec8b70e49a6afc701265 Basic "\TEXT" escape for expressions diff -r b3dd247b27a5 -r 5517b0be67f0 pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Tue Apr 28 15:25:10 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Tue Apr 28 18:33:27 2026 +0200 @@ -192,8 +192,15 @@ "expr": [ include("py-strings"), include("py-numbers"), + (r"(?i)\\text\s*\{", LexBase.op_ignore, "expr-text"), include("py-name"), - ] + ], + "expr-text": [ + (r"[^\\}]+", Text), + (r"\\\}", Text), + (r"\\", Text), + (r"\}", LexBase.op_ignore, "#pop"), + ], } def __init__(self, **options): diff -r b3dd247b27a5 -r 5517b0be67f0 tests/test_algpseudo.py --- a/tests/test_algpseudo.py Tue Apr 28 15:25:10 2026 +0200 +++ b/tests/test_algpseudo.py Tue Apr 28 18:33:27 2026 +0200 @@ -283,6 +283,53 @@ \\Rem the remark 2 """, self.lexer)) + def test_expr_and_text(self): + self.assertTokenStreamEqualComplete( + [("Name.Entity", "a"), + ("Text", " "), + ("Text", "multiplied by"), + ("Text", " "), + ("Name.Entity", "b"), + ("Text", " "), + ("Text", "is"), + ("Text", " "), + ("Number.Integer", "0"), + ("Text", " "), + ("Text", "mod"), + ("Text", " "), + ("Name.Entity", "p"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + r"""a \TEXT{multiplied by} b \text{is} 0 \text{mod} p""", + self.lexer)) + + def test_expr_and_text_with_escaped_characters(self): + self.assertTokenStreamEqualComplete( + [("Name.Entity", "a"), + ("Text", " "), + ("Text", "multiplied by {escaped"), + ("Text", "\\}"), + ("Text", " "), + ("Text", " "), + ("Name.Entity", "b"), + ("Text", " "), + ("Text", "is "), + ("Text", "\\"), + ("Text", " not"), + ("Text", " "), + ("Number.Integer", "0"), + ("Text", " "), + ("Text", "mod"), + ("Text", " "), + ("Name.Entity", "p"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + r"""a \TEXT{multiplied by {escaped\} } b \text{is \ not} 0""" + r" \text{mod} p""", + self.lexer)) + class PygmentizeCompletely(unittest.TestCase):