using Ruby for line-wrapping

C

Chad Perrin

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.
 
M

Martin DeMello

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
 
W

William James

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.


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.
 
P

Paul Brannan

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
 
P

Phrogz

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
474,241
Messages
2,571,219
Members
47,850
Latest member
StewartTha

Latest Threads

Top