Project

General

Profile

Download (1.33 KB) Statistics
| Branch: | Tag: | Revision:
from django import template
from django.utils.safestring import mark_safe
from django.utils.html import escape
from django.utils.translation import pgettext


register = template.Library()


def widowless(value):
'''Replace normal spaces by non-breakable spaces'''
bits = escape(value).rsplit(' ', 1)
try:
widowless = u' '.join(bits)
return mark_safe(widowless)
except:
return value
register.filter(widowless)


def nonbreakinghyphen(value):
'''Replace normal hyphen by non-breaking version'''
return value.replace('-', '‑')
register.filter(nonbreakinghyphen)


def humanlist(value):
'''Format a list of string-like objects for human reading'''
if len(value) == 1:
return unicode(value[0])
elif len(value) > 1:
first_part = pgettext('list formation', ', ').join(map(unicode, value[:-1]))
last_part = unicode(value[-1])
return pgettext('list formation', u'{first_part} and {last_part}').format(first_part=first_part,
last_part=last_part)
register.filter(humanlist)


def ellipsize(value, length=25):
'''Truncate string and add an ellipsis to its end if it is longer than
length.

Default length is 25 characters.'''
if len(value) > length:
value = value[:length] + '…'
return value
register.filter(ellipsize)
(2-2/2)