From 9086db662d47e1b4be93551ccfefa8c1090e040b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?G=C3=BCnter=20Milde?= Date: Sat, 21 Oct 2017 22:25:59 +0200 Subject: [PATCH] cmake documentation handling: sort out encoding problems. Let srcipt work under Python2 and Python3, also if the locale is not set to utf8. --- development/cmake/doc/ReplaceValues.py | 33 +++++++++++++------------- 1 file changed, 17 insertions(+), 16 deletions(-) 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])) ########################################## +# 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) -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) +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)