From: Robert Klemme Date: 2008-06-24T20:08:48+09:00 Subject: Re: Spacing data into columns 2008/6/23 ara.t.howard : > > 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