Commit 98a54c57 authored by Dimitri van Heesch's avatar Dimitri van Heesch
Browse files

Added build support for Python3+ and Python2.6+

parent 3333536d
Loading
Loading
Loading
Loading
+14 −6
Original line number Original line Diff line number Diff line
@@ -594,9 +594,10 @@ fi


# - check for python ----------------------------------------------------------
# - check for python ----------------------------------------------------------


python_version=0
printf "  Checking for python... "
printf "  Checking for python... "
if test "$f_python" = NO; then
if test "$f_python" = NO; then
  python_names="python2 python"
  python_names="python3 python2 python"
  python_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
  python_dirs="$bin_dirs /usr/bin /usr/local/bin /bin /sbin"
  python_prog=NO
  python_prog=NO
  python_found=NO
  python_found=NO
@@ -604,9 +605,16 @@ if test "$f_python" = NO; then
    for j in $python_dirs; do
    for j in $python_dirs; do
      if test -x "$j/$i"; then
      if test -x "$j/$i"; then
        python_found=YES
        python_found=YES
        if test `$j/$i -c "import sys; print sys.version_info[0]"` = 2; then
        if test `$j/$i -c "import sys; print(sys.version_info[0])"` = 3; then
          python_prog="$j/$i"
          python_prog="$j/$i";
          python_version=`$j/$i -c "import platform; print(platform.python_version())"`;
          break 2
          break 2
        elif test `$j/$i -c "import sys; print(sys.version_info[0])"` = 2; then
          if test `$j/$i -c "import sys; print(sys.version_info[1])"` -ge 6; then
            python_prog="$j/$i";
            python_version=`$j/$i -c "import platform; print(platform.python_version())"`;
            break 2
          fi
        fi
        fi
      fi
      fi
    done
    done
@@ -616,14 +624,14 @@ fi


if test "$f_python" = NO; then
if test "$f_python" = NO; then
  if test "$python_found" = YES; then
  if test "$python_found" = YES; then
    echo "version should be python 2."
    echo "version should be python 2.6 or higher."
  else
  else
    echo "not found!";
    echo "not found!";
  fi
  fi
  echo
  echo
  exit 2
  exit 2
fi
fi
echo "using $f_python";
echo "using $f_python (version $python_version)";


# - check for perl ------------------------------------------------------------
# - check for perl ------------------------------------------------------------


+1 −0
Original line number Original line Diff line number Diff line
@@ -556,6 +556,7 @@ open-source tools:
<li>GNU bison version 2.5 (Linux) and 2.3 (MacOSX)
<li>GNU bison version 2.5 (Linux) and 2.3 (MacOSX)
<li>GNU make version 3.81
<li>GNU make version 3.81
<li>Perl version 5.12
<li>Perl version 5.12
<li>Python verion 2.7 and 3.4
<li>TeX Live 2009 (or later)
<li>TeX Live 2009 (or later)
</ul>
</ul>


+68 −67
Original line number Original line Diff line number Diff line
@@ -66,7 +66,7 @@
               of translators introduced.
               of translators introduced.
  """
  """


from __future__ import generators

import codecs
import codecs
import os
import os
import re
import re
@@ -276,7 +276,7 @@ class Transl:
                    # If it is an unknown item, it can still be recognized
                    # If it is an unknown item, it can still be recognized
                    # here. Keywords and separators are the example.
                    # here. Keywords and separators are the example.
                    if tokenId == 'unknown':
                    if tokenId == 'unknown':
                        if tokenDic.has_key(tokenStr):
                        if tokenStr in tokenDic:
                            tokenId = tokenDic[tokenStr]
                            tokenId = tokenDic[tokenStr]
                        elif tokenStr.isdigit():
                        elif tokenStr.isdigit():
                            tokenId = 'num'
                            tokenId = 'num'
@@ -329,7 +329,7 @@ class Transl:
                    tokenStr = c
                    tokenStr = c
                    tokenLineNo = lineNo
                    tokenLineNo = lineNo
                    status = 8
                    status = 8
                elif tokenDic.has_key(c):  # known one-char token
                elif c in tokenDic:  # known one-char token
                    tokenId = tokenDic[c]
                    tokenId = tokenDic[c]
                    tokenStr = c
                    tokenStr = c
                    tokenLineNo = lineNo
                    tokenLineNo = lineNo
