# HG changeset patch # User Franz Glasner # Date 1777995529 -7200 # Node ID ec8767cc54938d292395251c445628b720b04e50 # Parent d6f3a1d1beddfc341220d407a52c0c617ad39dae More translations (FR and DE) diff -r d6f3a1d1bedd -r ec8767cc5493 pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Tue May 05 17:37:58 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Tue May 05 17:38:49 2026 +0200 @@ -503,6 +503,13 @@ class AlgPseudocodeLexer_DE(AlgPseudocodeLexer): + """ + + .. seealso:: + - https://de.wikipedia.org/wiki/Pseudocode + + """ + name = "AlgPseudocodeDE" aliases = ["algpseudocode-de", "algpseudo-de"] filenames = ["*.algpseudo-de", "*.algpseudocode-de"] @@ -522,11 +529,31 @@ "CLASS": "KLASSE", "IS": "IST", "WITH": "MIT", + "IF": "WENN", + "THEN": "DANN", + "ELSE": "ANDERNFALLS", + "ELSEIF": "ANDERNFALLS WENN", + "ELSIF": "ANDERNFALLS WENN", + "ELIF": "ANDERNFALLS WENN", +# "DO": # XXX TBD # in WHILE WHILE ... DO # noqa # in WHILE ... DO + "WHILE": "SOLANGE", + "FOR": "FÜR", + "FORALL": "FÜR ALLE", + "FROM": "VON", + "TO": "BIS", + "IN": "IN", + "STEP": "SCHRITTWEITE", +# "LOOP": XXX TBD # noqa + "REPEAT": "WIEDERHOLE", + "UNTIL": "BIS", +# "RETURN": XXX TBD # noqa + "BEGIN": "START", + "END": "ENDE", }) END_TRANSLATIONS = AlgPseudocodeLexer.END_TRANSLATIONS.copy() END_TRANSLATIONS.update({ "PROG": "ENDE DES PROGRAMMS", - "PROGRAM": "ENDE VON PROGRAMMS", + "PROGRAM": "ENDE DES PROGRAMMS", "ALGO": "ENDE DES ALGORITHMUS", "ALGORITHM": "ENDE DES ALGORITHMUS", "PROC": "ENDE DER PROZEDUR", @@ -535,12 +562,26 @@ "FUNCTION": "ENDE DER FUNKTION", "FN": "ENDE DER FUNKTION", "CLASS": "ENDE DER KLASSE", + "IF": "ENDE WENN", + "WHILE": "ENDE SOLANGE", + "FOR": "ENDE FÜR", + "FORALL": "ENDE FÜR ALLE", +# "LOOP": "ENDE XXX", # XXX TBD # noqa }) DEFAULT_END_PREFIX = "ENDE VON " class AlgPseudocodeLexer_FR(AlgPseudocodeLexer): + """ + + .. seealso:: + - https://info.blaisepascal.fr/pseudo-code/ + - https://fr.wikipedia.org/wiki/Pseudo-code + - https://fr.wikipedia.org/wiki/Structure_de_contr%C3%B4le + + """ + name = "AlgPseudocodeFR" aliases = ["algpseudocode-fr", "algpseudo-fr"] filenames = ["*.algpseudo-fr", "*.algpseudocode-fr"] @@ -560,6 +601,26 @@ "CLASS": "CLASSE", "IS": "EST", "WITH": "AVEC", + "IF": "SI", + "THEN": "ALORS", + "ELSE": "SINON", + "ELSEIF": "SINONSI", + "ELSIF": "SINONSI", + "ELIF": "SINONSI", + "DO": "FAIRE", # as in in WHILE ... DO (not DO ... UNTIL) + "WHILE": "TANTQUE", + "FOR": "POUR", + "FORALL": "POUR CHAQUE", + "FROM": "DE", + "TO": "JUSQU'À", # or just "À", + "IN": "DANS", # as in FOR ... IN + "STEP": "PAR PAS DE", + "LOOP": "BOUCLE", # XXX FIXME??? + "REPEAT": "RÉPÉTER", + "UNTIL": "JUSQUACEQUE", + "RETURN": "RENVOYER", + "BEGIN": "DÉBUT", + "END": "FIN", }) END_TRANSLATIONS = AlgPseudocodeLexer.END_TRANSLATIONS.copy() END_TRANSLATIONS.update({ @@ -573,5 +634,10 @@ "FUNCTION": "FIN DE FOUNCTION", "FN": "FIN DE FONCTION", "CLASS": "FIN DE CLASSE", + "SI": "FIN SI", + "FOR": "FIN POUR", + "FORALL": "FIN POUR CHAQUE", + "WHILE": "FIN TANTQUE", + "LOOP": "FIN BOUCLE", }) DEFAULT_END_PREFIX = "FIN DE " diff -r d6f3a1d1bedd -r ec8767cc5493 tests/test_algpseudo.py --- a/tests/test_algpseudo.py Tue May 05 17:37:58 2026 +0200 +++ b/tests/test_algpseudo.py Tue May 05 17:38:49 2026 +0200 @@ -227,6 +227,17 @@ ], pygments.lex(r"\PROC { also {nichtxs\} hier}", lexer)) + def test_loop_de_not_yet_translated(self): + lexer = pygments.lexers.load_lexer_from_file( + ALGLEXERFILENAME, "AlgPseudocodeLexer_DE") + self.assertTokenStreamEqualComplete( + [("Keyword", "LOOP"), + ("Text", " "), + ("Name.Entity", "a"), + ("Text.Whitespace", "\n"), + ], + pygments.lex(r"\LOOP a", lexer)) + def test_function_1(self): self.assertTokenStreamEqualComplete( [("Keyword", "FUNCTION"),