Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
changeset 19:2e67c4eae6d9
Use an alternate replace algorithm with a dict
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Mon, 20 Apr 2026 15:25:45 +0200 |
| parents | 859ab8abce0a |
| children | 3db60b64abf6 |
| files | pygments_lexer_pseudocode2/__init__.py tests/test_fr.py |
| diffstat | 2 files changed, 43 insertions(+), 14 deletions(-) [+] |
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/__init__.py Mon Apr 20 14:12:35 2026 +0200 +++ b/pygments_lexer_pseudocode2/__init__.py Mon Apr 20 15:25:45 2026 +0200 @@ -36,16 +36,21 @@ mimetypes = [] flags = re.IGNORECASE + REPLACEMENTS = { + '<=': '≤', + '>=': '≥', + '<>': '≠', + '<-': '←', + '^': '↑', + } + def op_replace(lexer, match): op = match.group(0) - - S = ('<=', '>=', '<>', '<-', '^') - R = ('≤', '≥', '≠', '←', '↑') - - if op in S: - op = R[S.index(op)] - - yield match.start(), Operator, op + opr = lexer.REPLACEMENTS.get(op) + if opr is None: + yield match.start(), Operator, op + else: + yield match.start(), Operator, opr def scomment(lexer, match): s = match.group(1).lower().strip()
--- a/tests/test_fr.py Mon Apr 20 14:12:35 2026 +0200 +++ b/tests/test_fr.py Mon Apr 20 15:25:45 2026 +0200 @@ -34,7 +34,7 @@ self.assertRaises(StopIteration, next, tokens) def test_op_replace(self): - tokens = pygments.lex("<= >= <> <- ^", self.lexer) + tokens = pygments.lex("<= >= <> <- ^ < = >", self.lexer) self.assertEqual((Token.Operator, "≤"), next(tokens)) self.assertEqual((Token.Text, " "), next(tokens)) self.assertEqual((Token.Operator, "≥"), next(tokens)) @@ -44,11 +44,17 @@ self.assertEqual((Token.Operator, "←"), next(tokens)) self.assertEqual((Token.Text, " "), next(tokens)) self.assertEqual((Token.Operator, "↑"), next(tokens)) + self.assertEqual((Token.Text, " "), next(tokens)) + self.assertEqual((Token.Operator, "<"), next(tokens)) + self.assertEqual((Token.Text, " "), next(tokens)) + self.assertEqual((Token.Operator, "="), next(tokens)) + self.assertEqual((Token.Text, " "), next(tokens)) + self.assertEqual((Token.Operator, ">"), next(tokens)) self.assertEqual((Token.Text, "\n"), next(tokens)) self.assertRaises(StopIteration, next, tokens) def test_op_replace_list(self): - tokens = pygments.lex("<= >= <> <- ^", self.lexer) + tokens = pygments.lex("<= >= <> <- ^ < = >", self.lexer) self.assertTokenStreamEqual( [("Token.Operator", "≤"), ("Token.Text", " "), @@ -59,13 +65,19 @@ ("Token.Operator", "←"), ("Token.Text", " "), ("Token.Operator", "↑"), + ("Token.Text", " "), + ("Token.Operator", "<"), + ("Token.Text", " "), + ("Token.Operator", "="), + ("Token.Text", " "), + ("Token.Operator", ">"), ("Token.Text", "\n"), ], tokens) self.assertRaises(StopIteration, next, tokens) def test_op_replace_list_with_short_names(self): - tokens = pygments.lex("<= >= <> <- ^", self.lexer) + tokens = pygments.lex("<= >= <> <- ^ < = > ", self.lexer) self.assertTokenStreamEqual( [("Operator", "≤"), ("Text", " "), @@ -76,13 +88,19 @@ ("Operator", "←"), ("Text", " "), ("Operator", "↑"), - ("Text", "\n"), + ("Text", " "), + ("Operator", "<"), + ("Text", " "), + ("Operator", "="), + ("Text", " "), + ("Operator", ">"), + ("Text", " \n"), ], tokens) self.assertRaises(StopIteration, next, tokens) def test_op_replace_complete(self): - tokens = pygments.lex("<= >= <> <- ^", self.lexer) + tokens = pygments.lex("<= >= <> <- ^ > = < ", self.lexer) self.assertTokenStreamEqualComplete( [("Operator", "≤"), ("Text", " "), @@ -93,7 +111,13 @@ ("Operator", "←"), ("Text", " "), ("Operator", "↑"), - ("Text", "\n"), + ("Text", " "), + ("Operator", ">"), + ("Text", " "), + ("Operator", "="), + ("Text", " "), + ("Operator", "<"), + ("Text", " \n"), ], tokens)
