Skip to content

Instantly share code, notes, and snippets.

@sveetch
Created March 27, 2013 12:53
Show Gist options
  • Save sveetch/5253958 to your computer and use it in GitHub Desktop.
Save sveetch/5253958 to your computer and use it in GitHub Desktop.
Filtre pour tronquer sur les caractères, utile pour les django <= 1.4 qui ne disposent pas du filtre truncatechars
# -*- coding: utf-8 -*-
from django.template import Library
register = Library()
@register.filter
def truncatestring(value, limit=125):
"""
Coupe une chaine après un certains nombre de caractères
La coupure se fait si la chaîne originale fournie dépasse la limite, dans ce cas la
coupure se fait alors sur ``limit-2`` caractères, les deux derniers caractères étant
réservés au suffixe ``..`` qui indique que la ligne a été coupée.
:type value: string
:param value: Valeur à couper si elle est plus longue que la limite.
:type limit: int
:param limit: (optional) Limite du nombre de caractères alloués pour la valeur. Par
défaut, la limite est placée à 125caractères.
:rtype: string
:return: Valeur coupée si elle dépasse la limite
"""
# Si la chaine est plus longue on coupe juste avant le dernier espace
# trouvé avant la limite
if len(value)>limit:
s = value[0:limit+2]
endindex = s.rfind(" ")-2
if endindex < 0:
endindex = limit
return value[0:endindex+2]+".."
return value
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment