Jump to content

Word wrap: Difference between revisions

1,292 bytes added ,  4 years ago
no edit summary
No edit summary
No edit summary
Line 2,376:
{def wrap1
{lambda {:n}
pre {@ style="width::npx; // the line width in pixels
white-space:pre-wrap; "}}} // the word-wrap rule
-> wrap1
 
{{wrap1 380500} {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
terrible coup de vent de nord-est qui se déchaîna
lequel le baromètre tomba à sept cent dix millimètres. Ce fut un
au milieu de l’équinoxe de cette année, et pendant
ouragan, sans intermittence, qui dura du 18 au 26 mars. Les ravages
lequel le baromètre tomba à sept cent dix
qu’il produisit furent immenses en Amérique, en Europe, en Asie, sur
millimètres. Ce fut un ouragan, sans
une zone large de dix-huit cents milles, qui se dessinait obliquement
intermittence, qui dura du 18 au 26 mars. Les
à l’équateur, depuis le trente-cinquième parallèle nord jusqu’au
ravages qu’il produisit furent immenses en
quarantième parallèle sud ! (L’île mystérieuse / Jules Verne)
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>
 
Line 2,401 ⟶ 2,396:
A translation from the Kotlin entry:
<lang scheme>
{def wrap2 // the function's name
{def wrap2
 
{def wrap2.r
{def wrap2.r // recursive "loop"
{lambda {:linewidth :arra1 :spaceleft :sba2}
{if {A.empty? :arr}
{if {A.empty? :a1} // it's the end so ...
then {S.rest :sb}
then {A.toS :a2} // ... return the sentence
else {let { {:linewidth :linewidth}
else {let { {:linewidth :linewidth} {:arr :arr} // local variables
{:spaceleft :spaceleft} // lambdatalk has no closure
{:word {A.firsta1 :arr}a1} // so we recall outers values
{:lengtha2 {W.length:a2} // {A.first.. :arr}}}manually
{:sbword {A.first :sba1}} // get the first word
} {wrap2:length {W.rlength {A.first :linewidtha1}}} // compute its length
} {wrap2.r {A.rest :arr} // do it again with
{if:linewidth {> {+ :length 1} :spaceleft} // the linewidth unchanged
then {-A.rest :linewidth :lengtha1} :sb{br}:word // the rest of array
else{if {- :spaceleft> {+ :length 1}} :sb :wordspaceleft} }}}}} // if ...
then {- :linewidth :length} // then update spaceleft and
{lambda {:linewidth :text}
{A.addlast! {br}:word :a2} // push a breakline and the word
{wrap2.r :linewidth
else {- :spaceleft {+ :length 1}} // else update spaceleft and
{A.new :text}
{- :linewidth {W.length {SA.getaddlast! 0:word :texta2}} }}}}} // push the word
 
#}}}
{lambda {:linewidth :text} // a function with 2 arguments
{wrap2.r :linewidth // call the recursive "loop"
{A.rest {A.new :text}} // the input as an array minus first word
{- :linewidth {W.length {S.get 0 :text}}} // compute spaceleft
{A.new {S.get 0 :text}}}}} // the output as an array plus first word
-> 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
année, et pendant lequel le baromètre tomba à sept cent dix millimètres. Ce fut
millimètres. Ce fut un ouragan, sans intermittence, qui dura du 18 au 26 mars. Les ravages
du 18 au 26 mars. Les ravages qu’il produisit furent immenses en
qu’il produisit furent immenses en Amérique, en Europe, en Asie, sur
immenses en Amérique, en Europe, en Asie, sur une zone large
une zone large de dix-huit cents milles, qui se dessinait obliquement
de dix-huit cents milles, qui se dessinait obliquement à
à l’équateur, depuis le trente-cinquième parallèle nord jusqu’au
l’équateur, depuis le trente-cinquième parallèle nord jusqu’au
quarantième parallèle sud ! (L’île mystérieuse / Jules Verne)
jusqu’au quarantième parallèle sud ! (L’île mystérieuse /
Jules Verne)
</lang>
 
Cookies help us deliver our services. By using our services, you agree to our use of cookies.