@@ -424,7 +424,7 @@ class Transl:
                if c.isspace():
                if c.isspace():
                    pos += 1
                    pos += 1
                    status = 0           # tokenId may be determined later
                    status = 0           # tokenId may be determined later
                elif tokenDic.has_key(c):  # separator, don't move pos
                elif c in tokenDic:  # separator, don't move pos
                    status = 0
                    status = 0
                else:
                else:
                    tokenStr += c        # collect
                    tokenStr += c        # collect
@@ -457,7 +457,7 @@ class Transl:


            # Always assume that the previous tokens were processed. Get
            # Always assume that the previous tokens were processed. Get
            # the next one.
            # the next one.
            tokenId, tokenStr, tokenLineNo = tokenIterator.next()
            tokenId, tokenStr, tokenLineNo = next(tokenIterator)


            # Process the token and never return back.
            # Process the token and never return back.
            if status == 0:    # waiting for the 'class' keyword.
            if status == 0:    # waiting for the 'class' keyword.
@@ -588,7 +588,7 @@ class Transl:
        while status != 777:
        while status != 777:


            # Get the next token.
            # Get the next token.
            tokenId, tokenStr, tokenLineNo = tokenIterator.next()
            tokenId, tokenStr, tokenLineNo = next(tokenIterator)


            if status == 0:      # waiting for 'public:'
            if status == 0:      # waiting for 'public:'
                if tokenId == 'public':
                if tokenId == 'public':
@@ -670,7 +670,7 @@ class Transl:


            elif status == 9:    # after semicolon, produce the dic item
            elif status == 9:    # after semicolon, produce the dic item
                if tokenId == 'semic':
                if tokenId == 'semic':
                    assert(not resultDic.has_key(uniPrototype))
                    assert(uniPrototype not in resultDic)
                    resultDic[uniPrototype] = prototype
                    resultDic[uniPrototype] = prototype
                    status = 2
                    status = 2
                else:
                else:
@@ -752,7 +752,7 @@ class Transl:


        # Eat the rest of the source to cause closing the file.
        # Eat the rest of the source to cause closing the file.
        while tokenId != 'eof':
        while tokenId != 'eof':
            tokenId, tokenStr, tokenLineNo = tokenIterator.next()
            tokenId, tokenStr, tokenLineNo = next(tokenIterator)


        # Return the resulting dictionary with 'uniPrototype -> prototype'.
        # Return the resulting dictionary with 'uniPrototype -> prototype'.
        return resultDic
        return resultDic
@@ -800,7 +800,7 @@ class Transl:
        while status != 777:
        while status != 777:


            # Get the next token.
            # Get the next token.
            tokenId, tokenStr, tokenLineNo = tokenIterator.next()
            tokenId, tokenStr, tokenLineNo = next(tokenIterator)


            if status == 0:      # waiting for 'public:'
            if status == 0:      # waiting for 'public:'
                if tokenId == 'public':
                if tokenId == 'public':
@@ -912,7 +912,7 @@ class Transl:
                            sys.stderr.write(msg)
                            sys.stderr.write(msg)
                            assert False
                            assert False


                        assert(not self.prototypeDic.has_key(uniPrototype))
                        assert(uniPrototype not in self.prototypeDic)
                        # Insert new dictionary item.
                        # Insert new dictionary item.
                        self.prototypeDic[uniPrototype] = prototype
                        self.prototypeDic[uniPrototype] = prototype
                        status = 2      # body consumed
                        status = 2      # body consumed
@@ -1056,12 +1056,12 @@ class Transl:
                # For the required methods, update the dictionary of methods
                # For the required methods, update the dictionary of methods
                # implemented by the adapter.
                # implemented by the adapter.
                for protoUni in self.prototypeDic:
                for protoUni in self.prototypeDic:
                    if reqDic.has_key(protoUni):
                    if protoUni in reqDic:
                        # This required method will be marked as implemented
                        # This required method will be marked as implemented
                        # by this adapter class. This implementation assumes
                        # by this adapter class. This implementation assumes
                        # that newer adapters do not reimplement any required
                        # that newer adapters do not reimplement any required
                        # methods already implemented by older adapters.
                        # methods already implemented by older adapters.
                        assert(not adaptDic.has_key(protoUni))
                        assert(protoUni not in adaptDic)
                        adaptDic[protoUni] = (version, self.classId)
                        adaptDic[protoUni] = (version, self.classId)


                # Clear the dictionary object and the information related
                # Clear the dictionary object and the information related
