Using Ruby for line-wrapping

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.

On 4/27/07, Chad P. [email protected] wrote:

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.

Check out Text::Format

martin

On Fri, Apr 27, 2007 at 06:38:45PM +0900, Martin DeMello wrote:

On 4/27/07, Chad P. [email protected] wrote:

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.

Check out Text::Format

Thanks. I’ll give it a look.

On Fri, Apr 27, 2007 at 06:50:06PM +0900, William J. wrote:

X = 40
puts str.gsub(/\n/," ").scan(/\S.{0,#{X-2}}\S(?=\s|$)|\S+/)

Thanks. The scan method’s pretty nice. I had no idea it existed.

On Fri, Apr 27, 2007 at 06:25:24PM +0900, Chad P. wrote:

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.

You can use prettyprint:

irb(main):001:0> require ‘prettyprint’
=> false
irb(main):003:0> s = “The quick brown fox jumped over the lazy dog. Now
is the time for all good men to come to the aid of their country. You
have been warned.”
irb(main):015:0> puts PrettyPrint.format(’’, 80) { |q|
irb(main):016:1* s.scan(/\S+/) { |t|
irb(main):017:2* q.group { q.text t; q.breakable }
irb(main):018:2> }
irb(main):019:1> }
The quick brown fox jumped over the lazy dog. Now is the time for all
good men
to come to the aid of their country. You have been warned.
=> nil

I get the feeling I’m not doing this quite right, since this strips out
newlines and doesn’t retain multiple spaces from the original string.
Perhaps there’s a prettyprint expert out there who knows how to do this
better.

Paul

On Apr 27, 4:25 am, Chad P. [email protected] wrote:

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.


CCD CopyWrite Chad P. [http://ccd.apotheon.org]
Paul Graham: “Real ugliness is not harsh-looking syntax, but having to
build programs out of the wrong concepts.”

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+/)

— output —
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.

On Apr 27, 3:25 am, Chad P. [email protected] wrote:

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.

See question #5 in Quiz #113:
http://www.rubyquiz.com/quiz113.html

Also relevant are some of the regexp used in the thread “halving a
string”:
http://groups.google.com/group/comp.lang.ruby/browse_frm/thread/b14f2e9a15eaed9b/f94e696b8b9ba2d9?lnk=gst&q=halving+a+string&rnum=1#f94e696b8b9ba2d9