Word wrap: Difference between revisions

Content added Content deleted
(Rename Perl 6 -> Raku, alphabetize, minor clean-up)
No edit summary
Line 2,362: Line 2,362:
favorite plaything.
favorite plaything.
</pre>
</pre>

=={{header|Lambdatalk}}==

The test text will be the third first paragraphs of Jules Verne's book, The Mysterious Island.
<lang scheme>
{def text
Personne n’a sans doute oublié le terrible coup de vent de nord-est qui se déchaîna au milieu de l’équinoxe de cette année, et pendant lequel le baromètre tomba à sept cent dix millimètres. Ce fut un ouragan, sans intermittence, qui dura du 18 au 26 mars. Les ravages qu’il produisit furent immenses en Amérique, en Europe, en Asie, sur une zone large de dix-huit cents milles, qui se dessinait obliquement à l’équateur, depuis le trente-cinquième parallèle nord jusqu’au quarantième parallèle sud ! (L’île mystérieuse / Jules Verne)}
-> text
</lang>

1) lambdatalk can simply call HTML tags and CSS rules:
<lang scheme>
{def wrap1
{lambda {:n}
pre {@ style="width::npx; // the line width
white-space:pre-wrap; "}}} // the word-wrap rule
-> wrap1

{{wrap1 380} {text}}
->
Personne n’a sans doute oublié le
terrible coup de vent de nord-est qui se déchaîna
au milieu de l’équinoxe de cette année, et pendant
lequel le baromètre tomba à sept cent dix
millimètres. Ce fut un ouragan, sans
intermittence, qui dura du 18 au 26 mars. Les
ravages qu’il produisit furent immenses en
Amérique, en Europe, en Asie, sur une zone large
de dix-huit cents milles, qui se dessinait
obliquement à l’équateur, depuis le
trente-cinquième parallèle nord jusqu’au
quarantième parallèle sud ! (L’île mystérieuse /
Jules Verne)
</lang>

2) a lambdatalk function

A translation from the Kotlin entry:
<lang scheme>
{def wrap2
{def wrap2.r
{lambda {:linewidth :arr :spaceleft :sb}
{if {A.empty? :arr}
then {S.rest :sb}
else {let { {:linewidth :linewidth}
{:arr :arr}
{:spaceleft :spaceleft}
{:word {A.first :arr}}
{:length {W.length {A.first :arr}}}
{:sb :sb}
} {wrap2.r :linewidth
{A.rest :arr}
{if {> {+ :length 1} :spaceleft}
then {- :linewidth :length} :sb{br}:word
else {- :spaceleft {+ :length 1}} :sb :word} }}}}}
{lambda {:linewidth :text}
{wrap2.r :linewidth
{A.new :text}
{- :linewidth {W.length {S.get 0 :text}}}
#}}}
-> wrap2

{wrap2 70 {text}} ->
Personne n’a sans doute oublié le terrible coup de vent de
nord-est qui se déchaîna au milieu de l’équinoxe de cette année, et
pendant lequel le baromètre tomba à sept cent dix millimètres. Ce fut
un ouragan, sans intermittence, qui dura du 18 au 26 mars. Les ravages
qu’il produisit furent immenses en Amérique, en Europe, en Asie, sur
une zone large de dix-huit cents milles, qui se dessinait obliquement
à l’équateur, depuis le trente-cinquième parallèle nord jusqu’au
quarantième parallèle sud ! (L’île mystérieuse / Jules Verne)
</lang>

3) A translation of the javascript entry. The {jswrap n text} function contains lines until n characters

<lang javascript>
LAMBDATALK.DICT['jswrap'] = function() {
var wrap = function(text, limit) {
if (text.length > limit) {
var edge = text.slice(0, limit).lastIndexOf(' ');
if (edge > 0) {
var line = text.slice(0, edge);
var remainder = text.slice(edge + 1);
return line + '\n' + wrap(remainder, limit);
}
}
return text;
};
var args = arguments[0].trim().split(" ");
var limit = parseInt(args.shift());
var text = args.join(" ");
return wrap(text,limit);
};

{jswrap 60 {text}} ->
Personne n’a sans doute oublié le terrible coup de vent de
nord-est qui se déchaîna au milieu de l’équinoxe de cette
année, et pendant lequel le baromètre tomba à sept cent dix
millimètres. Ce fut un ouragan, sans intermittence, qui
dura du 18 au 26 mars. Les ravages qu’il produisit furent
immenses en Amérique, en Europe, en Asie, sur une zone
large de dix-huit cents milles, qui se dessinait
obliquement à l’équateur, depuis le trente-cinquième
parallèle nord jusqu’au quarantième parallèle sud ! (L’île
mystérieuse / Jules Verne)
</lang>


=={{header|Lasso}}==
=={{header|Lasso}}==