# HG changeset patch # User Franz Glasner # Date 1776720507 -7200 # Node ID bb2fd6d4ad695cd8ceef0664314a9538dbfad0b2 # Parent b42168cc9884c3a6e465f6725079790bc682c71e More arrows diff -r b42168cc9884 -r bb2fd6d4ad69 pygments_lexer_pseudocode2/__init__.py --- a/pygments_lexer_pseudocode2/__init__.py Mon Apr 20 17:42:32 2026 +0200 +++ b/pygments_lexer_pseudocode2/__init__.py Mon Apr 20 23:28:27 2026 +0200 @@ -44,6 +44,8 @@ '<-': '←', '->': '→', '=>': '⇒', + '<->': '↔', + '<=>': '⇔', '^': '↑', } @@ -94,7 +96,7 @@ Name.Constant), # Operators - (r'(<=|>=|<>|!=|<-|->|=>|\^|\*|\+|-|\/|<|>|=|\\\\|mod|←|↑|≤|≥|≠|÷|×|\.\.|\[|\]|\.|non|xou|et|ou)', + (r'(<->|<=>|<=|>=|<>|!=|<-|->|=>|\^|\*|\+|-|\/|<|>|=|\\\\|mod|←|↑|≤|≥|≠|÷|×|\.\.|\[|\]|\.|non|xou|et|ou)', op_replace), (r'(\(|\)|\,|\;|:)', @@ -113,7 +115,7 @@ (r'"([^"])*"', String.Double), (r"'([^'])*'", String.Single), ], -# +# # This is stolen from the Pygment's Python lexer. # # SPDX-SnippetBegin diff -r b42168cc9884 -r bb2fd6d4ad69 tests/test_fr.py --- a/tests/test_fr.py Mon Apr 20 17:42:32 2026 +0200 +++ b/tests/test_fr.py Mon Apr 20 23:28:27 2026 +0200 @@ -34,7 +34,8 @@ 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)) @@ -56,11 +57,16 @@ 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", " "), @@ -83,13 +89,17 @@ ("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", " "), @@ -112,13 +122,17 @@ ("Operator", "="), ("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", " "), @@ -141,6 +155,10 @@ ("Operator", "="), ("Text", " "), ("Operator", "<"), + ("Text", " "), + ("Operator", "⇔"), + ("Text", " "), + ("Operator", "↔"), ("Text", " \n"), ], tokens)