From 93e2cdcdc0e1a4c54a7449d8af53e6fe58baa49b Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Wed, 1 Nov 2023 20:22:26 +0100 Subject: [PATCH 1/2] Fix rbnf export --- lib/cldr/export.rb | 4 +--- lib/cldr/export/data/rbnf.rb | 30 +++++++++++++++++---------- lib/cldr/export/deep_validate_keys.rb | 14 +++++++++++++ lib/cldr/export/yaml.rb | 2 +- 4 files changed, 35 insertions(+), 15 deletions(-) diff --git a/lib/cldr/export.rb b/lib/cldr/export.rb index 3942c887..9f14bf7a 100644 --- a/lib/cldr/export.rb +++ b/lib/cldr/export.rb @@ -191,9 +191,7 @@ def shared_component?(component) end def should_merge_root?(component) - return false if [:Rbnf, :Fields].include?(component) - - true + ![:Fields].include?(component) end end end diff --git a/lib/cldr/export/data/rbnf.rb b/lib/cldr/export/data/rbnf.rb index dc214186..5eff2ad3 100644 --- a/lib/cldr/export/data/rbnf.rb +++ b/lib/cldr/export/data/rbnf.rb @@ -17,31 +17,39 @@ def rule_groups return {} if grouping_nodes.empty? grouping_nodes.map do |grouping_node| - { - type: grouping_node.attribute("type").value, - ruleset: (grouping_node / "ruleset").map do |ruleset_node| - rule_set(ruleset_node) - end, - } - end + type = grouping_node.attribute("type").value.underscore + next if type == 'numbering_system_rules' && !is_a?(RbnfRoot) + + [ + type, + (grouping_node / "ruleset").map do |ruleset_node| + [ + ruleset_node.attribute("type").value, + rule_set(ruleset_node) + ] + end.to_h, + ] + end.compact.to_h end def rule_set(ruleset_node) attrs = { - type: ruleset_node.attribute("type").value, rules: (ruleset_node / "rbnfrule").map do |rule_node| radix = if (radix_attr = rule_node.attribute("radix")) cast_value(radix_attr.value) end attrs = { - value: cast_value(rule_node.attribute("value").value), rule: fix_rule(rule_node.text), } attrs[:radix] = radix if radix - attrs - end, + + [ + cast_value(rule_node.attribute("value").value).to_s, + attrs + ] + end.to_h, } access = ruleset_node.attribute("access") diff --git a/lib/cldr/export/deep_validate_keys.rb b/lib/cldr/export/deep_validate_keys.rb index a763d250..e1eae7d4 100644 --- a/lib/cldr/export/deep_validate_keys.rb +++ b/lib/cldr/export/deep_validate_keys.rb @@ -33,6 +33,20 @@ def validate(hash, component, key_path = []) ], RegionCurrencies: [["region_currencies", "."]], ParentLocales: [["."]], + Rbnf: [ + ["rbnf", "grouping", "ordinal_rules", "."], + ["rbnf", "grouping", "ordinal_rules", ".", "rules", "."], + ["rbnf", "grouping", "spellout_rules", "."], + ["rbnf", "grouping", "spellout_rules", ".", "rules", "."], + ], + RbnfRoot: [ + ["rbnf", "grouping", "ordinal_rules", "."], + ["rbnf", "grouping", "ordinal_rules", ".", "rules", "."], + ["rbnf", "grouping", "numbering_system_rules", "."], + ["rbnf", "grouping", "numbering_system_rules", ".", "rules", "."], + ["rbnf", "grouping", "spellout_rules", "."], + ["rbnf", "grouping", "spellout_rules", ".", "rules", "."], + ], Subdivisions: [["subdivisions", "."]], Territories: [["territories", "."]], TerritoriesContainment: [["territories", "."]], diff --git a/lib/cldr/export/yaml.rb b/lib/cldr/export/yaml.rb index 0ae1bde8..3e920115 100644 --- a/lib/cldr/export/yaml.rb +++ b/lib/cldr/export/yaml.rb @@ -18,7 +18,7 @@ def export(locale, component, options = {}) private - UNSORTED_COMPONENTS = [:Calendars, :Delimiters, :Lists].freeze + UNSORTED_COMPONENTS = [:Calendars, :Delimiters, :Lists, :Rbnf, :RbnfRoot].freeze def format(data, locale, component) data.deep_prune! From 07bb54d4644167bd978e3513f1c2e22f1077d789 Mon Sep 17 00:00:00 2001 From: Christian Schmidt Date: Thu, 2 Nov 2023 07:00:10 +0100 Subject: [PATCH 2/2] lint --- lib/cldr/export/data/rbnf.rb | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lib/cldr/export/data/rbnf.rb b/lib/cldr/export/data/rbnf.rb index 5eff2ad3..a678d5ae 100644 --- a/lib/cldr/export/data/rbnf.rb +++ b/lib/cldr/export/data/rbnf.rb @@ -18,14 +18,14 @@ def rule_groups grouping_nodes.map do |grouping_node| type = grouping_node.attribute("type").value.underscore - next if type == 'numbering_system_rules' && !is_a?(RbnfRoot) + next if type == "numbering_system_rules" && !is_a?(RbnfRoot) [ type, (grouping_node / "ruleset").map do |ruleset_node| [ ruleset_node.attribute("type").value, - rule_set(ruleset_node) + rule_set(ruleset_node), ] end.to_h, ] @@ -47,7 +47,7 @@ def rule_set(ruleset_node) [ cast_value(rule_node.attribute("value").value).to_s, - attrs + attrs, ] end.to_h, }