filters: add humanize filter
This commit is contained in:
parent
4be0e1572c
commit
9afdc63a8e
|
@ -1,3 +1,3 @@
|
|||
# Register filters here
|
||||
|
||||
from app.utils.filters import date, is_title, markdown, pluralize
|
||||
from app.utils.filters import date, humanize, is_title, markdown, pluralize
|
||||
|
|
|
@ -0,0 +1,26 @@
|
|||
from app import app
|
||||
|
||||
|
||||
@app.template_filter('humanize')
|
||||
def humanize(n:float, sd:int=4, unit:str=''):
|
||||
"""
|
||||
Print the number human-readable.
|
||||
n: number
|
||||
sd: significant digits
|
||||
unit: unit
|
||||
Ex: humanize(12345, 2, "o") → 12.34 ko
|
||||
"""
|
||||
|
||||
suffixes = ['k', 'M', 'G', 'T', 'P']
|
||||
suffix = ''
|
||||
|
||||
for s in suffixes:
|
||||
if abs(n) > 10**3:
|
||||
n /= 10**3
|
||||
suffix = s
|
||||
else:
|
||||
break
|
||||
|
||||
formatter = f"{{:.{sd}n}}{{}}{{}}{{}}"
|
||||
spacer = ' ' if suffix + unit != '' else ''
|
||||
return formatter.format(float(n), spacer, suffix, unit)
|
Loading…
Reference in New Issue