diff options
author | Shane Carr <sffc@google.com> | 2017-05-18 21:57:13 +0000 |
---|---|---|
committer | Fredrik Roubert <roubert@google.com> | 2017-07-06 14:36:53 +0200 |
commit | 1340c55a2129fc8a17728ee03711e678ad7f31d7 (patch) | |
tree | d1cc7abd2dbab47d89ef8bcf07a20a75f6886b04 /icu4j/main/classes | |
parent | 6ecdcbc7386b1554409c5957c5252983e0e61bbd (diff) | |
download | icu-1340c55a2129fc8a17728ee03711e678ad7f31d7.tar.gz |
Cherry-pick: ticket:13073 Exposing PluralRules as a setter on the number format property bag.
http://bugs.icu-project.org/trac/changeset/40122
Change-Id: I8dfc2b6b9f2d9fe733196f78752a3d8ab8eb027f
Diffstat (limited to 'icu4j/main/classes')
-rw-r--r-- | icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java | 16 | ||||
-rw-r--r-- | icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java | 21 |
2 files changed, 34 insertions, 3 deletions
diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java index ef603bc6b..abf832425 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Endpoint.java @@ -45,6 +45,14 @@ public class Endpoint { // return format; // } + public static interface IProperties { + static PluralRules DEFAULT_PLURAL_RULES = null; + + public PluralRules getPluralRules(); + + public IProperties setPluralRules(PluralRules pluralRules); + } + public static Format fromBTA(Properties properties) { return fromBTA(properties, getSymbols()); } @@ -102,8 +110,8 @@ public class Endpoint { if (CompactDecimalFormat.useCompactDecimalFormat(properties)) { format.addBeforeFormat(CompactDecimalFormat.getInstance(symbols, properties)); } else if (ScientificFormat.useScientificNotation(properties)) { - // TODO: Should the currency rounder or scientific rounder be used in this case? - // For now, default to using the scientific rounder. + // TODO: Should the currency rounder or scientific rounder be used in this case? + // For now, default to using the scientific rounder. format.addBeforeFormat(PositiveNegativeAffixFormat.getInstance(symbols, properties)); format.addBeforeFormat(ScientificFormat.getInstance(symbols, properties)); } else { @@ -270,6 +278,10 @@ public class Endpoint { }; private static PluralRules getPluralRules(ULocale uLocale, Properties properties) { + if (properties.getPluralRules() != null) { + return properties.getPluralRules(); + } + // Backwards compatibility: CurrencyPluralInfo wraps its own copy of PluralRules if (properties.getCurrencyPluralInfo() != null) { return properties.getCurrencyPluralInfo().getPluralRules(); diff --git a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java index 948fc8eb5..49d3b16fd 100644 --- a/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java +++ b/icu4j/main/classes/core/src/com/ibm/icu/impl/number/Properties.java @@ -34,6 +34,7 @@ import com.ibm.icu.text.CompactDecimalFormat.CompactStyle; import com.ibm.icu.text.CurrencyPluralInfo; import com.ibm.icu.text.DecimalFormat.SignificantDigitsMode; import com.ibm.icu.text.MeasureFormat.FormatWidth; +import com.ibm.icu.text.PluralRules; import com.ibm.icu.util.Currency; import com.ibm.icu.util.Currency.CurrencyUsage; import com.ibm.icu.util.MeasureUnit; @@ -53,7 +54,8 @@ public class Properties Parse.IProperties, IncrementRounder.IProperties, MagnitudeRounder.IProperties, - SignificantDigitsRounder.IProperties { + SignificantDigitsRounder.IProperties, + Endpoint.IProperties { private static final Properties DEFAULT = new Properties(); @@ -110,6 +112,7 @@ public class Properties private transient ParseMode parseMode; private transient boolean parseNoExponent; private transient boolean parseToBigDecimal; + private transient PluralRules pluralRules; private transient String positivePrefix; private transient String positivePrefixPattern; private transient String positiveSuffix; @@ -170,6 +173,7 @@ public class Properties parseMode = DEFAULT_PARSE_MODE; parseNoExponent = DEFAULT_PARSE_NO_EXPONENT; parseToBigDecimal = DEFAULT_PARSE_TO_BIG_DECIMAL; + pluralRules = DEFAULT_PLURAL_RULES; positivePrefix = DEFAULT_POSITIVE_PREFIX; positivePrefixPattern = DEFAULT_POSITIVE_PREFIX_PATTERN; positiveSuffix = DEFAULT_POSITIVE_SUFFIX; @@ -219,6 +223,7 @@ public class Properties parseMode = other.parseMode; parseNoExponent = other.parseNoExponent; parseToBigDecimal = other.parseToBigDecimal; + pluralRules = other.pluralRules; positivePrefix = other.positivePrefix; positivePrefixPattern = other.positivePrefixPattern; positiveSuffix = other.positiveSuffix; @@ -269,6 +274,7 @@ public class Properties eq = eq && _equalsHelper(parseMode, other.parseMode); eq = eq && _equalsHelper(parseNoExponent, other.parseNoExponent); eq = eq && _equalsHelper(parseToBigDecimal, other.parseToBigDecimal); + eq = eq && _equalsHelper(pluralRules, other.pluralRules); eq = eq && _equalsHelper(positivePrefix, other.positivePrefix); eq = eq && _equalsHelper(positivePrefixPattern, other.positivePrefixPattern); eq = eq && _equalsHelper(positiveSuffix, other.positiveSuffix); @@ -333,6 +339,7 @@ public class Properties hashCode ^= _hashCodeHelper(parseMode); hashCode ^= _hashCodeHelper(parseNoExponent); hashCode ^= _hashCodeHelper(parseToBigDecimal); + hashCode ^= _hashCodeHelper(pluralRules); hashCode ^= _hashCodeHelper(positivePrefix); hashCode ^= _hashCodeHelper(positivePrefixPattern); hashCode ^= _hashCodeHelper(positiveSuffix); @@ -576,6 +583,11 @@ public class Properties } @Override + public PluralRules getPluralRules() { + return pluralRules; + } + + @Override public String getPositivePrefix() { return positivePrefix; } @@ -673,6 +685,7 @@ public class Properties @Override public Properties setCompactCustomData(Map<String, Map<String, String>> compactCustomData) { + // TODO: compactCustomData is not immutable. this.compactCustomData = compactCustomData; return this; } @@ -894,6 +907,12 @@ public class Properties } @Override + public Properties setPluralRules(PluralRules pluralRules) { + this.pluralRules = pluralRules; + return this; + } + + @Override public Properties setPositivePrefix(String positivePrefix) { this.positivePrefix = positivePrefix; return this; |