$ include "seed7_05.s7i"; const func string: wrap (in string: aText, in integer: lineWidth) is func result var string: wrapped is ""; local var array string: words is 0 times ""; var string: word is ""; var integer: spaceLeft is 0; begin words := split(aText, " "); if length(words) <> 0 then wrapped := words[1]; words := words[2 ..]; spaceLeft := lineWidth - length(wrapped); for word range words do if length(word) + 1 > spaceLeft then wrapped &:= "\n" & word; spaceLeft := lineWidth - length(word); else wrapped &:= " " & word; spaceLeft -:= 1 + length(word); end if; end for; end if; end func; const proc: main is func local const string: frog is "In olden times when wishing still helped one, there lived \ \a king whose daughters were all beautiful, but the youngest was so beautiful \ \that the sun itself, which has seen so much, was astonished whenever it \ \shone in her face. Close by the king's castle lay a great dark forest, and \ \under an old lime-tree in the forest was a well, and when the day was very \ \warm, the king's child went out into the forest and sat down by the side of \ \the cool fountain, and when she was bored she took a golden ball, and threw \ \it up on high and caught it, and this ball was her favorite plaything."; var integer: width is 0; begin for width range [] (72, 80) do writeln("Wrapped at " <& width <& ":"); writeln(wrap(frog, width)); end for; end func;