William James wrote:
> On Jan 21, 1:12 pm, "Michael W. Ryder" <_mwry... / worldnet.att.net>
> wrote:
>> I am trying to find an easier way to split a string into printable
>> lines.  I could use the method of checking for a space using a loop and
>> going back from the desired length or I could use the following:
>>
>> def strbrk(str, len)
>>    if str.length <= len
>>      return str.length
>>    end
>>    tmp = str[0...len].reverse
>>    x = tmp =~ / /
>>    if x == nil
>>      return -1
>>      else
>>        return len - x
>>    end
>> end
>>
>> I could not find any way to get a regexp to search from the end of the
>> string which would have eliminated the need to reverse the string.
> 
> def str_break( str, len )
>   str.size > len and str[0..len].rindex(' ') or str.size
> end
> 
> 
This is much better than my solution, I missed rindex somehow.

> 
> str = "\
> I don't necessarily need code examples -- but if anyone has
> ideas for a best approach to specifying a line wrap width
> (breaking between words for lines no longer than a specific
> column width) for output from a Ruby script, I'd love to
> hear about it."
> 
> X = 40
> puts str.gsub(/\n/," ").scan(/\S.{0,#{X-2}}\S(?=\s|$)|\S+/)