]> git.lyx.org Git - lyx.git/commitdiff
lyx_pot.py: Fix regex for \Format
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 7 Aug 2024 07:11:35 +0000 (09:11 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Wed, 7 Aug 2024 07:11:35 +0000 (09:11 +0200)
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

index 76111bb71e456f650026438387b85e5581afbc61..236ac2861b68d15e49737abf71d3e0e5d32ff557 100755 (executable)
@@ -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('"', '')