diff pygments_lexer_pseudocode2/pseudocode.py @ 40:df08226a6984

Names for some entities (program, algorithm, function, procedure, class). Also test for "class".
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 24 Apr 2026 10:48:00 +0200
parents a3151d837258
children 4ccf9a8d0bf2
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/pseudocode.py	Fri Apr 24 09:44:34 2026 +0200
+++ b/pygments_lexer_pseudocode2/pseudocode.py	Fri Apr 24 10:48:00 2026 +0200
@@ -14,7 +14,7 @@
 import re
 
 from pygments.lexer import include, bygroups
-from pygments.token import (Comment, Keyword, Text, Whitespace)
+from pygments.token import (Comment, Keyword, Name, Text, Whitespace)
 
 #
 # Relative imports do not work with pygments.lexers.load_lexer_from_file()
@@ -67,8 +67,8 @@
 
     def op_translate(toktype):
 
-        def _op_translate(lexer, match):
-            kw = match.group(1).upper()
+        def _op_translate(lexer, match, ctx=None):
+            kw = match.group().upper()
             yield match.start(), toktype, lexer.TRANSLATIONS.get(kw, kw)
 
         return _op_translate
@@ -97,10 +97,17 @@
              r"|(?:proc(?:edure)?)"
              r"|(?:func(?:tion)?|(?:fn))"
              r"|(?:class)"
-             r")\b",
-             op_translate(Keyword)),
+             r")(\s*)(\{)",
+             bygroups(op_translate(Keyword), Whitespace, Name.Entity),
+             "entity-name"),
             include("expr"),
         ],
+        "entity-name": [       # may be multiline
+            (r"[^\\}]+", Name.Entity),
+            (r"\\\}", Name.Entity),
+            (r"\\", Name.Entity),
+            (r"\}", Name.Entity, "#pop"),
+        ],
         "expr": [
             include("py-strings"),
             include("py-numbers"),