Mercurial > hgrepos > Python > libs > pygments-lexer-pseudocode2
comparison pygments_lexer_pseudocode2/algpseudocode.py @ 72:206017a08ed7
Refactor: Make the "op_space()" and related methods more flexible and allow a given fixed token type and value
| author | Franz Glasner <fzglas.hg@dom66.de> |
|---|---|
| date | Tue, 28 Apr 2026 19:14:17 +0200 |
| parents | 5517b0be67f0 |
| children | c1357674622d |
comparison
equal
deleted
inserted
replaced
| 71:2ea86269e84e | 72:206017a08ed7 |
|---|---|
| 111 if not lexer.no_end: | 111 if not lexer.no_end: |
| 112 yield match.start(), toktype, match.group() | 112 yield match.start(), toktype, match.group() |
| 113 | 113 |
| 114 return _op_opt_ignore | 114 return _op_opt_ignore |
| 115 | 115 |
| 116 def op_opt_ignore_or_space(lexer, match, ctx=None): | 116 def op_opt_ignore_or_fixed(toktype, value): |
| 117 """Yield a single whitespace ' ' or nothing -- depending on the lexer's | 117 """Yield a fixed given token type and value or -- if the lexer's |
| 118 `no_end` setting. | 118 `no_end` setting evals to ``True`` nothing. |
| 119 | 119 |
| 120 """ | 120 """ |
| 121 if not lexer.no_end: | 121 |
| 122 yield match.start(), Whitespace, " " | 122 def _op_opt_ignore_or_fixed(lexer, match, ctx=None): |
| 123 if not lexer.no_end: | |
| 124 yield match.start(), toktype, value | |
| 125 | |
| 126 return _op_opt_ignore_or_fixed | |
| 123 | 127 |
| 124 def op_symbol(toktype): | 128 def op_symbol(toktype): |
| 125 | 129 |
| 126 def _op_symbol(lexer, match, ctx=None): | 130 def _op_symbol(lexer, match, ctx=None): |
| 127 kw = match.group().upper() | 131 kw = match.group().upper() |
| 144 r"|(?:algo(?:rithm)?)" | 148 r"|(?:algo(?:rithm)?)" |
| 145 r"|(?:proc(?:edure)?)" | 149 r"|(?:proc(?:edure)?)" |
| 146 r"|(?:func(?:tion)?|(?:fn))" | 150 r"|(?:func(?:tion)?|(?:fn))" |
| 147 r"|(?:class)" | 151 r"|(?:class)" |
| 148 r")\s*(\{)", | 152 r")\s*(\{)", |
| 149 bygroups(op_translate(Keyword), LexBase.op_space), | 153 bygroups(op_translate(Keyword), |
| 154 LexBase.op_fixed(Whitespace, " ")), | |
| 150 "entity-name"), | 155 "entity-name"), |
| 151 # ENDxxx keywords with optional entity name | 156 # ENDxxx keywords with optional entity name |
| 152 # with name | 157 # with name |
| 153 (r"(?i)\\end(?:_|-)?(" | 158 (r"(?i)\\end(?:_|-)?(" |
| 154 r"(?:prog(?:ram)?)" | 159 r"(?:prog(?:ram)?)" |
| 156 r"|(?:proc(?:edure)?)" | 161 r"|(?:proc(?:edure)?)" |
| 157 r"|(?:func(?:tion)?)" | 162 r"|(?:func(?:tion)?)" |
| 158 r"|(?:class)" | 163 r"|(?:class)" |
| 159 r")\s*(\{)", | 164 r")\s*(\{)", |
| 160 bygroups(op_opt_end_translate(Keyword), | 165 bygroups(op_opt_end_translate(Keyword), |
| 161 op_opt_ignore_or_space), | 166 op_opt_ignore_or_fixed(Whitespace, " ")), |
| 162 "entity-name-end"), | 167 "entity-name-end"), |
| 163 # without name | 168 # without name |
| 164 (r"(?i)\\end(?:_|-)?(" | 169 (r"(?i)\\end(?:_|-)?(" |
| 165 r"(?:prog(?:ram)?)" | 170 r"(?:prog(?:ram)?)" |
| 166 r"|(?:algo(?:rithm)?)" | 171 r"|(?:algo(?:rithm)?)" |
| 195 (r"(?i)\\text\s*\{", LexBase.op_ignore, "expr-text"), | 200 (r"(?i)\\text\s*\{", LexBase.op_ignore, "expr-text"), |
| 196 include("py-name"), | 201 include("py-name"), |
| 197 ], | 202 ], |
| 198 "expr-text": [ | 203 "expr-text": [ |
| 199 (r"[^\\}]+", Text), | 204 (r"[^\\}]+", Text), |
| 200 (r"\\\}", Text), | 205 (r"\\\}", LexBase.op_fixed(Text, "}")), |
| 201 (r"\\", Text), | 206 (r"\\", LexBase.op_fixed(Text, "\\")), |
| 202 (r"\}", LexBase.op_ignore, "#pop"), | 207 (r"\}", LexBase.op_ignore, "#pop"), |
| 203 ], | 208 ], |
| 204 } | 209 } |
| 205 | 210 |
| 206 def __init__(self, **options): | 211 def __init__(self, **options): |
