--- a/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java Mon Sep 09 12:00:36 2019 -0700
+++ b/make/jdk/src/classes/build/tools/cldrconverter/LDMLParseHandler.java Mon Sep 09 12:42:01 2019 -0700
@@ -508,7 +508,8 @@
String type = attributes.getValue("type");
if (null == type) {
// format data for decimal number format
- pushStringEntry(qName, attributes, "NumberPatterns/decimal");
+ pushStringEntry(qName, attributes,
+ currentNumberingSystem + "NumberPatterns/decimal");
currentStyle = type;
} else {
switch (type) {
@@ -586,6 +587,18 @@
pushContainer(qName, attributes);
}
break;
+ case "currencyFormats":
+ case "decimalFormats":
+ case "percentFormats":
+ {
+ String script = attributes.getValue("numberSystem");
+ if (script != null) {
+ addNumberingScript(script);
+ currentNumberingSystem = script + ".";
+ }
+ pushContainer(qName, attributes);
+ }
+ break;
case "currencyFormatLength":
if (attributes.getValue("type") == null) {
// skipping type="short" data
@@ -601,9 +614,11 @@
// copy string for later assembly into NumberPatterns
String cfStyle = attributes.getValue("type");
if (cfStyle.equals("standard")) {
- pushStringEntry(qName, attributes, "NumberPatterns/currency");
+ pushStringEntry(qName, attributes,
+ currentNumberingSystem + "NumberPatterns/currency");
} else if (cfStyle.equals("accounting")) {
- pushStringEntry(qName, attributes, "NumberPatterns/accounting");
+ pushStringEntry(qName, attributes,
+ currentNumberingSystem + "NumberPatterns/accounting");
} else {
pushIgnoredContainer(qName);
}
@@ -613,7 +628,8 @@
// for FormatData
// copy string for later assembly into NumberPatterns
if (attributes.getValue("type").equals("standard")) {
- pushStringEntry(qName, attributes, "NumberPatterns/percent");
+ pushStringEntry(qName, attributes,
+ currentNumberingSystem + "NumberPatterns/percent");
} else {
pushIgnoredContainer(qName);
}
@@ -641,13 +657,7 @@
break;
}
- @SuppressWarnings("unchecked")
- List<String> numberingScripts = (List<String>) get("numberingScripts");
- if (numberingScripts == null) {
- numberingScripts = new ArrayList<>();
- put("numberingScripts", numberingScripts);
- }
- numberingScripts.add(script);
+ addNumberingScript(script);
put(currentNumberingSystem + "NumberElements/zero", digits.substring(0, 1));
pushContainer(qName, attributes);
}
@@ -1020,6 +1030,13 @@
compactCount = "";
putIfEntry();
break;
+ case "currencyFormats":
+ case "decimalFormats":
+ case "percentFormats":
+ case "symbols":
+ currentNumberingSystem = "";
+ putIfEntry();
+ break;
default:
putIfEntry();
}
@@ -1086,4 +1103,16 @@
return key;
}
}
+
+ private void addNumberingScript(String script) {
+ @SuppressWarnings("unchecked")
+ List<String> numberingScripts = (List<String>) get("numberingScripts");
+ if (numberingScripts == null) {
+ numberingScripts = new ArrayList<>();
+ put("numberingScripts", numberingScripts);
+ }
+ if (!numberingScripts.contains(script)) {
+ numberingScripts.add(script);
+ }
+ }
}