@@ -1094,7 +1094,7 @@ class Transl:
        # Eat the rest of the source to cause closing the file.
        # Eat the rest of the source to cause closing the file.
        while True:
        while True:
            try:
            try:
                t = tokenIterator.next()
                t = next(tokenIterator)
            except StopIteration:
            except StopIteration:
                break
                break


@@ -1106,7 +1106,7 @@ class Transl:
        # Build the list of obsolete methods.
        # Build the list of obsolete methods.
        self.obsoleteMethods = []
        self.obsoleteMethods = []
        for p in myDic:
        for p in myDic:
            if not reqDic.has_key(p):
            if p not in reqDic:
                self.obsoleteMethods.append(p)
                self.obsoleteMethods.append(p)


        # Build the list of missing methods and the list of implemented
        # Build the list of missing methods and the list of implemented
@@ -1114,7 +1114,7 @@ class Transl:
        self.missingMethods = []
        self.missingMethods = []
        self.implementedMethods = []
        self.implementedMethods = []
        for p in reqDic:
        for p in reqDic:
            if myDic.has_key(p):
            if p in myDic:
                self.implementedMethods.append(p)
                self.implementedMethods.append(p)
            else:
            else:
                self.missingMethods.append(p)
                self.missingMethods.append(p)
@@ -1133,7 +1133,7 @@ class Transl:
                adaptMinVersion = '9.9.99'
                adaptMinVersion = '9.9.99'
                adaptMinClass = 'TranslatorAdapter_9_9_99'
                adaptMinClass = 'TranslatorAdapter_9_9_99'
                for uniProto in self.missingMethods:
                for uniProto in self.missingMethods:
                    if adaptDic.has_key(uniProto):
                    if uniProto in adaptDic:
                        version, cls = adaptDic[uniProto]
                        version, cls = adaptDic[uniProto]
                        if version < adaptMinVersion:
                        if version < adaptMinVersion:
                            adaptMinVersion = version
                            adaptMinVersion = version
@@ -1342,9 +1342,9 @@ class TrManager:
                    sys.exit(1)
                    sys.exit(1)
        else:
        else:
            lst = os.listdir(self.src_path)
            lst = os.listdir(self.src_path)
            lst = filter(lambda x: x[:11] == 'translator_'
            lst = [x for x in lst if x[:11] == 'translator_'
                                   and x[-2:] == '.h'
                                   and x[-2:] == '.h'
                                   and x != 'translator_adapter.h', lst)
                                   and x != 'translator_adapter.h']


        # Build the object for the translator_xx.h files, and process the
        # Build the object for the translator_xx.h files, and process the
        # content of the file. Then insert the object to the dictionary
        # content of the file. Then insert the object to the dictionary
@@ -1366,7 +1366,7 @@ class TrManager:
        # Build the auxiliary list with strings compound of the status,
        # Build the auxiliary list with strings compound of the status,
        # readable form of the language, and classId.
        # readable form of the language, and classId.
        statLst = []
        statLst = []
        for obj in self.__translDic.values():
        for obj in list(self.__translDic.values()):
            assert(obj.classId != 'Translator')
            assert(obj.classId != 'Translator')
            s = obj.status + '|' + obj.langReadable + '|' + obj.classId
            s = obj.status + '|' + obj.langReadable + '|' + obj.classId
            statLst.append(s)
            statLst.append(s)
@@ -1384,9 +1384,10 @@ class TrManager:
        # Build the list of tuples that contain (langReadable, obj).
        # Build the list of tuples that contain (langReadable, obj).
        # Sort it by readable name.
        # Sort it by readable name.
        self.langLst = []
        self.langLst = []
        for obj in self.__translDic.values():
        for obj in list(self.__translDic.values()):
            self.langLst.append((obj.langReadable, obj))
            self.langLst.append((obj.langReadable, obj))
        self.langLst.sort(lambda a, b: cmp(a[0], b[0]))
        #self.langLst.sort(lambda a, b: cmp(a[0], b[0]))
        self.langLst.sort(key=lambda a: a[0])


        # Create the list with readable language names. If the language has
        # Create the list with readable language names. If the language has
        # also the English-based version, modify the item by appending
        # also the English-based version, modify the item by appending
