Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
changeset 70:5517b0be67f0
Basic "\TEXT" escape for expressions
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 28 Apr 2026 18:33:27 +0200 |
| parents | b3dd247b27a5 |
| children | 2ea86269e84e |
| files | pygments_lexer_pseudocode2/algpseudocode.py tests/test_algpseudo.py |
| diffstat | 2 files changed, 55 insertions(+), 1 deletions(-) [+] |
line wrap: on
line diff
--- 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):
--- 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):
