changeset 117:d84f1fd10e64

Allow to customize the symbol for a remark
author Franz Glasner <fzglas.hg@dom66.de>
date Wed, 06 May 2026 13:35:12 +0200
parents 9bfd87544902
children a861ac4d11fc
files pygments_lexer_pseudocode2/algpseudocode.py tests/test_algpseudo.py
diffstat 2 files changed, 19 insertions(+), 1 deletions(-) [+]
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/algpseudocode.py	Wed May 06 10:05:57 2026 +0200
+++ b/pygments_lexer_pseudocode2/algpseudocode.py	Wed May 06 13:35:12 2026 +0200
@@ -111,6 +111,7 @@
     DEFAULT_END_PREFIX = "END OF "
     SYMBOL_REMARK = "▷"            # U+25B7: Unicode 1.0 (Geometric Shapes)
     # SYMBOL_REMARK = "▻"          # U+25BB: Unicode 1.0 (Geometric Shapes)
+    # SYMBOL_REMARK = "⍝"          # U+235D: Unicode 1.1 (Misc. Technical, APL)
     SYMBOL_BLOCK = "◆"             # U+25C6: Unicode 1.0 (Geometric Shapes)
     # SYMBOL_BLOCK = "┃"           # U+2503: Unicode 1.0 (Bow Drawing)
     # SYMBOL_BLOCK = "●"           # U+25CF: Unicode 1.0 (Geometric Shapes)
@@ -202,6 +203,9 @@
     def op_gets(lexer, match, ctx=None):
         yield match.start(), Operator, lexer.symbol_gets
 
+    def op_remark(lexer, match, ctx=None):
+        yield match.start(), Comment.Single, lexer.symbol_remark
+
     def op_symbol(toktype):
 
         def _op_symbol(lexer, match, ctx=None):
@@ -332,7 +336,7 @@
         ],
         "remark": [
             (r"(?i)\\(remark|rem)\b(.*)$",
-             bygroups(op_symbol(Comment.Single), Comment.Single)),
+             bygroups(op_remark, Comment.Single)),
         ],
         "entity-name": [      # may be multiline
             (r"[^\\}]+", Name.Entity),
@@ -514,6 +518,9 @@
         self.symbol_gets = options.get("gets", None)
         if self.symbol_gets is None:
             self.symbol_gets = self.SYMBOLS["<-"]   # Default: "⟵"  # U+27F5
+        self.symbol_remark = options.get("remark", None)
+        if self.symbol_remark is None:
+            self.symbol_remark = self.SYMBOLS["REM"]  # Default: "▷"  # U+25B7
         LexBase.__init__(self, **options)
 
 
--- a/tests/test_algpseudo.py	Wed May 06 10:05:57 2026 +0200
+++ b/tests/test_algpseudo.py	Wed May 06 13:35:12 2026 +0200
@@ -341,6 +341,17 @@
 \\Rem  the remark 2
 """, self.lexer))
 
+    def test_remark_custom(self):
+        # With the APL comment symbol
+        lexer = pygments.lexers.load_lexer_from_file(
+            ALGLEXERFILENAME, ALGLEXERCLASS, remark=u"⍝")
+        self.assertTokenStreamEqualComplete(
+            [("Comment.Single", "⍝"),  # U+235D ⍝ APL FUNC. SYMBOL UP SHOE JOT
+             ("Comment.Single", "  another remark"),
+             ("Text.Whitespace", "\n"),
+             ],
+            pygments.lex("\\REMARK  another remark\n", lexer))
+
     def test_remark_in_text(self):
         self.assertTokenStreamEqualComplete(
             [("Text", "the text  "),