def snip_text(text, n=140):
    """Snip text at word boundary. Defaults to 140 characters.
      
          >>> text = u'lorum ipsum dolores. ' * 10
          >>> snip_text(text)
          u'lorum ipsum dolores. lorum ipsum dolores. lorum ipsum dolores. lorum ipsum dolores. lorum ipsum dolores. lorum ipsum dolores. lorum ipsum dolores. lorum ipsum …'
          >>> snip_text(u'lorum ipsum dolores')
          u'lorum ipsum dolores'
          >>> snip_text(u'lorum ipsum dolores', n=8)
          u'lorum …'
      
      Anything that evaluates to False comes out as an empty string::
      
          >>> snip_text(None)
          u''
      
    """
    if not text:
        return u''
    if len(text) < n:
        return text
    i = 0
    words = []
    for item in text.split():
        l = len(item)
        if i + l < n:
            words.append(item)
            i += l
        else:
            break
    return u'{0} …'.format(u' '.join(words))
