#!/usr/bin/ruby
#
## Code from: https://ruby-doc.org/core-2.3.1/Enumeratorerable.html
#
func wordwrap(words, maxwidth) {
Enumerator({|y|
var cols = 0
words.slice_before { |w|
cols += 1 if (cols != 0)
cols += w.len
if (maxwidth < cols) {
cols = w.len
true
}
else {
false
}
}.each {|ws| y(ws) }
})
}
var text = (1..20 -> join(' '))
var e = wordwrap(text.words, 10)
var arr = []
say '-'*10
e.each { |ws| say ws.join(" "); arr << ws }
assert_eq(arr, [["1", "2", "3", "4", "5"],
["6", "7", "8", "9", "10"],
["11", "12", "13"],
["14", "15", "16"],
["17", "18", "19"],
["20"]])
say '-'*10