[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

using Ruby for line-wrapping

Chad Perrin

4/27/2007 9:25:00 AM

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 Perrin [ http://ccd.ap... ]
Paul Graham: "Real ugliness is not harsh-looking syntax, but having to
build programs out of the wrong concepts."

6 Answers

Martin DeMello

4/27/2007 9:39:00 AM

0

On 4/27/07, Chad Perrin <perrin@apotheon.com> 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

Chad Perrin

4/27/2007 9:46:00 AM

0

On Fri, Apr 27, 2007 at 06:38:45PM +0900, Martin DeMello wrote:
> On 4/27/07, Chad Perrin <perrin@apotheon.com> 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.

--
CCD CopyWrite Chad Perrin [ http://ccd.ap... ]
print substr("Just another Perl hacker", 0, -2);

William James

4/27/2007 9:48:00 AM

0

On Apr 27, 4:25 am, Chad Perrin <per...@apotheon.com> 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 Perrin [http://ccd.ap...]
> 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.

Chad Perrin

4/27/2007 10:22:00 AM

0

On Fri, Apr 27, 2007 at 06:50:06PM +0900, William James 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.

--
CCD CopyWrite Chad Perrin [ http://ccd.ap... ]
Larry Wall: "A script is what you give the actors. A program is what you
give the audience."

Paul Brannan

4/27/2007 12:59:00 PM

0

On Fri, Apr 27, 2007 at 06:25:24PM +0900, Chad Perrin 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


Gavin Kistner

4/28/2007 5:45:00 AM

0

On Apr 27, 3:25 am, Chad Perrin <per...@apotheon.com> 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/qu...

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#f94e69...