changeset 92:3f37832c405d

FIX: Wrong state for \TEXT command
author Franz Glasner <fzglas.hg@dom66.de>
date Sun, 03 May 2026 13:59:16 +0200
parents feb41c8d72d2
children 84c0f761c836
files pygments_lexer_pseudocode2/algpseudocode.py tests/test_algpseudo.py
diffstat 2 files changed, 19 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/algpseudocode.py	Sat May 02 14:55:15 2026 +0200
+++ b/pygments_lexer_pseudocode2/algpseudocode.py	Sun May 03 13:59:16 2026 +0200
@@ -301,9 +301,9 @@
             (r"\}", LexBase.op_ignore, "#pop"),
             (r"\n", Whitespace),
             (r"\\\}", LexBase.op_fixed(Text, "}")),
-            (r"(?:i)\\(expr(?:ession)?)[ \t]*(\{)",
-             bygroups(LexBase.op_ignore, LexBase.op_ignore),
-             "expr-in-braces"),
+            (r"(?i)\\expr(?:ession)?[ \t]*\{",
+             LexBase.op_ignore,
+             "block-expr"),
             include("explicit-tokentype"),
             (r"\\\\", LexBase.op_fixed(Text, "\\")),
             (r"\\", LexBase.op_fixed(Text, "\\")),
--- a/tests/test_algpseudo.py	Sat May 02 14:55:15 2026 +0200
+++ b/tests/test_algpseudo.py	Sun May 03 13:59:16 2026 +0200
@@ -452,6 +452,22 @@
              ],
             pygments.lex(r"\tstate{a 1.2 \\expr{x in X\} c}", self.lexer))
 
+    def test_text_in_expr(self):
+        self.assertTokenStreamEqualComplete(
+            [("Name.Entity", "first"),
+             ("Text", " "),
+             ("Name.Entity", "expression"),
+             ("Text", "  "),
+             ("Name.Entity", "second"),
+             ("Text", " "),
+             ("Name.Entity", "expression"),
+             ("Text.Whitespace", "\n"),
+             ],
+            pygments.lex(
+                r"\TEXT{\EXPRESSION{first expression}  "
+                r"\EXPR{second expression}}",
+                self.lexer))
+
     def test_explicit_extended_single_tokentype_1(self):
         self.assertTokenStreamEqualComplete(
             [("Operator", "%"),