Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
changeset 76:27e12387154d
FIX: Handle escape character more thoroughly: also explicitely handle "\\"
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Thu, 30 Apr 2026 09:20:35 +0200 |
| parents | 711f8d19e27a |
| children | 1a5e192aa950 |
| files | pygments_lexer_pseudocode2/algpseudocode.py tests/test_algpseudo.py |
| diffstat | 2 files changed, 21 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/algpseudocode.py Wed Apr 29 12:43:28 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Thu Apr 30 09:20:35 2026 +0200 @@ -197,12 +197,14 @@ "entity-name": [ # may be multiline (r"[^\\}]+", Name.Entity), (r"\\\}", LexBase.op_fixed(Name.Entity, "}")), + (r"\\\\", LexBase.op_fixed(Name.Entity, "\\")), (r"\\", LexBase.op_fixed(Name.Entity, "\\")), (r"\}", LexBase.op_ignore, "#pop"), ], "entity-name-end": [ # may be multiline -- suppressed if no_end (r"[^\\}]+", op_opt_ignore(Name.Entity)), (r"\\\}", op_opt_ignore_or_fixed(Name.Entity, "}")), + (r"\\\\", op_opt_ignore_or_fixed(Name.Entity, "\\")), (r"\\", op_opt_ignore_or_fixed(Name.Entity, "\\")), (r"\}", LexBase.op_ignore, "#pop"), ], @@ -220,6 +222,8 @@ (r"\}", LexBase.op_ignore, "#pop"), (r"\n", Whitespace), include("expr-in-braces"), + (r"\\\\", LexBase.op_fixed(Text, "\\")), + (r"\\", LexBase.op_fixed(Text, "\\")), (r"\s+", Text), ], "expr-in-braces": [
--- a/tests/test_algpseudo.py Wed Apr 29 12:43:28 2026 +0200 +++ b/tests/test_algpseudo.py Thu Apr 30 09:20:35 2026 +0200 @@ -362,6 +362,23 @@ ], pygments.lex(r"\block{\text{a b c}}", self.lexer)) + def test_block_with_escaped_text(self): + self.assertTokenStreamEqualComplete( + [("Text", "◆"), + ("Text.Whitespace", " "), + ("Text", "\\"), + ("Name.Entity", "text"), + ("Punctuation", "{"), + ("Name.Entity", "a"), + ("Text", " "), + ("Name.Entity", "b"), + ("Text", " "), + ("Name.Entity", "c"), + ("Punctuation", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex(r"\block{\\text{a b c\}}", self.lexer)) + def test_block(self): self.assertTokenStreamEqualComplete( [("Text", "◆"),
