doc_toc.build_toc(str(target[0]), [file.abspath for file in source])
-def relativePath(env, path):
- '''return relative path from top source dir'''
- # full pathname of path
- path1 = os.path.normpath(env.File(path).abspath).split(os.sep)
- path2 = os.path.normpath(env.Dir('$TOP_SRCDIR').abspath).split(os.sep)
- if path1[:len(path2)] != path2:
- print "Path %s is not under top source directory" % path
- return os.path.join(*path1[len(path2):])
-
-
-def env_language_l10n(target, source, env):
- '''Generate pot file from lib/language'''
- input = open(env.File(source[0]).abspath)
+def env_cat(target, source, env):
+ '''Cat source > target. Avoid pipe to increase portability'''
output = open(env.File(target[0]).abspath, 'w')
- for lineno, line in enumerate(input.readlines()):
- if line[0] == '#':
- continue
- items = line.split('"')
- # empty lines?
- if len(items) != 5:
- print 'Warning: this line looks strange:'
- print line
- # From:
- # afrikaans afrikaans "Afrikaans" false iso8859-15 af_ZA ""
- # To:
- # #: lib/languages:2
- # msgid "Afrikaans"
- # msgstr ""
- print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % (relativePath(env, source[0]), lineno+1, items[1])
- input.close()
- output.close()
-
-
-def env_qt4_l10n(target, source, env):
- '''Generate pot file from src/frontends/qt4/ui/*.ui'''
- output = open(env.File(target[0]).abspath, 'w')
- pat = re.compile(r'\s*<string>(.*)</string>')
- prop = re.compile(r'\s*<property.*name.*=.*shortcut')
- for src in source:
- input = open(env.File(src).abspath)
- skipNextLine = False
- for lineno, line in enumerate(input.readlines()):
- # looking for a line with <string></string>
- if skipNextLine:
- skipNextLine = False
- continue
- # skip the line after <property name=shortcut>
- if prop.match(line):
- skipNextLine = True
- continue
- # get lines that match <string>...</string>
- if pat.match(line):
- (string,) = pat.match(line).groups()
- string = string.replace('&', '&').replace('<', '<').replace('>', '>').replace('"', r'\"')
- print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
- (relativePath(env, src), lineno+1, string)
- input.close()
- output.close()
-
-
-def env_layouts_l10n(target, source, env):
- '''Generate pot file from lib/layouts/*.layout and *.inc'''
- output = open(env.File(target[0]).abspath, 'w')
- Style = re.compile(r'^Style\s+(.*)')
- # include ???LabelString???, but exclude comment lines
- LabelString = re.compile(r'^[^#]*LabelString\S*\s+(.*)')
- GuiName = re.compile(r'\s*GuiName\s+(.*)')
- ListName = re.compile(r'\s*ListName\s+(.*)')
for src in source:
input = open(env.File(src).abspath)
- for lineno, line in enumerate(input.readlines()):
- # get lines that match <string>...</string>
- if Style.match(line):
- (string,) = Style.match(line).groups()
- string = string.replace('_', ' ')
- elif LabelString.match(line):
- (string,) = LabelString.match(line).groups()
- elif GuiName.match(line):
- (string,) = GuiName.match(line).groups()
- elif ListName.match(line):
- (string,) = ListName.match(line).groups()
- else:
- continue
- string = string.replace('\\', '\\\\').replace('"', '')
- if string != "":
- print >> output, '#: %s:%d\nmsgid "%s"\nmsgstr ""\n' % \
- (relativePath(env, src), lineno+1, string)
+ output.write(input.read())
input.close()
output.close()