Word wrap: Difference between revisions

Content added Content deleted
Line 1,191: Line 1,191:


=={{header|Elena}}==
=={{header|Elena}}==
ELENA 3.4 :
ELENA 4.x :
<lang elena>import extensions.
<lang elena>import extensions;
import system'routines.
import system'routines;
import extensions'text.
import extensions'text;
literal text =
string text =
"In olden times when wishing still helped one, there lived a king " +
"In olden times when wishing still helped one, there lived a king
"whose daughters were all beautiful, but the youngest was so beautiful " +
whose daughters were all beautiful, but the youngest was so beautiful
"that the sun itself, which has seen so much, was astonished whenever " +
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 " +
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 " +
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 " +
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 " +
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 " +
took a golden ball, and threw it up on high and caught it, and this
"ball was her favorite plaything.".
ball was her favorite plaything.";
extension wrapOp
extension wrapOp
{
{
wrap(IntNumber lineWidth)
wrap(int lineWidth)
[
{
int currentWidth := 0.
int currentWidth := 0;
^ TokenEnumerator
^ TokenEnumerator
new(self);
.new(self)
selectBy(:word)
.selectBy:(word)
[
{
currentWidth += word length.
currentWidth += word.Length;
if (currentWidth > lineWidth)
if (currentWidth > lineWidth)
[
{
currentWidth := word length + 1.
currentWidth := word.Length + 1;
^ newLine + word + " "
^ newLine + word + " "
];
}
[
else
currentWidth += 1.
{
currentWidth += 1;
^ word + " "
^ word + " "
]
}
];
}
summarize(String new).
.summarize(new StringWriter())
]
}
}
}
public program
public program()
{
[
console printLine(String new; write:"-" length:72).
console.printLine(new StringWriter("-", 72));
console printLine(text wrap(72)).
console.printLine(text.wrap(72));
console printLine(String new; write:"-" length:80).
console.printLine(new StringWriter("-", 80));
console printLine(text wrap(80)).
console.printLine(text.wrap(80));
]</lang>
}</lang>
{{out}}
{{out}}
<pre>
<pre>