Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- from django.utils.safestring import SafeData, mark_safe
- from django.template import TemplateSyntaxError
- @register.filter
- def truncate(value, arg):
- """
- Truncates a string after a given number of chars
- Argument: Number of chars to truncate after
- """
- mark_safe_if_safe = lambda v: mark_safe(v) if isinstance(value, SafeData) else v
- try:
- length = int(arg)
- except ValueError: # invalid literal for int()
- raise TemplateSyntaxError, "truncate tag's arg needs to be an integer"
- if not isinstance(value, basestring):
- value = unicode(value)
- if (len(value) > length):
- while value[length] != u' ' and length > 0:
- length -= 1
- return mark_safe_if_safe(value[:length] + u"...")
- return value
Add Comment
Please, Sign In to add comment