Browse Source

Fancy string short function

Ralfp 12 years ago
parent
commit
0fbd1375a9
2 changed files with 22 additions and 1 deletions
  1. 7 1
      misago/templatetags/utils.py
  2. 15 0
      misago/utils/strings.py

+ 7 - 1
misago/templatetags/utils.py

@@ -1,4 +1,5 @@
 from coffin.template import Library
+from misago.utils.strings import short_string
 
 register = Library()
 
@@ -8,4 +9,9 @@ def intersect(list_a, list_b):
     for i in list_a:
         if i in list_b:
             return True
-    return False
+    return False
+
+
+@register.filter(name='short_string')
+def make_short(string, length=16):
+    return short_string(string, length)

+ 15 - 0
misago/utils/strings.py

@@ -14,3 +14,18 @@ def slugify(string):
 
 def random_string(length):
     return crypto.get_random_string(length, "1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM")
+
+
+def short_string(string, length=16):
+    if len(string) <= length:
+        return string;
+
+    short = []
+    length = length - 3
+    string = string[0:length]
+    bits = string.split()
+    if len(bits[-1]) > length:
+        bits[-1] = bits[-1][0:length]
+    if len(bits[-1]) < 3:
+        bits.pop()
+    return '%s...' % (' '.join(bits))