# HG changeset patch # User Franz Glasner # Date 1776691545 -7200 # Node ID 2e67c4eae6d975c7ef01ec15cc61e443ecee0d0a # Parent 859ab8abce0a81e464ad3c01cd98229d67e5067e Use an alternate replace algorithm with a dict diff -r 859ab8abce0a -r 2e67c4eae6d9 pygments_lexer_pseudocode2/__init__.py --- 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() diff -r 859ab8abce0a -r 2e67c4eae6d9 tests/test_fr.py --- 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)