@@ -1400,7 +1401,7 @@ class TrManager:
            # of the English-based object. If the object exists, modify the
            # of the English-based object. If the object exists, modify the
            # name for the readable list of supported languages.
            # name for the readable list of supported languages.
            classIdEn = obj.classId + 'En'
            classIdEn = obj.classId + 'En'
            if self.__translDic.has_key(classIdEn):
            if classIdEn in self.__translDic:
                name += ' (+En)'
                name += ' (+En)'


            # Append the result name of the language, possibly with note.
            # Append the result name of the language, possibly with note.
@@ -1424,7 +1425,7 @@ class TrManager:
        for name, obj in self.langLst:
        for name, obj in self.langLst:
            if obj.status == 'En':
            if obj.status == 'En':
                classId = obj.classId[:-2]
                classId = obj.classId[:-2]
                if self.__translDic.has_key(classId):
                if classId in self.__translDic:
                    self.numLang -= 1    # the couple will be counted as one
                    self.numLang -= 1    # the couple will be counted as one


        # Extract the version of Doxygen.
        # Extract the version of Doxygen.
@@ -1433,7 +1434,7 @@ class TrManager:
        f.close()
        f.close()


        # Update the last modification time.
        # Update the last modification time.
        for tr in self.__translDic.values():
        for tr in list(self.__translDic.values()):
            tim = tr.getmtime()
            tim = tr.getmtime()
            if tim > self.lastModificationTime:
            if tim > self.lastModificationTime:
                self.lastModificationTime = tim
                self.lastModificationTime = tim
@@ -1472,7 +1473,7 @@ class TrManager:
        probably used should be checked first and the resulting reduced
        probably used should be checked first and the resulting reduced
        dictionary should be used for checking the next files (speed up).
        dictionary should be used for checking the next files (speed up).
        """
        """
        lst_in = dic.keys()   # identifiers to be searched for
        lst_in = list(dic.keys())   # identifiers to be searched for


        # Read content of the file as one string.
        # Read content of the file as one string.
        assert os.path.isfile(fname)
        assert os.path.isfile(fname)
@@ -1497,7 +1498,7 @@ class TrManager:
        # Build the dictionary of the required method prototypes with
        # Build the dictionary of the required method prototypes with
        # method identifiers used as keys.
        # method identifiers used as keys.
        trdic = {}
        trdic = {}
        for prototype in self.requiredMethodsDic.keys():
        for prototype in list(self.requiredMethodsDic.keys()):
            ri = prototype.split('(')[0]
            ri = prototype.split('(')[0]
            identifier = ri.split()[1].strip()
            identifier = ri.split()[1].strip()
            trdic[identifier] = prototype
            trdic[identifier] = prototype
@@ -1665,12 +1666,12 @@ class TrManager:
            # adapters.
            # adapters.
            if not self.script_argLst:
            if not self.script_argLst:
                to_remove = {}
                to_remove = {}
                for version, adaptClassId in self.adaptMethodsDic.values():
                for version, adaptClassId in list(self.adaptMethodsDic.values()):
                    if version < adaptMinVersion:
                    if version < adaptMinVersion:
                        to_remove[adaptClassId] = True
                        to_remove[adaptClassId] = True


                if to_remove:
                if to_remove:
                    lst = to_remove.keys()
                    lst = list(to_remove.keys())
                    lst.sort()
                    lst.sort()
                    plural = len(lst) > 1
                    plural = len(lst) > 1
                    note = 'Note: The adapter class'
                    note = 'Note: The adapter class'
@@ -1716,7 +1717,7 @@ class TrManager:
                f.write('\n' + '=' * 70 + '\n')
                f.write('\n' + '=' * 70 + '\n')
                f.write(fill(s) + '\n\n')
                f.write(fill(s) + '\n\n')


                keys = dic.keys()
                keys = list(dic.keys())
                keys.sort()
                keys.sort()
                for key in keys:
                for key in keys:
                    f.write('  ' + dic[key] + '\n')
                    f.write('  ' + dic[key] + '\n')
@@ -1726,7 +1727,7 @@ class TrManager:
        f.write('\n' + '=' * 70)
        f.write('\n' + '=' * 70)
        f.write('\nDetails for translators (classes sorted alphabetically):\n')
        f.write('\nDetails for translators (classes sorted alphabetically):\n')


        cls = self.__translDic.keys()
        cls = list(self.__translDic.keys())
        cls.sort()
        cls.sort()


        for c in cls:
        for c in cls:
