41 lines
1.4 KiB
ObjectPascal
41 lines
1.4 KiB
ObjectPascal
function Wrap(words: sequence of string; lineWidth: integer): sequence of string;
|
|
begin
|
|
var currentWidth := 0;
|
|
foreach var word in words do
|
|
begin
|
|
if currentWidth <> 0 then
|
|
if currentWidth + word.Length < lineWidth then
|
|
begin
|
|
currentWidth += 1;
|
|
yield ' ';
|
|
end
|
|
else
|
|
begin
|
|
currentWidth := 0;
|
|
yield NewLine;
|
|
end;
|
|
currentWidth += word.Length;
|
|
yield word;
|
|
end;
|
|
end;
|
|
|
|
function Wrap(text: string; lineWidth: integer): string
|
|
:= Wrap(text.ToWords(' '#13#10),lineWidth).JoinToString('');
|
|
|
|
begin
|
|
var text := '''
|
|
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas varius sapien
|
|
vel purus hendrerit vehicula. Integer hendrerit viverra turpis, ac sagittis arcu
|
|
pharetra id. Sed dapibus enim non dui posuere sit amet rhoncus tellus
|
|
consectetur. Proin blandit lacus vitae nibh tincidunt cursus. Cum sociis natoque
|
|
penatibus et magnis dis parturient montes, nascetur ridiculus mus. Nam tincidunt
|
|
purus at tortor tincidunt et aliquam dui gravida. Nulla consectetur sem vel
|
|
felis vulputate et imperdiet orci pharetra. Nam vel tortor nisi. Sed eget porta
|
|
tortor. Aliquam suscipit lacus vel odio faucibus tempor. Sed ipsum est,
|
|
condimentum eget eleifend ac, ultricies non dui. Integer tempus, nunc sed
|
|
venenatis feugiat, augue orci pellentesque risus, nec pretium lacus enim eu
|
|
nibh.
|
|
''';
|
|
Wrap(text,50).Println;
|
|
end.
|