changeset 43:bbef0ac6cfcf

FIX: Proper string parsing: explicitely error out when single-line strings contain a linefeed
author Franz Glasner <fzglas.hg@dom66.de>
date Fri, 24 Apr 2026 19:01:10 +0200
parents 193ee1eb5013
children 742496328de6
files pygments_lexer_pseudocode2/bases.py tests/test_pseudo.py
diffstat 2 files changed, 8 insertions(+), 7 deletions(-) [+]
line wrap: on
line diff
--- a/pygments_lexer_pseudocode2/bases.py	Fri Apr 24 18:22:23 2026 +0200
+++ b/pygments_lexer_pseudocode2/bases.py	Fri Apr 24 19:01:10 2026 +0200
@@ -9,7 +9,7 @@
 
 
 from pygments.lexer import RegexLexer, combined, bygroups, include
-from pygments.token import Number, String, Comment
+from pygments.token import Error, Name, Number, String, Comment
 
 
 class LexBase(RegexLexer):
@@ -56,6 +56,7 @@
 # SPDX-SnippetBegin
 # SPDX-License-Identifier: BSD-2-Clause
 # SPDX-SnippetCopyrightText: Copyright 2006-2023 by the Pygments team
+# SPDX-SnippetCopyrightText: Copyright 2026 by Franz Glasner
 #
         'py-numbers': [
             (r'(\d(?:_?\d)*\.(?:\d(?:_?\d)*)?|(?:\d(?:_?\d)*)?\.\d(?:_?\d)*)'
@@ -97,12 +98,14 @@
         'py-dqs': [
             (r'"', String.Double, '#pop'),
             (r'\\\\|\\"|\\\n', String.Escape),  # included here for raw strings
-            include('py-strings-double')
+            include('py-strings-double'),
+            (r'\n', Error),    # added by fag
         ],
         'py-sqs': [
             (r"'", String.Single, '#pop'),
             (r"\\\\|\\'|\\\n", String.Escape),  # included here for raw strings
-            include('py-strings-single')
+            include('py-strings-single'),
+            (r'\n', Error),    # added by fag
         ],
         'py-tdqs': [
             (r'"""', String.Double, '#pop'),
--- a/tests/test_pseudo.py	Fri Apr 24 18:22:23 2026 +0200
+++ b/tests/test_pseudo.py	Fri Apr 24 19:01:10 2026 +0200
@@ -68,8 +68,7 @@
         self.assertTokenStreamEqual(
             [("String.Single", "'"),
              ("String.Single", "HUHU"),
-             ("Text.Whitespace", "\n"),
-             ("Error", "H"),
+             ("Error", "\n"),
              ],
             pygments.lex("'HUHU\nHEHE'", self.lexer))
 
@@ -114,8 +113,7 @@
         self.assertTokenStreamEqual(
             [("String.Double", '"'),
              ("String.Double", "HUHU"),
-             ("Text.Whitespace", "\n"),
-             ("Error", "H"),
+             ("Error", "\n"),
              ],
             pygments.lex('"HUHU\nHEHE"', self.lexer))