REM
REM  Word-wrapping function
REM  Author: Mateusz Viste <[email protected]>
REM  Last modified: 28 Jun 2009
REM
REM Note, that the function will modify the string variable you will pass to it!
REM Also, it accepts line breaks in the UNIX format (LF-only)

FUNCTION WordWrap(BYREF TextToWrap AS STRING, WrapValue AS INTEGER) AS STRING
 DIM AS STRING Result
 DIM AS INTEGER LastSpace = 0, x, LineBreak
 IF LEN(TextToWrap) <= WrapValue AND INSTR(TextToWrap, CHR(10)) = 0 THEN
     Result = TextToWrap
     TextToWrap = ""
   ELSE
     LineBreak = 0
     FOR x = 1 TO WrapValue + 1
       IF MID(TextToWrap, x, 1) = " " THEN LastSpace = x
       IF MID(TextToWrap, x, 1) = CHR(10) AND LineBreak = 0 THEN LineBreak = x
     NEXT x
     IF LineBreak > 0 THEN LastSpace = LineBreak
     IF LastSpace = 0 THEN
         Result = MID(TextToWrap, 1, WrapValue)
         TextToWrap = MID(TextToWrap, WrapValue + 1)
       ELSE
         Result = MID(TextToWrap, 1, LastSpace - 1)
         TextToWrap = MID(TextToWrap, LastSpace + 1)
     END IF
 END IF
 RETURN Result
END FUNCTION