1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 |
- Nicely truncate text
- ====================
- Intelligent truncation of text means that truncation does not take
- place inside a word but only between words. So the required length is
- only an approximation. The result text might be a bit longer than the
- required length:
- >>> from icemac.truncatetext import truncate
- >>> 'I was here.'[:3]
- 'I w'
- >>> truncate('I was here.', 3)
- 'I was ...'
- What can get truncated?
- -----------------------
- Only instances of ``basestring`` (``str`` on Python 3) can be truncated:
- >>> truncate(3, 3)
- Traceback (most recent call last):
- ValueError: 3 is no instance of basestring or None
- >>> print(truncate(u'Lorem ipsum', 5))
- Lorem ...
- ``None`` is handled nicely:
- >>> truncate(None, 4)
- ''
- What is returned?
- -----------------
- Always at least one word is returned even when it is longer than the
- required length:
- >>> truncate('Lorem ipsum', 1)
- 'Lorem ...'
- If the text contains only of one word which is longer than the desired
- length it is returned without an ellipsis:
- >>> truncate('The-really-long-word', 5)
- 'The-really-long-word'
- If the text is shorter than the desired length it is returned without
- the ellipsis, too:
- >>> truncate('Lorem ipsum', 11)
- 'Lorem ipsum'
- Where gets the text truncated?
- ------------------------------
- Truncation also takes place at tabs and linebreaks:
- >>> truncate("I was here.\nNow I'm away", 11)
- 'I was here. ...'
- >>> truncate("I was here.\rNow I'm away", 12)
- 'I was here.\rNow ...'
- >>> truncate("I was here.\tNow I'm away", 11)
- 'I was here. ...'
- I do not want `...` as ellipsis.
- --------------------------------
- ``truncate`` takes an optional argument which defines the ellipsis string:
- >>> print(truncate(u'Lorem ipsum', 5, ellipsis=u':::'))
- Lorem :::
|