diff options
author | Edward Welbourne <edward.welbourne@qt.io> | 2021-05-04 12:06:42 +0200 |
---|---|---|
committer | Edward Welbourne <edward.welbourne@qt.io> | 2021-06-07 17:14:14 +0200 |
commit | 1a49d7d1e032fe5e3aa829be874d5d2ccca7ce16 (patch) | |
tree | 5fd8197c6e73a2d4f4240c65f5315fc933019929 /util | |
parent | cce3445e70ff98e55475c544c43177c2cd4a1034 (diff) |
Report unused enum members after CLDR data scan
We should at least know when members of QLocale's enums aren't adding
any value, and it may make sense to deprecate the unused ones.
Change-Id: Icf202f81d2a35904c13ccdc202d41985bcb3f2e6
Reviewed-by: Cristian Maureira-Fredes <cristian.maureira-fredes@qt.io>
Diffstat (limited to 'util')
-rwxr-xr-x | util/locale_database/cldr2qlocalexml.py | 2 | ||||
-rw-r--r-- | util/locale_database/qlocalexml.py | 33 |
2 files changed, 31 insertions, 4 deletions
diff --git a/util/locale_database/cldr2qlocalexml.py b/util/locale_database/cldr2qlocalexml.py index 72f489d112..4e66d6f236 100755 --- a/util/locale_database/cldr2qlocalexml.py +++ b/util/locale_database/cldr2qlocalexml.py @@ -113,7 +113,7 @@ def main(args, out, err): writer.likelySubTags(reader.likelySubTags()) writer.locales(reader.readLocales(calendars), calendars) - writer.close() + writer.close(err.write) return 0 if __name__ == '__main__': diff --git a/util/locale_database/qlocalexml.py b/util/locale_database/qlocalexml.py index 014b07ca3e..eb7c1c94bc 100644 --- a/util/locale_database/qlocalexml.py +++ b/util/locale_database/qlocalexml.py @@ -338,6 +338,13 @@ class QLocaleXmlWriter (object): self.__enumTable('language', language_map) self.__enumTable('script', script_map) self.__enumTable('territory', territory_map) + # Prepare to detect any unused codes (see __writeLocale(), close()): + self.__languages = set(p[1] for p in language_map.values() + if not p[1].isspace()) + self.__scripts = set(p[1] for p in script_map.values() + if p[1] != 'ZZ') + self.__territories = set(p[1] for p in territory_map.values() + if p[1] != 'Zzzz') def likelySubTags(self, entries): self.__openTag('likelySubtags') @@ -351,13 +358,13 @@ class QLocaleXmlWriter (object): def locales(self, locales, calendars): self.__openTag('localeList') self.__openTag('locale') - Locale.C(calendars).toXml(self.inTag, calendars) + self.__writeLocale(Locale.C(calendars), calendars) self.__closeTag('locale') keys = locales.keys() keys.sort() for key in keys: self.__openTag('locale') - locales[key].toXml(self.inTag, calendars) + self.__writeLocale(locales[key], calendars) self.__closeTag('locale') self.__closeTag('localeList') @@ -367,11 +374,25 @@ class QLocaleXmlWriter (object): def inTag(self, tag, text): self.__write('<{0}>{1}</{0}>'.format(tag, text)) - def close(self): + def close(self, grumble): + """Finish writing and grumble any issues discovered.""" if self.__rawOutput != self.__complain: self.__write('</localeDatabase>') self.__rawOutput = self.__complain + if self.__languages or self.__scripts or self.territories: + grumble('Some enum members are unused, corresponding to these tags:\n') + import textwrap + def kvetch(kind, seq, g = grumble, w = textwrap.wrap): + g('\n\t'.join(w(' {}: '.format(kind) + ', '.join(seq), width=80)) + '\n') + if self.__languages: + kvetch('Languages', self.__languages) + if self.__scripts: + kvetch('Scripts', self.__scripts) + if self.__territories: + kvetch('Territories', self.__territories) + grumble('It may make sense to deprecate them.') + # Implementation details @staticmethod def __printit(text): @@ -398,6 +419,12 @@ class QLocaleXmlWriter (object): # self.inTag('variant', likely[3]) self.__closeTag(tag) + def __writeLocale(self, locale, calendars): + locale.toXml(self.inTag, calendars) + self.__languages.discard(locale.language_code) + self.__scripts.discard(locale.script_code) + self.__territories.discard(locale.territory_code) + def __openTag(self, tag): self.__write('<{}>'.format(tag)) def __closeTag(self, tag): |