【问题标题】:Ruby gem to paginate text into wrapping columnsRuby gem 将文本分页到换行列中
【发布时间】:2012-07-19 16:35:34
【问题描述】:

是否有任何简单的 gem 或方法可以将数组(或 CSV 行)打印为文本表,只要终端的宽度参数还没用完?

例如,注意 'ls' 的对齐、节省空间的输出(从上到下然后从左到右排序):

 # ls
30_os-prober                Documents         Pictures           sysadmin.geany  xorg.conf
avivotool.regdump_good.txt  Downloads         Public             Templates       xorg.conf.00
bin                         fbcmd_update.php  regdump_broke.txt  tmp
crontab.root@quant.txt      grub-mkconfig     stuck.packages     unity.log
Desktop                     Music             sync               Videos

我一直在使用“文本表”gem,例如。

  puts $csv_rows[1].to_a.transpose.to_table.align_column 2, :right

但它只垂直垂直向下打印 100 行,即使水平可能仅使用 30 个字符。我希望输出将右侧空间用于一列或多列项目,否则这些项目将位于第 1 列的底部。

【问题讨论】:

    标签: arrays ruby text formatting


    【解决方案1】:

    尝试了一下。 我完全不喜欢的一种方式,但只能使用两列模式:

    i=0; puts (sa=$csvrow.to_a.transpose.to_table.align_column(2, :right).to_s.split("\n") )[0..sa.size/2].map{|e| e + sa[(i+=1)+sa.size/2].to_s + "\n"}
    

    它真正做的只是循环前半部分,从项目 i=0 到 n/2,附加 i + n/2(后半部分)中的项目和一个换行符。 to_table 使每个项目的字符串保持相同的固定长度,因此最后看起来都是对齐的。可能是可以建立的东西。

    【讨论】:

      猜你喜欢
      • 2015-08-29
      • 2015-10-25
      • 2015-08-13
      • 1970-01-01
      • 2019-01-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多