diff options
author | Alessandro Portale <[email protected]> | 2022-09-26 15:09:59 +0200 |
---|---|---|
committer | Alessandro Portale <[email protected]> | 2022-09-27 06:55:06 +0000 |
commit | bbd64a2c94262d4595ea2aa7dfcf71a08a9eca2d (patch) | |
tree | 96d5d549cb6bc74d24c1693a94fa93d84a61bf52 | |
parent | cbd5e5efeacfd761c06193e2e97212de04099760 (diff) |
Improve scripts/scrubts.py
List the same duplicates that lrelease shows. But better: all
occurrences with full filename:linenumber.
Change-Id: If0cf38183dbdb4118f2152e1ae86ec92bf0ae1cc
Reviewed-by: Alessandro Portale <[email protected]>
-rw-r--r-- | scripts/scrubts.py | 51 |
1 files changed, 40 insertions, 11 deletions
diff --git a/scripts/scrubts.py b/scripts/scrubts.py index a31ef1109ab..9a863970b67 100644 --- a/scripts/scrubts.py +++ b/scripts/scrubts.py @@ -12,6 +12,7 @@ import argparse import pathlib import sys from dataclasses import dataclass +from enum import Enum, auto def rewriteLines(input, scrubbedContext, tsFilePath): result = [] @@ -94,19 +95,46 @@ def findDistinctDuplicates(input, scrubbedContext, tsFilePath): continue if inContext: sourceXml = [] + translationXml = [] lineNr = inputLineNr - for sourceLine in lineIter: # <source>..</source> (possibly multi-line) + + class Position(Enum): + MESSAGESTART = auto() + LOCATION = auto() + SOURCE = auto() + COMMENT = auto() + EXTRACOMMENT = auto() + TRANSLATORCOMMENT = auto() + TRANSLATION = auto() + MESSAGEOVER = auto() + + pos = Position.MESSAGESTART + + for messageLine in lineIter: inputLineNr += 1 - sourceXml.append(sourceLine) - if sourceLine.count(r"</source>") == 1: + if messageLine.count(r"<location") == 1: + pos = Position.LOCATION + elif messageLine.count(r"<source") == 1: + pos = Position.SOURCE + elif messageLine.count(r"<comment") == 1: + pos = Position.COMMENT + elif messageLine.count(r"<extracomment") == 1: + pos = Position.EXTRACOMMENT + elif messageLine.count(r"<translatorcomment") == 1: + pos = Position.TRANSLATORCOMMENT + elif messageLine.count(r"<translation") == 1: + pos = Position.TRANSLATION + elif messageLine.count(r"</message>") == 1: + pos = Position.MESSAGEOVER + + if pos == Position.SOURCE or pos == Position.COMMENT: + sourceXml.append(messageLine) + elif pos == Position.TRANSLATION or pos == Position.EXTRACOMMENT or pos == Position.TRANSLATORCOMMENT: + translationXml.append(messageLine) + elif pos == Position.MESSAGEOVER: break + sourceXmlHash = hash(str(sourceXml)) - translationXml = [] - for translationLine in lineIter: # <translation>..</translation> (possibly multi-line) - inputLineNr += 1 - translationXml.append(translationLine) - if translationLine.count(r"</translation>") == 1: - break translation = Translation(lineNr, translationXml) if sourceXmlHash in messages: messages[sourceXmlHash].translations.append(translation) @@ -117,13 +145,14 @@ def findDistinctDuplicates(input, scrubbedContext, tsFilePath): source = messages[sourceId] translationsCount = len(source.translations) if translationsCount > 1: + print (f"\n==========================================") print (f"\n{translationsCount} duplicates for source:") for sourceXmlLine in source.sourceXml: - print (sourceXmlLine.rstrip()) + print (sourceXmlLine.rstrip()) for translation in source.translations: print (f"\n{tsFilePath}:{translation.lineNr}") for translationXmlLine in translation.translationXml: - print (translationXmlLine.rstrip()) + print (translationXmlLine.rstrip()) def processTsFile(tsFilePath, scrubbedContext): |