]> git.lyx.org Git - features.git/commitdiff
Fix parsing of class and category declaration line in layout files
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 2 Sep 2015 12:29:06 +0000 (14:29 +0200)
committerJuergen Spitzmueller <spitz@lyx.org>
Wed, 2 Sep 2015 12:29:06 +0000 (14:29 +0200)
* Omit commented-out lines
* Properly escape backslash
* Do not allow non-space chars after delaration
* Allow blanks before # comment character

Fixes: #9746
lib/configure.py
src/LayoutFile.cpp

index 91f559316989d121b3668121590cb07c179b7793..db947b81e3b646c9b553189aed1fab07454e6e41 100644 (file)
@@ -1163,8 +1163,8 @@ def processLayoutFile(file, bool_docbook):
             return x.strip()
     classname = file.split(os.sep)[-1].split('.')[0]
     # return ('LaTeX', '[a,b]', 'a', ',b,c', 'article') for \DeclareLaTeXClass[a,b,c]{article}
-    p = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}')
-    q = re.compile(r'\DeclareCategory{(.*)}')
+    p = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+    q = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
     classdeclaration = ""
     categorydeclaration = '""'
     for line in open(file).readlines():
@@ -1259,8 +1259,8 @@ def checkLatexConfig(check_config, bool_docbook):
     # Construct the list of classes to test for.
     # build the list of available layout files and convert it to commands
     # for chkconfig.ltx
-    declare = re.compile(r'\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}')
-    category = re.compile(r'\DeclareCategory{(.*)}')
+    declare = re.compile(r'^\s*#\s*\\Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}\s*$')
+    category = re.compile(r'^\s*#\s*\\DeclareCategory{(.*)}\s*$')
     empty = re.compile(r'^\s*$')
     testclasses = list()
     for file in glob.glob( os.path.join('layouts', '*.layout') ) + \
index d0fc248ee9f27cca309387873f5ab54b8a097c6b..8cca663c4b6ace8e872ace70304b801e2074afee 100644 (file)
@@ -301,9 +301,9 @@ LayoutFileIndex  LayoutFileList::addLocalLayout(
        // which uses the following regex
        //     \Declare(LaTeX|DocBook)Class\s*(\[([^,]*)(,.*)*\])*\s*{(.*)}
        ifstream ifs(layout_file.toFilesystemEncoding().c_str());
-       static regex const reg("^#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*"
+       static regex const reg("^\\s*#\\s*\\\\Declare(LaTeX|DocBook)Class\\s*"
                "(?:\\[([^,]*)(?:,.*)*\\])*\\s*\\{(.*)\\}\\s*");
-       static regex const catreg("^#\\s*\\\\DeclareCategory\\{(.*)\\}");
+       static regex const catreg("^\\s*#\\s*\\\\DeclareCategory\\{(.*)\\}\\s*");
        string line;
        string class_name;
        string class_prereq;