summaryrefslogtreecommitdiffstats
path: root/util
diff options
context:
space:
mode:
authorEdward Welbourne <edward.welbourne@qt.io>2021-05-04 12:06:42 +0200
committerEdward Welbourne <edward.welbourne@qt.io>2021-06-07 17:14:14 +0200
commit1a49d7d1e032fe5e3aa829be874d5d2ccca7ce16 (patch)
tree5fd8197c6e73a2d4f4240c65f5315fc933019929 /util
parentcce3445e70ff98e55475c544c43177c2cd4a1034 (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-xutil/locale_database/cldr2qlocalexml.py2
-rw-r--r--util/locale_database/qlocalexml.py33
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):