class String { method wrap(width) { var txt = self.gsub(/\s+/, " "); var len = txt.len; var para = []; var i = 0; while (i < len) { var j = (i + width); while ((j < len) && (txt.char_at(j) != ' ')) { --j }; para.append(txt.substr(i, j-i)); i = j+1; }; return para.join("\n"); } } var text = 'aaa bb cc ddddd'; say text.wrap(6);