# HG changeset patch # User Franz Glasner # Date 1777374315 -7200 # Node ID 3f4223a79d2be576d2fd66fa21f1e7ee13e7fdc8 # Parent 05c53e431c88244972fd1f5647d490aed741d20f Normalize whitespace handling for entity names diff -r 05c53e431c88 -r 3f4223a79d2b pygments_lexer_pseudocode2/algpseudocode.py --- a/pygments_lexer_pseudocode2/algpseudocode.py Tue Apr 28 12:40:02 2026 +0200 +++ b/pygments_lexer_pseudocode2/algpseudocode.py Tue Apr 28 13:05:15 2026 +0200 @@ -113,6 +113,14 @@ return _op_opt_ignore + def op_opt_ignore_or_space(lexer, match, ctx=None): + """Yield a single whitespace ' ' or nothing -- depending on the lexer's + `no_end` setting. + + """ + if not lexer.no_end: + yield match.start(), Whitespace, " " + def op_symbol(toktype): def _op_symbol(lexer, match, ctx=None): @@ -137,8 +145,8 @@ r"|(?:proc(?:edure)?)" r"|(?:func(?:tion)?|(?:fn))" r"|(?:class)" - r")(\s*)(\{)", - bygroups(op_translate(Keyword), Whitespace, LexBase.op_ignore), + r")\s*(\{)", + bygroups(op_translate(Keyword), LexBase.op_space), "entity-name"), # ENDxxx keywords with optional entity name # with name @@ -148,10 +156,9 @@ r"|(?:proc(?:edure)?)" r"|(?:func(?:tion)?)" r"|(?:class)" - r")(\s*)(\{)", + r")\s*(\{)", bygroups(op_opt_end_translate(Keyword), - op_opt_ignore(Whitespace), - LexBase.op_ignore), + op_opt_ignore_or_space), "entity-name-end"), # without name (r"(?i)\\end(?:_|-)?(" diff -r 05c53e431c88 -r 3f4223a79d2b pygments_lexer_pseudocode2/bases.py --- a/pygments_lexer_pseudocode2/bases.py Tue Apr 28 12:40:02 2026 +0200 +++ b/pygments_lexer_pseudocode2/bases.py Tue Apr 28 13:05:15 2026 +0200 @@ -10,7 +10,8 @@ from pygments import unistring from pygments.lexer import RegexLexer, combined, bygroups, include -from pygments.token import Error, Name, Number, String, Comment, Other +from pygments.token import (Comment, Error, Name, Number, Other, String, + Whitespace) # @@ -69,9 +70,14 @@ """ def op_ignore(lexer, match, ctx=None): + """Ignore the match.""" if False: yield match.start(), Other, "" + def op_space(lexer, match, ctx=None): + """Unconditionally yield a single whitespace ' '.""" + yield match.start(), Whitespace, " " + tokens = { # # These states are borrowed from Pygment's Python lexer.