| Index: src/extensions/experimental/number-format.cc
|
| ===================================================================
|
| --- src/extensions/experimental/number-format.cc (revision 8679)
|
| +++ src/extensions/experimental/number-format.cc (working copy)
|
| @@ -36,6 +36,8 @@
|
| #include "unicode/numfmt.h"
|
| #include "unicode/uchar.h"
|
| #include "unicode/ucurr.h"
|
| +#include "unicode/unum.h"
|
| +#include "unicode/uversion.h"
|
|
|
| namespace v8 {
|
| namespace internal {
|
| @@ -231,6 +233,8 @@
|
| }
|
|
|
| // Generates ICU number format pattern from given skeleton.
|
| +// TODO(cira): Remove once ICU includes equivalent method
|
| +// (see http://bugs.icu-project.org/trac/ticket/8610).
|
| static icu::DecimalFormat* CreateFormatterFromSkeleton(
|
| const icu::Locale& icu_locale,
|
| const icu::UnicodeString& skeleton,
|
| @@ -251,6 +255,7 @@
|
| // Case of non-consecutive U+00A4 is taken care of in i18n.js.
|
| int32_t end_index = skeleton.lastIndexOf(currency_symbol, index);
|
|
|
| +#if (U_ICU_VERSION_MAJOR_NUM == 4) && (U_ICU_VERSION_MINOR_NUM <= 6)
|
| icu::NumberFormat::EStyles style;
|
| switch (end_index - index) {
|
| case 0:
|
| @@ -262,6 +267,19 @@
|
| default:
|
| style = icu::NumberFormat::kPluralCurrencyStyle;
|
| }
|
| +#else // ICU version is 4.8 or above (we ignore versions below 4.0).
|
| + UNumberFormatStyle style;
|
| + switch (end_index - index) {
|
| + case 0:
|
| + style = UNUM_CURRENCY;
|
| + break;
|
| + case 1:
|
| + style = UNUM_CURRENCY_ISO;
|
| + break;
|
| + default:
|
| + style = UNUM_CURRENCY_PLURAL;
|
| + }
|
| +#endif
|
|
|
| base_format = static_cast<icu::DecimalFormat*>(
|
| icu::NumberFormat::createInstance(icu_locale, style, *status));
|
|
|