code: def wrap(self, string, width):
          
          if not string or width <= 0:
              logging.error("invalid string: %s or width: %s" % (string, width))
              return False
  
          tmp = ""
          for line in string.splitlines():
              if len(line) <= width:
                  tmp += line + "\n"
                  continue
  
              cur = 0
              length = len(line)
              while cur + width < length:
                  cur = line[:cur+width].rfind(self.sep) + len(self.sep) - 1
                  line = line[:cur] + "\n" + line[cur+1:]
  
              tmp += line + "\n\n"
  
          return tmp
docs: Wrap lines according to width
          Place '\n' whenever necessary