@@ -1764,28 +1765,28 @@ class TrManager:
            lineReady = line != ''         # when eof, then line == ''
            lineReady = line != ''         # when eof, then line == ''


            line = line.strip()            # eof should also behave as separator
            line = line.strip()            # eof should also behave as separator
            if line != u'' and line[0] == u'%':    # skip the comment line
            if line != '' and line[0] == '%':    # skip the comment line
                continue
                continue


            if not inside:                 # if outside of the record
            if not inside:                 # if outside of the record
                if line != u'':            # should be language identifier
                if line != '':            # should be language identifier
                    classId = line
                    classId = line
                    maintainersLst = []
                    maintainersLst = []
                    inside = True
                    inside = True
                # Otherwise skip empty line that do not act as separator.
                # Otherwise skip empty line that do not act as separator.


            else:                          # if inside the record
            else:                          # if inside the record
                if line == u'':            # separator found
                if line == '':            # separator found
                    inside = False
                    inside = False
                else:
                else:
                    # If it is the first maintainer, create the empty list.
                    # If it is the first maintainer, create the empty list.
                    if not self.__maintainersDic.has_key(classId):
                    if classId not in self.__maintainersDic:
                        self.__maintainersDic[classId] = []
                        self.__maintainersDic[classId] = []


                    # Split the information about the maintainer and append
                    # Split the information about the maintainer and append
                    # the tuple. The address may be prefixed '[unreachable]'
                    # the tuple. The address may be prefixed '[unreachable]'
                    # or whatever '[xxx]'. This will be processed later.
                    # or whatever '[xxx]'. This will be processed later.
                    lst = line.split(u':', 1)
                    lst = line.split(':', 1)
                    assert(len(lst) == 2)
                    assert(len(lst) == 2)
                    t = (lst[0].strip(), lst[1].strip())
                    t = (lst[0].strip(), lst[1].strip())
                    self.__maintainersDic[classId].append(t)
                    self.__maintainersDic[classId].append(t)
@@ -1821,7 +1822,7 @@ class TrManager:
        doctpl = f.read()
        doctpl = f.read()
        f.close()
        f.close()


        pos = doctpl.find(u'/***')
        pos = doctpl.find('/***')
        assert pos != -1
        assert pos != -1
        doctpl = doctpl[pos:]
        doctpl = doctpl[pos:]


@@ -1829,21 +1830,21 @@ class TrManager:
        # document template.
        # document template.
        tplDic = {}
        tplDic = {}


        s = u'Do not edit this file. It was generated by the %s script.\n * Instead edit %s and %s' % (self.script_name, self.languageTplFileName, self.maintainersFileName)
        s = 'Do not edit this file. It was generated by the %s script.\n * Instead edit %s and %s' % (self.script_name, self.languageTplFileName, self.maintainersFileName)
        tplDic['editnote'] = s
        tplDic['editnote'] = s


        tplDic['doxVersion'] = self.doxVersion
        tplDic['doxVersion'] = self.doxVersion
        tplDic['supportedLangReadableStr'] = self.supportedLangReadableStr
        tplDic['supportedLangReadableStr'] = self.supportedLangReadableStr
        tplDic['translatorReportFileName'] = self.translatorReportFileName
        tplDic['translatorReportFileName'] = self.translatorReportFileName


        ahref = u'<a href="../doc/' + self.translatorReportFileName
        ahref = '<a href="../doc/' + self.translatorReportFileName
        ahref += u'"\n><code>doxygen/doc/'  + self.translatorReportFileName
        ahref += '"\n><code>doxygen/doc/'  + self.translatorReportFileName
        ahref += u'</code></a>'
        ahref += '</code></a>'
        tplDic['translatorReportLink'] = ahref
        tplDic['translatorReportLink'] = ahref
        tplDic['numLangStr'] = str(self.numLang)
        tplDic['numLangStr'] = str(self.numLang)


        # Define templates for HTML table parts of the documentation.
        # Define templates for HTML table parts of the documentation.
        htmlTableTpl = u'''\
        htmlTableTpl = '''\
            \\htmlonly
            \\htmlonly
            <table align="center" cellspacing="0" cellpadding="0" border="0">
            <table align="center" cellspacing="0" cellpadding="0" border="0">
            <tr bgcolor="#000000">
            <tr bgcolor="#000000">
