@@ -472,7 +472,10 @@ def _process_local_datas(sup, srcdir, destdir, force=False, dump_json=False):
472472 rbnf_filename = os .path .join (srcdir , 'rbnf' , filename )
473473 if os .path .isfile (rbnf_filename ):
474474 rbnf_tree = parse (rbnf_filename )
475- parse_rbnf_rules (data , rbnf_tree )
475+ try :
476+ rbnf .parse_rbnf_rules (data , rbnf_tree )
477+ except rbnf .RBNFError as e :
478+ log (f"{ data ['locale_id' ]} : Unable to parse rule: { e } " )
476479
477480 write_datafile (data_filename , data , dump_json = dump_json )
478481
@@ -1054,38 +1057,5 @@ def parse_measurement_systems(data, tree):
10541057 _import_type_text (measurement_systems , measurement_system , type = type )
10551058
10561059
1057- def parse_rbnf_rules (data , tree ):
1058- """
1059- Parse rules based on:
1060- http://www.unicode.org/reports/tr35/tr35-47/tr35-numbers.html#Rule-Based_Number_Formatting
1061- """
1062- rbnf_rules = data .setdefault ('rbnf_rules' , {})
1063-
1064- # ElementTree.dump(tree)
1065-
1066- for ruleset_grouping in tree .findall ('.//rbnf/rulesetGrouping' ):
1067- group_name = ruleset_grouping .attrib ['type' ]
1068- rbnf_rules [group_name ] = [] # TODO check for overwrite
1069- for ruleset in ruleset_grouping .findall ('ruleset' ):
1070- ruleset_name = ruleset .attrib ['type' ]
1071- private = ruleset .attrib .get ('access' ) == 'private'
1072- ruleset_obj = rbnf .Ruleset (ruleset_name , private )
1073- for rule in ruleset .findall ('rbnfrule' ):
1074- radix = rule .attrib .get ('radix' )
1075- if radix == "1,000" : # HACK: work around misspelled radix in mt.xml
1076- radix = "1000"
1077- try :
1078- rule_obj = rbnf .Rule (rule .attrib ['value' ], rule .text , radix )
1079- ruleset_obj .rules .append (rule_obj )
1080- except rbnf .TokenizationError :
1081- log ('%s: Unable to parse rule "%s%s: %s "' % (
1082- data ['locale_id' ],
1083- rule .attrib ['value' ],
1084- rule .text ,
1085- '' if radix is None else ('/%s' % radix ),
1086- ))
1087- rbnf_rules [group_name ].append (ruleset_obj )
1088-
1089-
10901060if __name__ == '__main__' :
10911061 main ()
0 commit comments