summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJonah Lawrence <jonah@freshidea.com>2022-11-02 00:35:41 -0600
committerGitHub <noreply@github.com>2022-11-02 08:35:41 +0200
commit103c214dcf57e53f8f18b30f59947c9752c18ab2 (patch)
tree02785d54dfabe87f951d939321d5659686bc373a
parentf7af1b72e765278b3431de3f3b92c6b9a189b18e (diff)
downloadbabel-103c214dcf57e53f8f18b30f59947c9752c18ab2.tar.gz
feat: Add `Format.compact_decimal` utility (#921)
-rw-r--r--babel/support.py13
-rw-r--r--tests/test_support.py5
2 files changed, 17 insertions, 1 deletions
diff --git a/babel/support.py b/babel/support.py
index 80e9340..3efc003 100644
--- a/babel/support.py
+++ b/babel/support.py
@@ -18,7 +18,7 @@ from babel.core import Locale
from babel.dates import format_date, format_datetime, format_time, \
format_timedelta
from babel.numbers import format_decimal, format_currency, \
- format_percent, format_scientific
+ format_percent, format_scientific, format_compact_decimal
class Format:
@@ -108,6 +108,17 @@ class Format:
"""
return format_decimal(number, format, locale=self.locale)
+ def compact_decimal(self, number, format_type='short', fraction_digits=0):
+ """Return a number formatted in compact form for the locale.
+
+ >>> fmt = Format('en_US')
+ >>> fmt.compact_decimal(123456789)
+ u'123M'
+ """
+ return format_compact_decimal(number, format_type=format_type,
+ fraction_digits=fraction_digits,
+ locale=self.locale)
+
def currency(self, number, currency):
"""Return a number in the given currency formatted for the locale.
"""
diff --git a/tests/test_support.py b/tests/test_support.py
index 2d8e933..93ad37e 100644
--- a/tests/test_support.py
+++ b/tests/test_support.py
@@ -329,6 +329,11 @@ def test_format_decimal():
assert fmt.decimal(1.2345) == '1.234'
+def test_format_compact_decimal():
+ fmt = support.Format('en_US')
+ assert fmt.compact_decimal(1234567, format_type='long', fraction_digits=2) == '1.23 million'
+
+
def test_format_percent():
fmt = support.Format('en_US')
assert fmt.percent(0.34) == '34%'