Самый чистый способ оправдать текстовые макеты с колонками? - PullRequest
3 голосов
/ 08 июля 2011

В простом текстовом .erb-шаблоне какой метод вы бы предложили использовать для создания наиболее удобного для чтения / чтения кода для чего-то вроде этого:

ITEM DESCRIPTION                                           QTY       PRICE

Product Name One                                             1      $10.00
Another Product With a Longer Name                           2       $5.00
Yet Another Item                                             1      $30.00

Где каждая из этих строк (очевидно)переменная, основанная на предметах, которые были приобретены.

Я мог бы вычислить необходимые пробелы в вспомогательном методе, но это уже решенная проблема с более элегантным решением?

Ответы [ 3 ]

1 голос
/ 18 декабря 2013

Похоже, что для этого можно передать атрибут формата в шаблон ERB. Я недавно использовал этот трюк в запросе на загрузку для rumm.

Мой пример следующий:

Шаблон Fist the erb выглядит следующим образом:

 ID                Name
 ==                ====
<% this.each do |flavor| %>
  <%= '%-17s %-7s' % [flavor.id, flavor.name] %> 
<% end %>

Это выводит данные, которые выглядят так:

ID                Name
==                ====
2                 512MB Standard Instance
3                 1GB Standard Instance
4                 2GB Standard Instance
5                 4GB Standard Instance
6                 8GB Standard Instance
7                 15GB Standard Instance
8                 30GB Standard Instance
performance1-1    1 GB Performance
performance1-2    2 GB Performance
performance1-4    4 GB Performance
performance1-8    8 GB Performance
performance2-120  120 GB Performance
performance2-15   15 GB Performance
performance2-30   30 GB Performance
performance2-60   60 GB Performance
performance2-90   90 GB Performance
0 голосов
/ 25 августа 2011

В итоге я использовал printf() с параметрами формата заполнения.В этой ситуации терминальная таблица выглядела несколько сложной, но полезной для более сложных требований, таких как отображение табличных наборов результатов.

0 голосов
/ 08 июля 2011

Звучит так, как будто вам нужен генератор текстовых таблиц. Единственное, что я могу вспомнить для рубина, это: https://github.com/visionmedia/terminal-table, но могут быть и другие, если этот не соответствует вашим потребностям.

...