@@ -1866,9 +1867,9 @@ class TrManager:
            \\endhtmlonly
            \\endhtmlonly
            '''
            '''
        htmlTableTpl = dedent(htmlTableTpl)
        htmlTableTpl = dedent(htmlTableTpl)
        htmlTrTpl = u'\n  <tr bgcolor="#ffffff">%s\n  </tr>'
        htmlTrTpl = '\n  <tr bgcolor="#ffffff">%s\n  </tr>'
        htmlTdTpl = u'\n    <td>%s</td>'
        htmlTdTpl = '\n    <td>%s</td>'
        htmlTdStatusColorTpl = u'\n    <td bgcolor="%s">%s</td>'
        htmlTdStatusColorTpl = '\n    <td bgcolor="%s">%s</td>'


        # Loop through transl objects in the order of sorted readable names
        # Loop through transl objects in the order of sorted readable names
        # and add generate the content of the HTML table.
        # and add generate the content of the HTML table.
@@ -1896,8 +1897,8 @@ class TrManager:
                classId = obj.classId[:-2]
                classId = obj.classId[:-2]
                if classId in self.__translDic:
                if classId in self.__translDic:
                    lang = self.__translDic[classId].langReadable
                    lang = self.__translDic[classId].langReadable
                    mm = u'see the %s language' % lang
                    mm = 'see the %s language' % lang
                    ee = u'&nbsp;'
                    ee = '&nbsp;'


            if not mm and obj.classId in self.__maintainersDic:
            if not mm and obj.classId in self.__maintainersDic:
                # Build a string of names separated by the HTML break element.
                # Build a string of names separated by the HTML break element.
@@ -1905,25 +1906,25 @@ class TrManager:
                lm = []
                lm = []
                for maintainer in self.__maintainersDic[obj.classId]:
                for maintainer in self.__maintainersDic[obj.classId]:
                    name = maintainer[0]
                    name = maintainer[0]
                    if name.startswith(u'--'):
                    if name.startswith('--'):
                        name = u'<span style="color: red; background-color: yellow">'\
                        name = '<span style="color: red; background-color: yellow">'\
                               + name + u'</span>'
                               + name + '</span>'
                    lm.append(name)
                    lm.append(name)
                mm = u'<br/>'.join(lm)
                mm = '<br/>'.join(lm)


                # The marked adresses (they start with the mark '[unreachable]',
                # The marked adresses (they start with the mark '[unreachable]',
                # '[resigned]', whatever '[xxx]') will not be displayed at all.
                # '[resigned]', whatever '[xxx]') will not be displayed at all.
                # Only the mark will be used instead.
                # Only the mark will be used instead.
                rexMark = re.compile(ur'(?P<mark>\[.*?\])')
                rexMark = re.compile(r'(?P<mark>\[.*?\])')
                le = []
                le = []
                for maintainer in self.__maintainersDic[obj.classId]:
                for maintainer in self.__maintainersDic[obj.classId]:
                    address = maintainer[1]
                    address = maintainer[1]
                    m = rexMark.search(address)
                    m = rexMark.search(address)
                    if m is not None:
                    if m is not None:
                        address = u'<span style="color: brown">'\
                        address = '<span style="color: brown">'\
                                  + m.group(u'mark') + u'</span>'
                                  + m.group('mark') + '</span>'
                    le.append(address)
                    le.append(address)
                ee = u'<br/>'.join(le)
                ee = '<br/>'.join(le)


            # Append the maintainer and e-mail elements.
            # Append the maintainer and e-mail elements.
            lst.append(htmlTdTpl % mm)
            lst.append(htmlTdTpl % mm)
@@ -1940,7 +1941,7 @@ class TrManager:
        htmlTable = htmlTableTpl % (''.join(trlst))
        htmlTable = htmlTableTpl % (''.join(trlst))


        # Define templates for LaTeX table parts of the documentation.
        # Define templates for LaTeX table parts of the documentation.
        latexTableTpl = ur'''
        latexTableTpl = r'''
            \latexonly
            \latexonly
            \footnotesize
            \footnotesize
            \begin{longtable}{|l|l|l|l|}
            \begin{longtable}{|l|l|l|l|}
