40 lines
1.4 KiB
Text
40 lines
1.4 KiB
Text
let loremIpsum = <[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.]>
|
|
|
|
func wrap(text, lineWidth) {
|
|
String.Concat(values: wrapWords(text.Split('\s', '\r', '\n'), lineWidth))
|
|
}
|
|
and wrapWords(words, lineWidth) {
|
|
var currentWidth = 0
|
|
|
|
for word in words {
|
|
if currentWidth != 0 {
|
|
if currentWidth + word.Length() < lineWidth {
|
|
currentWidth += 1
|
|
yield " "
|
|
} else {
|
|
currentWidth = 0
|
|
yield "\n"
|
|
}
|
|
}
|
|
currentWidth += word.Length()
|
|
yield word
|
|
}
|
|
}
|
|
and printWrap(at) {
|
|
print("Wrap at \(at):")
|
|
print(wrap(loremIpsum, at))
|
|
print()
|
|
}
|
|
|
|
printWrap(at: 72)
|
|
printWrap(at: 80)
|