def shorten(string, length=140, ellipsis=None):
    """
    Shorten a string to 140 characters without breaking words.
    Optionally add an ellipsis character: '…' if ellipsis=True, or a given string
    e.g. ellipsis=' (cut)'
    """
    string = string.strip()
    if len(string) > length:
        if ellipsis is True:
            ellipsis = '…'
        else:
            ellipsis = ellipsis or ''
        L = length - len(ellipsis)
        return ' '.join(string[:L].split(' ')[:-1]).strip(',;:.') + ellipsis
    else:
        return string
