From: "ara.t.howard" Date: 2008-06-24T01:40:27+09:00 Subject: Re: Spacing data into columns 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) > > THANKS! # compute widths expensively widths = [] rows.each do |row| row.each_with_index do |cell, idx| widths[idx] = [cell.to_s.size, widths[idx] || 0].max end end # use them rows.each do |row| formatted = [] row.each_with_index do |cell, idx| width = widths[idx] format = "%-#{ width }.#{ width }s" formatted << (format % cell) end puts formatted.join(' | ') end off the top of my head and super inefficient, but the foundation of what you need to do. pre-compute where possible. regards. a @ http://codeforpeople.com/ -- we can deny everything, except that we have the possibility of being better. simply reflect on that. h.h. the 14th dalai lama