[LyX/master] lyx_pot.py: Fix regex for \Format

Juergen Spitzmueller spitz at lyx.org
Wed Aug 7 07:14:29 UTC 2024


commit 1efdc11296b0acf98d1180e18c0daa3e9a79bfec
Author: Juergen Spitzmueller <spitz at lyx.org>
Date:   Wed Aug 7 09:11:35 2024 +0200

    lyx_pot.py: Fix regex for \Format
    
    Each token could be delimited by quotation marks or not. The previous
    regexes only considered this for two tokens and hence produced wrong
    matches for cases such as
    
    \Format gnuplot     "gp, gnuplot, plt"    "Gnuplot"     "" "" ""  "vector"      "text/plain"
    
    where the extension list wasn't parsed as a single token.
---
 po/lyx_pot.py | 11 ++++-------
 1 file changed, 4 insertions(+), 7 deletions(-)

diff --git a/po/lyx_pot.py b/po/lyx_pot.py
index 76111bb71e..236ac2861b 100755
--- a/po/lyx_pot.py
+++ b/po/lyx_pot.py
@@ -572,18 +572,15 @@ def external_l10n(input_files, output, base):
 def formats_l10n(input_files, output, base):
     '''Generate pot file from configure.py'''
     output = io.open(output, 'w', encoding='utf_8', newline='\n')
-    GuiName = re.compile(r'.*\\Format\s+\S+\s+\S+\s+"([^"]*)"\s+(\S*)\s+.*', re.IGNORECASE)
-    GuiName2 = re.compile(r'.*\\Format\s+\S+\s+\S+\s+([^"]\S+)\s+(\S*)\s+.*', re.IGNORECASE)
+    # \Format "shortname" "ext1, ext2..." "name" "shortcut" (quotation marks optional in each group)
+    GuiName = re.compile(r'.*\\Format\s+(""|"[^"]+"|\S+)\s+(""|"[^"]+"|\S+)\s+(""|"[^"]+"|\S+)\s+(""|"[^"]+"|\S+)\s+.*', re.IGNORECASE)
     input = io.open(input_files[0], encoding='utf_8')
     for lineno, line in enumerate(input.readlines()):
         label = ""
         labelsc = ""
         if GuiName.match(line):
-            label = GuiName.match(line).group(1)
-            shortcut = GuiName.match(line).group(2).replace('"', '')
-        elif GuiName2.match(line):
-            label = GuiName2.match(line).group(1)
-            shortcut = GuiName2.match(line).group(2).replace('"', '')
+            label = GuiName.match(line).group(3)
+            shortcut = GuiName.match(line).group(4).replace('"', '')
         else:
             continue
         label = label.replace('\\', '\\\\').replace('"', '')


More information about the lyx-cvs mailing list