]> git.lyx.org Git - features.git/commitdiff
Merge branch 'master' into biblatex2
authorJuergen Spitzmueller <spitz@lyx.org>
Wed, 11 Jan 2017 09:45:48 +0000 (10:45 +0100)
committerJuergen Spitzmueller <spitz@lyx.org>
Wed, 11 Jan 2017 09:45:48 +0000 (10:45 +0100)
1  2 
lib/configure.py
src/LaTeX.cpp
src/LyX.cpp

index 4ba71c953f7b3c8732068714620e848d1e5d9571,e374673010070c48e7d23444bb6a4555141f6429..8a016a940399277c7f685e23cbd05fb3b2d39cfc
@@@ -1499,128 -1529,10 +1529,129 @@@ def processModuleFile(file, filename, b
              cm.write(line + '\n')
          cm.close()
  
-     return '"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, desc, pkgs, req, excl, catgy)
+     return ('"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n'
+             % (modname, filename, desc, pkgs, req, excl, catgy))
  
  
 +def checkCiteEnginesConfig():
 +  removeFiles(['lyxciteengines.lst', 'chkciteengines.tex'])
 +
 +  logger.info('+checking list of cite engines... ')
 +  tx = open('lyxciteengines.lst', 'w')
 +  tx.write('''## This file declares cite engines and their associated definition files.
 +## It has been automatically generated by configure
 +## Use "Options/Reconfigure" if you need to update it after a
 +## configuration change.
 +## "CiteEngineName" "filename" "CiteEngineType" "CiteFramework" "DefaultBiblio" "Description" "Packages"
 +''')
 +
 +  # build the list of available modules
 +  seen = []
 +  # note that this searches the local directory first, then the
 +  # system directory. that way, we pick up the user's version first.
 +  for file in glob.glob( os.path.join('citeengines', '*.citeengine') ) + \
 +      glob.glob( os.path.join(srcdir, 'citeengines', '*.citeengine' ) ) :
 +      # valid file?
 +      logger.info(file)
 +      if not os.path.isfile(file):
 +          continue
 +
 +      filename = file.split(os.sep)[-1]
 +      filename = filename[:-11]
 +      if seen.count(filename):
 +          continue
 +
 +      seen.append(filename)
 +      retval = processCiteEngineFile(file, filename, bool_docbook)
 +      if retval != "":
 +          tx.write(retval)
 +  tx.close()
 +  logger.info('\tdone')
 +
 +
 +def processCiteEngineFile(file, filename, bool_docbook):
 +    ''' process cite engines file and get a line of result
 +
 +        The top of a cite engine file should look like this:
 +          #\DeclareLyXCiteEngine[LaTeX Packages]{CiteEngineName}
 +          #DescriptionBegin
 +          #...body of description...
 +          #DescriptionEnd
 +        We expect output:
 +          "CiteEngineName" "filename" "CiteEngineType" "CiteFramework" "DefaultBiblio" "Description" "Packages"
 +    '''
 +    remods = re.compile(r'\DeclareLyXCiteEngine\s*(?:\[([^]]*?)\])?{(.*)}')
 +    redbeg = re.compile(r'#+\s*DescriptionBegin\s*$')
 +    redend = re.compile(r'#+\s*DescriptionEnd\s*$')
 +    recet = re.compile(r'\s*CiteEngineType\s*(.*)')
 +    redb = re.compile(r'\s*DefaultBiblio\s*(.*)')
 +    resfm = re.compile(r'\s*CiteFramework\s*(.*)')
 +
 +    modname = desc = pkgs = cet = db = cfm = ""
 +    readingDescription = False
 +    descLines = []
 +
 +    for line in open(file).readlines():
 +      if readingDescription:
 +        res = redend.search(line)
 +        if res != None:
 +          readingDescription = False
 +          desc = " ".join(descLines)
 +          # Escape quotes.
 +          desc = desc.replace('"', '\\"')
 +          continue
 +        descLines.append(line[1:].strip())
 +        continue
 +      res = redbeg.search(line)
 +      if res != None:
 +        readingDescription = True
 +        continue
 +      res = remods.search(line)
 +      if res != None:
 +          (pkgs, modname) = res.groups()
 +          if pkgs == None:
 +            pkgs = ""
 +          else:
 +            tmp = [s.strip() for s in pkgs.split(",")]
 +            pkgs = ",".join(tmp)
 +          continue
 +      res = recet.search(line)
 +      if res != None:
 +        cet = res.group(1)
 +        continue
 +      res = redb.search(line)
 +      if res != None:
 +        db = res.group(1)
 +        continue
 +      res = resfm.search(line)
 +      if res != None:
 +        cfm = res.group(1)
 +        continue
 +
 +    if modname == "":
 +      logger.warning("Cite Engine File file without \DeclareLyXCiteEngine line. ")
 +      return ""
 +
 +    if pkgs != "":
 +        # this cite engine has some latex dependencies:
 +        # append the dependencies to chkciteengines.tex,
 +        # which is \input'ed by chkconfig.ltx
 +        testpackages = list()
 +        for pkg in pkgs.split(","):
 +            if "->" in pkg:
 +                # this is a converter dependency: skip
 +                continue
 +            if pkg.endswith(".sty"):
 +                pkg = pkg[:-4]
 +            testpackages.append("\\TestPackage{%s}" % (pkg,))
 +        cm = open('chkciteengines.tex', 'a')
 +        for line in testpackages:
 +            cm.write(line + '\n')
 +        cm.close()
 +
 +    return '"%s" "%s" "%s" "%s" "%s" "%s" "%s"\n' % (modname, filename, cet, cfm, db, desc, pkgs)
 +
 +
  def checkTeXAllowSpaces():
      ''' Let's check whether spaces are allowed in TeX file names '''
      tex_allows_spaces = 'false'
diff --cc src/LaTeX.cpp
Simple merge
diff --cc src/LyX.cpp
Simple merge