Skip to content

Commit 4705173

Browse files
committed
rbnf: correct radix reading
1 parent 775851e commit 4705173

2 files changed

Lines changed: 9 additions & 18 deletions

File tree

babel/rbnf.py

Lines changed: 5 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -619,16 +619,12 @@ def __init__(self, value, text, radix=None):
619619
if value in self.specials:
620620
self.value = value
621621
else:
622-
try:
623-
self.value = int(value)
624-
except:
625-
warnings.warn("Unknown rule value: [%s]" % value, SyntaxWarning)
622+
self.value = int(value)
626623

627624
self.text = text
628-
self._radix = radix
629-
630-
self._parse(text)
625+
self.radix = int(radix or 10)
631626

627+
self._parse(text)
632628

633629
def apply(self, number, context):
634630
"""
@@ -685,14 +681,8 @@ def divisor(self):
685681
if isinstance(self.value, int):
686682
if self.value == 0:
687683
return 1
688-
exp = decimal.Decimal(self.value).ln()/decimal.Decimal(self.radix).ln()
689-
return int(self.radix**math.floor(exp))
690-
691-
692-
@property
693-
def radix(self):
694-
return self._radix or 10
695-
684+
exp = decimal.Decimal(self.value).ln() / decimal.Decimal(self.radix).ln()
685+
return int(self.radix ** math.floor(exp))
696686

697687
@property
698688
def substitutions(self):

scripts/import_cldr.py

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,6 @@ def parse_global(srcdir, sup):
225225
all_currencies = collections.defaultdict(set)
226226
currency_fractions = global_data.setdefault('currency_fractions', {})
227227
territory_languages = global_data.setdefault('territory_languages', {})
228-
rbnf_locales = global_data.setdefault('rbnf_locales', [])
229228
bcp47_timezone = parse(os.path.join(srcdir, 'bcp47', 'timezone.xml'))
230229
sup_windows_zones = parse(os.path.join(sup_dir, 'windowsZones.xml'))
231230
sup_metadata = parse(os.path.join(sup_dir, 'supplementalMetadata.xml'))
@@ -1015,17 +1014,19 @@ def parse_rbnf_rules(data, tree):
10151014
ruleset_obj = rbnf.Ruleset(ruleset_name, private)
10161015
for rule in ruleset.findall('rbnfrule'):
10171016
radix = rule.attrib.get('radix')
1017+
if radix == "1,000": # HACK: work around misspelled radix in mt.xml
1018+
radix = "1000"
10181019
try:
10191020
rule_obj = rbnf.Rule(rule.attrib['value'], rule.text, radix)
1021+
ruleset_obj.rules.append(rule_obj)
10201022
except rbnf.TokenizationError as e:
10211023
log('%s: Unable to parse rule "%s%s: %s "' % (
10221024
data['locale_id'],
10231025
rule.attrib['value'],
10241026
rule.text,
10251027
'' if radix is None else ('/%s' % radix),
10261028
))
1027-
ruleset_obj.rules.append(rule_obj)
1028-
rbnf_rules[group_name].append(ruleset_obj)
1029+
rbnf_rules[group_name].append(ruleset_obj)
10291030

10301031

10311032
if __name__ == '__main__':

0 commit comments

Comments
 (0)