@@ -1954,7 +1955,7 @@ class TrManager:
            \endlatexonly
            \endlatexonly
            '''
            '''
        latexTableTpl = dedent(latexTableTpl)
        latexTableTpl = dedent(latexTableTpl)
        latexLineTpl = u'\n' + r'  %s & %s & {\tt\tiny %s} & %s \\'
        latexLineTpl = '\n' + r'  %s & %s & {\tt\tiny %s} & %s \\'


        # Loop through transl objects in the order of sorted readable names
        # Loop through transl objects in the order of sorted readable names
        # and add generate the content of the LaTeX table.
        # and add generate the content of the LaTeX table.
@@ -1965,7 +1966,7 @@ class TrManager:
            # in the table is placed explicitly above the first
            # in the table is placed explicitly above the first
            # maintainer. Prepare the arguments for the LaTeX row template.
            # maintainer. Prepare the arguments for the LaTeX row template.
            maintainers = []
            maintainers = []
            if self.__maintainersDic.has_key(obj.classId):
            if obj.classId in self.__maintainersDic:
                maintainers = self.__maintainersDic[obj.classId]
                maintainers = self.__maintainersDic[obj.classId]


            lang = obj.langReadable
            lang = obj.langReadable
@@ -1976,8 +1977,8 @@ class TrManager:
                classId = obj.classId[:-2]
                classId = obj.classId[:-2]
                if classId in self.__translDic:
                if classId in self.__translDic:
                    langNE = self.__translDic[classId].langReadable
                    langNE = self.__translDic[classId].langReadable
                    maintainer = u'see the %s language' % langNE
                    maintainer = 'see the %s language' % langNE
                    email = u'~'
                    email = '~'


            if not maintainer and (obj.classId in self.__maintainersDic):
            if not maintainer and (obj.classId in self.__maintainersDic):
                lm = [ m[0] for m in self.__maintainersDic[obj.classId] ]
                lm = [ m[0] for m in self.__maintainersDic[obj.classId] ]
@@ -1989,27 +1990,27 @@ class TrManager:
            # Use the template to produce the line of the table and insert
            # Use the template to produce the line of the table and insert
            # the hline plus the constructed line into the table content.
            # the hline plus the constructed line into the table content.
            # The underscore character must be escaped.
            # The underscore character must be escaped.
            trlst.append(u'\n  \\hline')
            trlst.append('\n  \\hline')
            s = latexLineTpl % (lang, maintainer, email, status)
            s = latexLineTpl % (lang, maintainer, email, status)
            s = s.replace(u'_', u'\\_')
            s = s.replace('_', '\\_')
            trlst.append(s)
            trlst.append(s)


            # List the other maintainers for the language. Do not set
            # List the other maintainers for the language. Do not set
            # lang and status for them.
            # lang and status for them.
            lang = u'~'
            lang = '~'
            status = u'~'
            status = '~'
            for m in maintainers[1:]:
            for m in maintainers[1:]:
                maintainer = m[0]
                maintainer = m[0]
                email = m[1]
                email = m[1]
                s = latexLineTpl % (lang, maintainer, email, status)
                s = latexLineTpl % (lang, maintainer, email, status)
                s = s.replace(u'_', u'\\_')
                s = s.replace('_', '\\_')
                trlst.append(s)
                trlst.append(s)


        # Join the table lines and insert into the template.
        # Join the table lines and insert into the template.
        latexTable = latexTableTpl % (u''.join(trlst))
        latexTable = latexTableTpl % (''.join(trlst))


        # Put the HTML and LaTeX parts together and define the dic item.
        # Put the HTML and LaTeX parts together and define the dic item.
        tplDic['informationTable'] = htmlTable + u'\n' + latexTable
        tplDic['informationTable'] = htmlTable + '\n' + latexTable


        # Insert the symbols into the document template and write it down.
        # Insert the symbols into the document template and write it down.
        f = codecs.open(fDocName, 'w', 'utf-8')
        f = codecs.open(fDocName, 'w', 'utf-8')
+164 −164

File changed.

Preview size limit exceeded, changes collapsed.

+3 −3
Original line number Original line Diff line number Diff line
@@ -2,7 +2,7 @@ import sys


if (len(sys.argv) > 1):
if (len(sys.argv) > 1):
    if (sys.argv[1] == "ENONLY"):
    if (sys.argv[1] == "ENONLY"):
        print "#define ENGLISH_ONLY"
        print("#define ENGLISH_ONLY")
    else:
    else:
        for x in xrange(1, len(sys.argv)):
        for x in range(1, len(sys.argv)):
            print "#define LANG_%s"%(sys.argv[x])
            print("#define LANG_%s"%(sys.argv[x]))
Loading