from django import template
register = template.Library()
@register.filter
def truncatewords_by_chars(value, arg):
"""
Truncate words based on the number of characters
based on original truncatewords filter code
Receives a parameter separated by spaces where each field means:
- limit: number of characters after which the string is truncated
- lower bound: if char number is higher than limit, truncate by lower bound
- higher bound: if char number is less than limit, truncate by higher bound
"""
from django.utils.text import truncate_words
try:
args = arg.split(' ')
limit = int(args[0])
lower = int(args[1])
higher = int(args[2])
except ValueError: # Invalid literal for int().
return value
if len(value) >= limit:
return truncate_words(value, lower)
if len(value) < limit:
return truncate_words(value, higher)
Comments