code: def _max_width_formatter(string, cols, separator='\n'):
      
  
      is_color = isinstance(string, ColoredString)
  
      if is_color:
          string_copy = string._new('')
          string = string.s
  
      stack = tsplit(string, NEWLINES)
  
      for i, substring in enumerate(stack):
          stack[i] = substring.split()
  
      _stack = []
      
      for row in stack:
          _row = ['',]
          _row_i = 0
  
          for word in row:
              if (len(_row[_row_i]) + len(word)) <= cols:
                  _row[_row_i] += word
                  _row[_row_i] += ' '
                  
              elif len(word) > cols:
  
                  # ensure empty row
                  if len(_row[_row_i]):
                      _row[_row_i] = _row[_row_i].rstrip()
                      _row.append('')
                      _row_i += 1
  
                  chunks = schunk(word, cols)
                  for i, chunk in enumerate(chunks):
                      if not (i + 1) == len(chunks):
                          _row[_row_i] += chunk
                          _row[_row_i] = _row[_row_i].rstrip()
                          _row.append('')
                          _row_i += 1
                      else:
                          _row[_row_i] += chunk
                          _row[_row_i] += ' '
              else:
                  _row[_row_i] = _row[_row_i].rstrip()
                  _row.append('')
                  _row_i += 1
                  _row[_row_i] += word
                  _row[_row_i] += ' '
          else:
              _row[_row_i] = _row[_row_i].rstrip()
  
          _row = map(str, _row)
          _stack.append(separator.join(_row))
  
      _s = '\n'.join(_stack)
      if is_color:
          _s = string_copy._new(_s)
      return _s
docs: Returns a freshly formatted
      :param string: string to be formatted
      :type string: basestring or clint.textui.colored.ColoredString
      :param cols: max width the text to be formatted
      :type cols: int
      :param separator: separator to break rows
      :type separator: basestring