summaryrefslogtreecommitdiff
path: root/Source/WebCore/platform/text/mac/LocalizedNumberMac.mm
diff options
context:
space:
mode:
Diffstat (limited to 'Source/WebCore/platform/text/mac/LocalizedNumberMac.mm')
-rw-r--r--Source/WebCore/platform/text/mac/LocalizedNumberMac.mm32
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