def smart_truncate(text, limit=100, suffix='...'):
    """
    Truncates a text to the end of the last word before
    reaching `limit`, and adds `suffix` to the end.

    Since it is using Python's slicing, negative values
    work, too.

    :param text: <str>
    :param limit: <int>
    :param suffix: <str>
    :return: <str>
    """
    if len(text) <= limit:
        return text

    return text[:limit].rsplit(' ', 1)[0]+suffix