Robert Klemme
6/24/2008 11:09:00 AM
2008/6/23 ara.t.howard <ara.t.howard@gmail.com>:
>
> On Jun 23, 2008, at 10:31 AM, Justin To wrote:
>
>> Hi, I want to output a series of items, but I want to make sure they're
>> properly spaced out so it's more readable.
>>
>> Sample:
>>
>> dfssdf | 393f | dfskjsdfk
>> dfjkdfkdfkj| fd | 3493
>> df | 1 | etc....
>>
>> Each row is a class and the data is a variable in the class. For
>> example, row 1-variable 1 is 'dfssdf', row1-variable 2 is '393f', etc.
>>
>> All of my row objects are stored in an array, and when I want to output
>> them, I iterate through the array to access each object's data. How can
>> I make sure that each object's data is output in accordance with every
>> other data's data? (i.e. proper spacing)
> off the top of my head and super inefficient, but the foundation of what you
> need to do. pre-compute where possible.
Here's another approach - a bit more lightweight but you need
knowledge about max widths:
irb(main):001:0> data = [
irb(main):002:1* %w{abc def ghi},
irb(main):003:1* %w{foo bar baz}
irb(main):004:1> ]
=> [["abc", "def", "ghi"], ["foo", "bar", "baz"]]
irb(main):005:0> data.each do |row|
irb(main):006:1* printf "%-10s | %-10s | %-10s\n", *row
irb(main):007:1> end
abc | def | ghi
foo | bar | baz
=> [["abc", "def", "ghi"], ["foo", "bar", "baz"]]
Kind regards
robert
--
use.inject do |as, often| as.you_can - without end