diff options
Diffstat (limited to 'Source/WebCore/platform/text/mac/LocalizedNumberMac.mm')
-rw-r--r-- | Source/WebCore/platform/text/mac/LocalizedNumberMac.mm | 32 |
1 files changed, 30 insertions, 2 deletions
diff --git a/Source/WebCore/platform/text/mac/LocalizedNumberMac.mm b/Source/WebCore/platform/text/mac/LocalizedNumberMac.mm index ac6e70990..c2a7ea013 100644 --- a/Source/WebCore/platform/text/mac/LocalizedNumberMac.mm +++ b/Source/WebCore/platform/text/mac/LocalizedNumberMac.mm @@ -33,7 +33,9 @@ #import <Foundation/NSNumberFormatter.h> #import <limits> +#import <wtf/dtoa.h> #import <wtf/MainThread.h> +#import <wtf/MathExtras.h> #import <wtf/RetainPtr.h> #import <wtf/text/CString.h> @@ -70,7 +72,7 @@ static NSNumberFormatter *numberFormatterForDisplay() return formatter; } -double parseLocalizedNumber(const String& numberString) +static double parseLocalizedNumber(const String& numberString) { if (numberString.isEmpty()) return numeric_limits<double>::quiet_NaN(); @@ -80,7 +82,7 @@ double parseLocalizedNumber(const String& numberString) return [number doubleValue]; } -String formatLocalizedNumber(double inputNumber, unsigned fractionDigits) +static String formatLocalizedNumber(double inputNumber, unsigned fractionDigits) { RetainPtr<NSNumber> number(AdoptNS, [[NSNumber alloc] initWithDouble:inputNumber]); RetainPtr<NSNumberFormatter> formatter = numberFormatterForDisplay(); @@ -88,5 +90,31 @@ String formatLocalizedNumber(double inputNumber, unsigned fractionDigits) return String([formatter.get() stringFromNumber:number.get()]); } +String convertToLocalizedNumber(const String& canonicalNumberString, unsigned fractionDigits) +{ + // FIXME: We should not do parse-then-format. It makes some + // problems such as removing leading zeros, changing trailing + // digits to zeros. + // FIXME: We should not use the fractionDigits argument. + + double doubleValue = canonicalNumberString.toDouble(); + // The input string must be valid. + return formatLocalizedNumber(doubleValue, fractionDigits); + +} + +String convertFromLocalizedNumber(const String& localizedNumberString) +{ + // FIXME: We should not do parse-then-format. It makes some + // problems such as removing leading zeros, changing trailing + // digits to zeros. + + double doubleValue = parseLocalizedNumber(localizedNumberString); + if (!isfinite(doubleValue)) + return localizedNumberString; + NumberToStringBuffer buffer; + return String(numberToString(doubleValue, buffer)); +} + } // namespace WebCore |