From: Günter Milde Date: Sat, 21 Oct 2017 20:25:59 +0000 (+0200) Subject: cmake documentation handling: sort out encoding problems. X-Git-Tag: 2.3.0rc1~29 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=9086db662d47e1b4be93551ccfefa8c1090e040b;p=features.git cmake documentation handling: sort out encoding problems. Let srcipt work under Python2 and Python3, also if the locale is not set to utf8. --- diff --git a/development/cmake/doc/ReplaceValues.py b/development/cmake/doc/ReplaceValues.py index f07ce80bc9..da1d42ab9e 100755 --- a/development/cmake/doc/ReplaceValues.py +++ b/development/cmake/doc/ReplaceValues.py @@ -13,18 +13,18 @@ from __future__ import print_function import sys import re +import codecs Subst = {} # map of desired substitutions prog = re.compile("") def createProg(): - matchingS = "\\b|\\b".join(Subst.keys()) - pattern = "".join(["(.*)(\\b", matchingS, "\\b)(.*)"]) + matchingS = u"\\b|\\b".join(Subst.keys()) + pattern = u"".join(["(.*)(\\b", matchingS, "\\b)(.*)"]) return re.compile(pattern) def SubstituteDataInLine(line): - result = line - m = prog.match(result) + m = prog.match(line) if m: return "".join([SubstituteDataInLine(m.group(1)), Subst[m.group(2)], @@ -33,25 +33,26 @@ def SubstituteDataInLine(line): def SubstituteDataInFile(InFile): - for line in open(InFile): + for line in codecs.open(InFile, 'r', 'UTF-8'): print(SubstituteDataInLine(line[:-1])) ########################################## - -args = sys.argv - -del args[0] # we don't need the name ot this script -while len(args) > 0: - arg = args[0] - entry = args[0].split("=",1) +# ensure standard output with UTF8 encoding: +if sys.version_info < (3,0): + sys.stdout = codecs.getwriter('UTF-8')(sys.stdout) +else: + sys.stdout = codecs.getwriter('UTF-8')(sys.stdout.buffer) + +for arg in sys.argv[1:]: # skip first arg (name of this script) + if sys.version_info < (3,0): + # support non-ASCII characters in arguments + arg = arg.decode(sys.stdin.encoding or 'UTF-8') + entry = arg.split("=", 1) if len(entry) == 2: - key=entry[0] - val=entry[1] + key, val = entry if len(key) > 0: Subst[key] = val else: prog = createProg() - SubstituteDataInFile(args[0]) - del args[0] - + SubstituteDataInFile(arg)