Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
diff tests/test_algpseudo.py @ 285:afbca50b7dc1
Implement an alternate syntax for "Explicit Token Types".
Uses a generic two-argument syntax and allows escaping of characters using
the common excaping rules.
For this to work the AlgPseudocodeLexer is now based on Pygment's
ExtendedRegexLexer instead of RegexLexer.
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Wed, 20 May 2026 20:35:37 +0200 |
| parents | ee512932d603 |
| children | 051c8877ee22 |
line wrap: on
line diff
--- a/tests/test_algpseudo.py Wed May 20 20:32:42 2026 +0200 +++ b/tests/test_algpseudo.py Wed May 20 20:35:37 2026 +0200 @@ -750,6 +750,78 @@ r"""\ttx-non-existing[a_Decorator]""", self.lexer)) + def test_extended_explicit_tokentype_empty(self): + self.assertTokenStreamEqualComplete( + [("Text.Whitespace", "\n")], + pygments.lex( + r"""\ttX{nd}{}""", self.lexer)) + + def test_extended_explicit_tokentype_simple(self): + self.assertTokenStreamEqualComplete( + [("Name.Decorator", "simple\nline 2"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + """\\ttX{nd}{simple\nline 2}""", self.lexer)) + + def test_extended_explicit_tokentype_escaped_brace(self): + self.assertTokenStreamEqualComplete( + [("Name.Decorator", "simple"), + ("Name.Decorator", "}"), + ("Name.Decorator", "part 2"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + """\\ttX{nd}{simple\\}part 2}""", self.lexer)) + + def test_extended_explicit_tokentype_escaped_backslash(self): + self.assertTokenStreamEqualComplete( + [("Name.Decorator", "simple"), + ("Name.Decorator", "\\"), + ("Name.Decorator", "part 2"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + """\\ttX{nd}{simple\\\\part 2}""", self.lexer)) + + def test_extended_explicit_tokentype_single_backslash(self): + self.assertTokenStreamEqualComplete( + [("Name.Variable", "simple"), + ("Generic.Error", "\\"), + ("Name.Variable", "part 2"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + """\\ttX{nv}{simple\\part 2}""", self.lexer)) + + def test_extended_explicit_tokentype_non_existing_type(self): + self.assertTokenStreamEqualComplete( + [("Generic.Error", u"\\ttX{NON_EXISTING}{"), + ("Generic.Error", u"∈_∌"), + ("Generic.Error", u"}"), + ("Punctuation", "("), + ("Name.Entity", "p1"), + ("Punctuation", ","), + ("Text", " "), + ("Name.Entity", "p2"), + ("Punctuation", ")"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + u"\\ttX{NON_EXISTING}{∈_∌}(p1, p2)", self.lexer)) + + def test_just_braces_in_expressions(self): + self.assertTokenStreamEqualComplete( + [("Punctuation", "{"), + ("Name.Entity", "foo"), + ("Text", " "), + ("Name.Entity", "bar"), + ("Punctuation", "}"), + ("Text.Whitespace", "\n"), + ], + pygments.lex( + r"{foo bar}", self.lexer)) + def test_end_combinations(self): self.assertTokenStreamEqualComplete( [("Keyword", "BEGIN"),
