From 93b31af2d344dbc41f8ae5b345fd7a35d0e8c812 Mon Sep 17 00:00:00 2001 From: KoffeinFlummi Date: Tue, 7 Apr 2015 21:38:27 +0200 Subject: [PATCH] Properly indent stringtable scripts --- tools/stringtablediag.py | 158 ++++++++++++++-------------- tools/stringtableduplicates.py | 68 ++++++------ tools/stringtablemerger.py | 186 ++++++++++++++++----------------- 3 files changed, 206 insertions(+), 206 deletions(-) diff --git a/tools/stringtablediag.py b/tools/stringtablediag.py index 3e4d906158..c4aab0b104 100755 --- a/tools/stringtablediag.py +++ b/tools/stringtablediag.py @@ -11,109 +11,109 @@ from xml.dom import minidom # Checks for missing translations and all that jazz. def get_all_languages(projectpath): - """ Checks what languages exist in the repo. """ - languages = [] + """ Checks what languages exist in the repo. """ + languages = [] - for module in os.listdir(projectpath): - if module[0] == ".": - continue + for module in os.listdir(projectpath): + if module[0] == ".": + continue + + stringtablepath = os.path.join(projectpath, module, "stringtable.xml") + try: + xmldoc = minidom.parse(stringtablepath) + except: + continue + + keys = xmldoc.getElementsByTagName("Key") + for key in keys: + for child in key.childNodes: + try: + if not child.tagName in languages: + languages.append(child.tagName) + except: + continue + + return languages + +def check_module(projectpath, module, languages): + """ Checks the given module for all the different languages. """ + localized = [] stringtablepath = os.path.join(projectpath, module, "stringtable.xml") try: - xmldoc = minidom.parse(stringtablepath) + xmldoc = minidom.parse(stringtablepath) except: - continue + return 0, localized - keys = xmldoc.getElementsByTagName("Key") - for key in keys: - for child in key.childNodes: - try: - if not child.tagName in languages: - languages.append(child.tagName) - except: - continue + keynumber = len(xmldoc.getElementsByTagName("Key")) - return languages + for language in languages: + localized.append(len(xmldoc.getElementsByTagName(language))) -def check_module(projectpath, module, languages): - """ Checks the given module for all the different languages. """ - localized = [] - - stringtablepath = os.path.join(projectpath, module, "stringtable.xml") - try: - xmldoc = minidom.parse(stringtablepath) - except: - return 0, localized - - keynumber = len(xmldoc.getElementsByTagName("Key")) - - for language in languages: - localized.append(len(xmldoc.getElementsByTagName(language))) - - return keynumber, localized + return keynumber, localized def main(): - scriptpath = os.path.realpath(__file__) - projectpath = os.path.dirname(os.path.dirname(scriptpath)) - projectpath = os.path.join(projectpath, "addons") + scriptpath = os.path.realpath(__file__) + projectpath = os.path.dirname(os.path.dirname(scriptpath)) + projectpath = os.path.join(projectpath, "addons") - print("#########################") - print("# Stringtable Diag Tool #") - print("#########################") + print("#########################") + print("# Stringtable Diag Tool #") + print("#########################") - languages = get_all_languages(projectpath) + languages = get_all_languages(projectpath) - print("\nLanguages present in the repo:") - print(", ".join(languages)) + print("\nLanguages present in the repo:") + print(", ".join(languages)) - keysum = 0 - localizedsum = list(map(lambda x: 0, languages)) - missing = list(map(lambda x: [], languages)) + keysum = 0 + localizedsum = list(map(lambda x: 0, languages)) + missing = list(map(lambda x: [], languages)) - for module in os.listdir(projectpath): - keynumber, localized = check_module(projectpath, module, languages) + for module in os.listdir(projectpath): + keynumber, localized = check_module(projectpath, module, languages) - if keynumber == 0: - continue + if keynumber == 0: + continue - print("\n# " + module) + print("\n# " + module) - keysum += keynumber - for i in range(len(localized)): - print(" %s %s / %i" % ((languages[i]+":").ljust(10), str(localized[i]).ljust(3), keynumber)) - localizedsum[i] += localized[i] - if localized[i] < keynumber: - missing[i].append(module) + keysum += keynumber + for i in range(len(localized)): + print(" %s %s / %i" % ((languages[i]+":").ljust(10), str(localized[i]).ljust(3), keynumber)) + localizedsum[i] += localized[i] + if localized[i] < keynumber: + missing[i].append(module) - print("\n###########") - print("# RESULTS #") - print("###########") + print("\n###########") + print("# RESULTS #") + print("###########") - print("\nTotal number of keys: %i\n" % (keysum)) + print("\nTotal number of keys: %i\n" % (keysum)) - for i in range(len(languages)): - if localizedsum[i] == keysum: - print("%s No missing stringtable entries." % ((languages[i] + ":").ljust(12))) - else: - print("%s %s missing stringtable entry/entries." % ((languages[i] + ":").ljust(12), str(keysum - localizedsum[i]).rjust(4)), end="") - print(" ("+", ".join(missing[i])+")") + for i in range(len(languages)): + if localizedsum[i] == keysum: + print("%s No missing stringtable entries." % ((languages[i] + ":").ljust(12))) + else: + print("%s %s missing stringtable entry/entries." % ((languages[i] + ":").ljust(12), str(keysum - localizedsum[i]).rjust(4)), end="") + print(" ("+", ".join(missing[i])+")") - print("\n\n### MARKDOWN ###") + print("\n\n### MARKDOWN ###") - print("\nTotal number of keys: %i\n" % (keysum)) + print("\nTotal number of keys: %i\n" % (keysum)) - print("| Language | Missing Entries | Relevant Modules | % done |") - print("|----------|----------------:|------------------|--------|") + print("| Language | Missing Entries | Relevant Modules | % done |") + print("|----------|----------------:|------------------|--------|") - for i, language in enumerate(languages): - if localizedsum[i] == keysum: - print("| {} | 0 | - | 100% |".format(language)) - else: - print("| {} | {} | {} | {}% |".format( - language, - keysum - localizedsum[i], - ", ".join(missing[i]), - round(100 * localizedsum[i] / keysum))) + for i, language in enumerate(languages): + if localizedsum[i] == keysum: + print("| {} | 0 | - | 100% |".format(language)) + else: + print("| {} | {} | {} | {}% |".format( + language, + keysum - localizedsum[i], + ", ".join(missing[i]), + round(100 * localizedsum[i] / keysum))) if __name__ == "__main__": - main() + main() diff --git a/tools/stringtableduplicates.py b/tools/stringtableduplicates.py index d72cc3e6f6..16b2763853 100755 --- a/tools/stringtableduplicates.py +++ b/tools/stringtableduplicates.py @@ -10,47 +10,47 @@ from xml.dom import minidom # Counts duplicate stringtable entries def main(): - scriptpath = os.path.realpath(__file__) - projectpath = os.path.dirname(os.path.dirname(scriptpath)) - projectpath = os.path.join(projectpath, "addons") + scriptpath = os.path.realpath(__file__) + projectpath = os.path.dirname(os.path.dirname(scriptpath)) + projectpath = os.path.join(projectpath, "addons") - entries = {} + entries = {} - for module in os.listdir(projectpath): - if module[0] == ".": - continue - stringtablepath = os.path.join(projectpath, module, "stringtable.xml") - try: - xmldoc = minidom.parse(stringtablepath) - except: - continue + for module in os.listdir(projectpath): + if module[0] == ".": + continue + stringtablepath = os.path.join(projectpath, module, "stringtable.xml") + try: + xmldoc = minidom.parse(stringtablepath) + except: + continue - keys = xmldoc.getElementsByTagName("English") - for key in keys: - text = key.firstChild.wholeText - parentid = key.parentNode.getAttribute("ID") - if text in entries: - entries[text].append(parentid) - else: - entries[text] = [parentid] + keys = xmldoc.getElementsByTagName("English") + for key in keys: + text = key.firstChild.wholeText + parentid = key.parentNode.getAttribute("ID") + if text in entries: + entries[text].append(parentid) + else: + entries[text] = [parentid] - entries = {k: v for k, v in entries.items() if len(v) > 1} - output = list([[k, v] for k, v in entries.items()]) - output = sorted(output, key=lambda x: len(x[1])*-1) + entries = {k: v for k, v in entries.items() if len(v) > 1} + output = list([[k, v] for k, v in entries.items()]) + output = sorted(output, key=lambda x: len(x[1])*-1) - print("Potential duplicate stringtable entries:\n") - for l in output: - k, v = l - print(k.ljust(50), end=" ") - print("Listed %i times in: %s" % (len(v), ", ".join(v))) + print("Potential duplicate stringtable entries:\n") + for l in output: + k, v = l + print(k.ljust(50), end=" ") + print("Listed %i times in: %s" % (len(v), ", ".join(v))) - print("\n# MARKDOWN\n") + print("\n# MARKDOWN\n") - print("| Text | # Occurences | Containing Entries |") - print("|------|-------------:|--------------------|") + print("| Text | # Occurences | Containing Entries |") + print("|------|-------------:|--------------------|") - for l in output: - print("| %s | %i | %s |" % (l[0], len(l[1]), ", ".join(l[1]))) + for l in output: + print("| %s | %i | %s |" % (l[0], len(l[1]), ", ".join(l[1]))) if __name__ == "__main__": - main() + main() diff --git a/tools/stringtablemerger.py b/tools/stringtablemerger.py index 9558ec081b..3859409e45 100755 --- a/tools/stringtablemerger.py +++ b/tools/stringtablemerger.py @@ -13,128 +13,128 @@ from xml.dom import minidom # in the given language from the given dir. def get_modules(projectpath): - """ Get all the modules of the project. """ - modules = [] + """ Get all the modules of the project. """ + modules = [] - for i in os.listdir(projectpath): - path = os.path.join(projectpath, i) - if not os.path.isdir(path): - continue - if i[0] == ".": - continue - modules.append(i) + for i in os.listdir(projectpath): + path = os.path.join(projectpath, i) + if not os.path.isdir(path): + continue + if i[0] == ".": + continue + modules.append(i) - return modules + return modules def contains_language(key, language): - """ Checks whether a given key contains a certain language. """ - for child in key.childNodes: - try: - assert(child.tagName == language) - return True - except: - pass + """ Checks whether a given key contains a certain language. """ + for child in key.childNodes: + try: + assert(child.tagName == language) + return True + except: + pass - return False + return False def get_entry_by_id(keys, keyid): - """ Returns the first child of keys with ID='keyid'. """ - for key in keys: - if key.getAttribute("ID") == keyid: - return key + """ Returns the first child of keys with ID='keyid'. """ + for key in keys: + if key.getAttribute("ID") == keyid: + return key - return False + return False def replace_entries(oldpath, newpath, language, breakdown): - """ Replaces all new entries of the given language in the given module. """ - oldfile = minidom.parse(oldpath) - newfile = minidom.parse(newpath) + """ Replaces all new entries of the given language in the given module. """ + oldfile = minidom.parse(oldpath) + newfile = minidom.parse(newpath) - oldkeys = oldfile.getElementsByTagName("Key") - newkeys = newfile.getElementsByTagName("Key") - newkeys = list(filter(lambda x: contains_language(x, language), newkeys)) + oldkeys = oldfile.getElementsByTagName("Key") + newkeys = newfile.getElementsByTagName("Key") + newkeys = list(filter(lambda x: contains_language(x, language), newkeys)) - for newkey in newkeys: - keyid = newkey.getAttribute("ID") - oldkey = get_entry_by_id(oldkeys, keyid) + for newkey in newkeys: + keyid = newkey.getAttribute("ID") + oldkey = get_entry_by_id(oldkeys, keyid) - if not oldkey: - continue + if not oldkey: + continue - if breakdown: - print(" Merging %s translation for %s" % (language, keyid)) + if breakdown: + print(" Merging %s translation for %s" % (language, keyid)) - newentry = newkey.getElementsByTagName(language)[0].firstChild + newentry = newkey.getElementsByTagName(language)[0].firstChild - try: - # An entry for this language already exists, overwrite it - oldentry = oldkey.getElementsByTagName(language)[0].firstChild - oldentry.replaceWholeText(newentry.wholeText) - except: - # There is no entry for this language yet, make one - oldentry = oldfile.createElement(language) - oldentry.appendChild(oldfile.createTextNode(newentry.wholeText)) - # Some whitespace tetris to maintain file structure - oldkey.insertBefore(oldfile.createTextNode("\n "), oldkey.lastChild) - oldkey.insertBefore(oldentry, oldkey.lastChild) + try: + # An entry for this language already exists, overwrite it + oldentry = oldkey.getElementsByTagName(language)[0].firstChild + oldentry.replaceWholeText(newentry.wholeText) + except: + # There is no entry for this language yet, make one + oldentry = oldfile.createElement(language) + oldentry.appendChild(oldfile.createTextNode(newentry.wholeText)) + # Some whitespace tetris to maintain file structure + oldkey.insertBefore(oldfile.createTextNode("\n "), oldkey.lastChild) + oldkey.insertBefore(oldentry, oldkey.lastChild) - # Make a nice string - xmlstring = oldfile.toxml() - xmlstring = xmlstring.replace('" ?>', '" encoding="utf-8"?>') + # Make a nice string + xmlstring = oldfile.toxml() + xmlstring = xmlstring.replace('" ?>', '" encoding="utf-8"?>') - # Replace the newlines that minidom swallows - xmlstring = xmlstring.replace("><", ">\n<") - xmlstring += "\n" + # Replace the newlines that minidom swallows + xmlstring = xmlstring.replace("><", ">\n<") + xmlstring += "\n" - fhandle = open(oldpath, "w") - fhandle.write(xmlstring) - fhandle.close() + fhandle = open(oldpath, "w") + fhandle.write(xmlstring) + fhandle.close() - return len(newkeys) + return len(newkeys) def main(sourcepath, language, breakdown): - scriptpath = os.path.realpath(__file__) - projectpath = os.path.dirname(os.path.dirname(scriptpath)) - projectpath = os.path.join(projectpath, "addons") + scriptpath = os.path.realpath(__file__) + projectpath = os.path.dirname(os.path.dirname(scriptpath)) + projectpath = os.path.join(projectpath, "addons") - modules = get_modules(projectpath) - modulecounter = 0 - keycounter = 0 + modules = get_modules(projectpath) + modulecounter = 0 + keycounter = 0 - for module in modules: - oldpath = os.path.join(projectpath, module, "stringtable.xml") - newpath = os.path.join(sourcepath, module, "stringtable.xml") + for module in modules: + oldpath = os.path.join(projectpath, module, "stringtable.xml") + newpath = os.path.join(sourcepath, module, "stringtable.xml") - # Some translators extract the lowercase PBOs, so the module name might - # be lowercase (obviously only matters on Linux) - if not os.path.exists(newpath): - newpath = os.path.join(sourcepath, module.lower(), "stringtable.xml") + # Some translators extract the lowercase PBOs, so the module name might + # be lowercase (obviously only matters on Linux) + if not os.path.exists(newpath): + newpath = os.path.join(sourcepath, module.lower(), "stringtable.xml") - # Translator didn't include this module, skip - if not os.path.exists(newpath): - continue + # Translator didn't include this module, skip + if not os.path.exists(newpath): + continue - keynum = replace_entries(oldpath, newpath, language, breakdown) - modulecounter += 1 - keycounter += keynum + keynum = replace_entries(oldpath, newpath, language, breakdown) + modulecounter += 1 + keycounter += keynum - print("# Merged %i entry/entries in %s" % (keynum, module)) - if breakdown: - print("") + print("# Merged %i entry/entries in %s" % (keynum, module)) + if breakdown: + print("") - print("") - print("# Merged %i entry/entries in %i modules" % (keycounter, modulecounter)) + print("") + print("# Merged %i entry/entries in %i modules" % (keycounter, modulecounter)) if __name__ == "__main__": - try: - sourcepath = os.path.normpath(os.path.join(os.getcwd(), sys.argv[1])) - language = sys.argv[2] - - assert(os.path.exists(sourcepath)) - except: - print("ERROR: Missing arguments of invalid path.") - print("\nUsage:") - print("[script] [path to new project] [language]") - sys.exit(1) + try: + sourcepath = os.path.normpath(os.path.join(os.getcwd(), sys.argv[1])) + language = sys.argv[2] + + assert(os.path.exists(sourcepath)) + except: + print("ERROR: Missing arguments of invalid path.") + print("\nUsage:") + print("[script] [path to new project] [language]") + sys.exit(1) - main(sourcepath, language, "--breakdown" in sys.argv) + main(sourcepath, language, "--breakdown" in sys.argv)