code: def do_truncate(s, length=255, killwords=False, end='...'):
      
      if len(s) <= length:
          return s
      elif killwords:
          return s[:length] + end
      words = s.split(' ')
      result = []
      m = 0
      for word in words:
          m += len(word) + 1
          if m > length:
              break
          result.append(word)
      result.append(end)
      return u' '.join(result)
docs: Return a truncated copy of the string. The length is specified
      with the first parameter which defaults to ``255``. If the second
      parameter is ``true`` the filter will cut the text at length. Otherwise
      it will try to save the last word. If the text was in fact
      truncated it will append an ellipsis sign (``"..."``). If you want a
      different ellipsis sign than ``"..."`` you can specify it using the
      third parameter.
  
      .. sourcecode jinja::
  
          {{ mytext|truncate(300, false, '&raquo;') }}
              truncate mytext to 300 chars, don't split up words, use a
              right pointing double arrow as ellipsis sign.