# Back on the List - Two questions

**URL:** <https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828>\
**Category:** Ruby\
**Created:** [August 2, 2008, 8:13pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828 "2008-08-02T20:13:39Z")\
**Posts on this page:** 6\
**Page:** 1

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 2, 2008, 8:13pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/1 "2008-08-02T20:13:39Z")

</div>

It’s been a while but it feels good to be back.

I have a quick question for the group:

Given the following:

content = [  
[“something special a”, “ok cool a”, “tahsnk a”],  
[“something specccccccccial a”, “ok cooooool a”, “tahsnk a”]  
]  
content.each {|i|  
puts i.join("\t")  
}  
#something special a ok cool a tahsnk a  
#something specccccccccial a ok cooooool a tahsnk a

I would like to print this out as such:  
something special a ok cool a tahsnk a  
something specccccccccial a ok cooooool a tahsnk a

I remember seeing a module or example like this somewhere… Any ideas? I  
was  
thinking it was pretty print at first but after looking, I guess not?

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 2, 2008, 10:24pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/2 "2008-08-02T22:24:49Z")

</div>

Nice… that was exactly what I was looking for. Thanks!

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 2, 2008, 8:22pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/3 "2008-08-02T20:22:29Z")

</div>

On Sat, Aug 2, 2008 at 2:12 PM, list. rb [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> content.each {|i|  
> thinking it was pretty print at first but after looking, I guess not?  
> Well, it’s a bit like killing a mosquito with a bazooka, but you could  
> use Ruport for this:

> > require “rubygems”  
> > =\> true  
> > require “ruport”  
> > =\> true  
> > content = [  
> > ?\> [“something special a”, “ok coola”, “tahsnk a”],  
> > ?\> [“something speccccccccccccial a”, “ok cooool a”, “tahsnk a”]  
> > ]  
> > =\> [[“something special a”, “ok coola”, “tahsnk a”], [“something  
> > speccccccccccccial a”, “ok cooool a”, “tahsnk a”]]  
> > puts Table(:data =\> content)  
> > ±--------------------------------------------------------+  
> > | something special a | ok coola | tahsnk a |  
> > | something speccccccccccccial a | ok cooool a | tahsnk a |  
> > ±--------------------------------------------------------+

But if you don’t want the decorations, you’d need to tweak things.  
Feel free to take a look at the (not exactly pretty) source and re-use  
whatever code you’d like:

> <https://github.com/ruport/ruport/blob/master/lib/ruport/formatter/text.rb>

-greg

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 2, 2008, 11:51pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/4 "2008-08-02T23:51:24Z")

</div>

On Sat, Aug 2, 2008 at 4:59 PM, Shadowfirebird  
[removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> content.each do |i|  
> i.each{|j| printf "%30s ", j}  
> puts  
> end

If you combine this with a function that first figures out an  
appropriate column width based on the size of the strings in that  
column, this simple approach would be much more lightweight than what  
we do in Ruport, for sure (but not quite as full featured).

But usually, dynamically determining column width is a must-have  
unless you can make a lot of assumptions about the data you’re  
displaying. For example, showing telephone numbers with fixed width  
hard coded columns would be fine, but email addresses, probably not so  
clear cut.

-greg

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 3, 2008, 12:03am UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/5 "2008-08-03T00:03:46Z")

</div>

Cool, didn’t know this example with ruport 🙂

---

<div class="post-metadata">

**Author:** ![lstrecv](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/l/e68b1a/32.png) [@lstrecv](https://www.ruby-forum.com/u/lstrecv)\
**Post date:** [August 2, 2008, 11:01pm UTC](https://www.ruby-forum.com/t/back-on-the-list-two-questions/144828/6 "2008-08-02T23:01:42Z")

</div>

content.each do |i|  
i.each{|j| printf "%30s ", j}  
puts  
end

Or is that too simplistic?

On Sat, Aug 2, 2008 at 9:23 PM, list. rb [removed\_email\_address@domain.invalid](mailto:removed_email_address@domain.invalid) wrote:

> > > I would like to print this out as such:
> > > 
> > > > require “rubygems”  
> > > > ±--------------------------------------------------------+
> > 
> > -greg
> > 
> > –  
> > Killer Ruby PDF Generation named after a magnificent sea creature:  
> > [GitHub - practicingruby/prawn: THIS REPOSITORY HAS MOVED TO:](http://github.com/sandal/prawn) | Non-tech stuff at:  
> > [http://metametta.blogspot.com](http://metametta.blogspot.com)

–  
Me, I imagine places that I have never seen / The colored lights in  
fountains, blue and green / And I imagine places that I will never go  
/ Behind these clouds that hang here dark and low  
But it’s there when I’m holding you / There when I’m sleeping too /  
There when there’s nothing left of me / Hanging out behind the  
burned-out factories / Out of reach but leading me / Into the  
beautiful sea
