0

I want to display the table in the below format. How can I achieve this?

  ---A----+-----B-----+----C-----
   12335   |  abcd     |  qwerty
   45335   |  efgh     |  poiuy
   78956   |  hjukukuk |  mkloijhkll
   12346   |  sfsfsf   |  vbhkhadad

EDIT 1: The contents of the table can be of any length. The width of the particular cell has to be decided by the content itself.

I got the column width from

col_width = a.transpose.map{|col| col.map{|cell| cell.to_s.length}.max}

and displayed the table contents with: a.each{|row| puts '['+ row.zip(col_width).map{|cell, w| cell.to_s.ljust(w)}.join(' | ')+']'}

where 'a' contains the data from the database.

I only cannot get to print the column headers.

How i can achieve those so that it can align with the table cell contents.

I need to display the output in the console. I am using OCI for accessing the database.

4

2 回答 2

0

我写了一个可以帮助你的gem:http: //github.com/arches/table_print

于 2013-06-17T15:20:52.920 回答
0

Sequel ORM 可以使用pretty_table扩展来做到这一点。否则HIRB可以使用 ActiveRecord 或从数组/哈希中执行此操作。

我经常使用 Sequel,偶尔需要在控制台上显示表格摘要,所以pretty_table对我来说效果很好。

HIRB 用于 IRB 的irbtools插件中,并为各种事物提供表输出。

在任何一种情况下,显示的表格宽度都是使用显示的字符串的长度动态确定的,以查找列的宽度。我从来没有尝试过将非常长的字符串推入需要包装在列中的任何一个,但它们应该自动处理它,因为这是一个常见的要求。

于 2013-02-14T15:39:15.970 回答