console_table 0.1.6 → 0.1.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 626c1c75fc83f5be630b35551e96d9bd318f41e5
4
- data.tar.gz: c7b122ba03999438a6408ea10ac15c3c1dc7adc1
3
+ metadata.gz: d29f00cea80b04a26dc82d97bfa2f6223a37966d
4
+ data.tar.gz: 66059cc9c33ec69fe028422c3fc707a53fb94f29
5
5
  SHA512:
6
- metadata.gz: a5711b3beebcd41a3e353d2a3e3b842316e2201320f52a92e69fab8ac95badda818eda8d475c0cbfd6c03e285b9d18d2f6c05cd71db12300fdb73bfc164c13b1
7
- data.tar.gz: 1f4f0a647a7db4da4b4cbd9b691b6ef9d7d4a03cd58bec59e366fe5cf83f10a44dea6d183176da40438d818b07ff18b517550e2fd2fb995c3600b2a0f58ea64a
6
+ metadata.gz: 17cd329d715430896670cd02dcaf547af1cd93199192cee28d6b85e594b196e9d3152c7d0a24656a5a48dd331fae4ef5e52bb387bc42002e73379fd337afa490
7
+ data.tar.gz: 6592e9a36084707eec3b715c90ff8118943be9a8c6d9b7ce7112a8503d5d511747e3aff97664164d07ccfe1053e777acc2ac0fd792356d81c8dceaafa702578b
data/.travis.yml CHANGED
@@ -1,11 +1,3 @@
1
1
  language: ruby
2
2
  rvm:
3
3
  - 1.9.3
4
- deploy:
5
- provider: rubygems
6
- api_key:
7
- secure: M1I+7IFuje77sZjtQbmvamzihT+NEJpCzb6Eco8AKbJu/swim+2DvojdJHJw3qpjBt+S2u6zPWWc8KqP6ME7YZzydhJKN/rftUow4lyPbJ6ut9wNg4J9EaZgawG/BOm7LESqtj6J5KWrEd2qRn86mLMHO6ZgLsvsKBWR+oMnb+U=
8
- gem: console_table
9
- on:
10
- tags: true
11
- repo: rodhilton/console_table
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ConsoleTable
2
2
 
3
- [![Build Status](https://travis-ci.org/rodhilton/console_table.svg?branch=master)](https://travis-ci.org/rodhilton/console_table)
3
+ [![Gem Version](https://badge.fury.io/rb/console_table.svg)](https://rubygems.org/gems/console_table) [![Build Status](https://travis-ci.org/rodhilton/console_table.svg?branch=master)](https://travis-ci.org/rodhilton/console_table)
4
4
 
5
5
  ConsoleTable is a helper class that allows you to print data to a console in a clean, table-like fashion. It's intended for use
6
6
  in commandline applications with information-dense output. It checks your terminal window size (or COLUMNS environment variable) to ensure
@@ -30,6 +30,32 @@ Or install it yourself as:
30
30
 
31
31
  $ gem install console_table
32
32
 
33
+ ## Quick Start
34
+
35
+ Here's a short-and-sweet example of using ConsoleTable
36
+
37
+ ```ruby
38
+ require 'console_table'
39
+
40
+ ConsoleTable.define(["Name", "DOB", "Title"]) do |table|
41
+ table << ["Rod", "06-15-80", "Software Engineer"]
42
+ table << ["Julia", "04-25-81", "Piano Teacher"]
43
+ end
44
+ ```
45
+
46
+ This program will output, on a console 80 characters wide:
47
+
48
+ ```
49
+ ================================================================================
50
+ Name DOB Title
51
+ --------------------------------------------------------------------------------
52
+ Rod 06-15-80 Software Engineer
53
+ Julia 04-25-81 Piano Teacher
54
+ ================================================================================
55
+ ```
56
+
57
+ This usage takes advantage of the fact that ConsoleTable infers a lot of defaults. For more details about how to exercise the real power of ConsoleTable, refer to the next section.
58
+
33
59
  ## Usage
34
60
 
35
61
  ConsoleTable needs a lot of information to get going, and it can be somewhat awkward to work with.
@@ -371,6 +397,33 @@ Which will yield this, if you're into that sort of thing:
371
397
  *======================================================*
372
398
  ```
373
399
 
400
+ A lot of times, supplying less information means that ConsoleTable will just guess at various defaults. For example, if you do not provide a key for the table config, ConsoleTable will simply number your keys with names like 'col1', 'col2', etc. If you do not provide a title, it will `capitalize` whatever key you are using for the column, or use something like "Column 1" if you do not supply one. If you do not supply a size, ConsoleTable will just assume you want "*" as the size (remember, you can have many "*"s and the space is divided equally).
401
+
402
+ Additionally, you can give ONLY the titles for columns by simply suppling an array of strings as the console config. With this ability, it's possible to define and use ConsoleTable in a remarkably abbreviated manner, where most of the control of the formatting is unexercised.
403
+
404
+ ```ruby
405
+ require 'console_table'
406
+
407
+ ConsoleTable.define(["Name", "DOB", "Title"]) do |table|
408
+ table << ["Rod", "06-15-80", "Software Engineer"]
409
+ table << ["Julia", "04-25-81", "Piano Teacher"]
410
+ end
411
+
412
+ ```
413
+
414
+ Which yields:
415
+ ```
416
+ ================================================================================
417
+ Name DOB Title
418
+ --------------------------------------------------------------------------------
419
+ Rod 06-15-80 Software Engineer
420
+ Julia 04-25-81 Piano Teacher
421
+ ================================================================================
422
+ ```
423
+
424
+ Which is the original Quick Start example up above.
425
+
426
+ For more examples of different ways of using ConsoleTable, refer to the test file in this repository, which has many many different examples of usage.
374
427
 
375
428
  ## Contributing
376
429
 
data/lib/console_table.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module ConsoleTable
2
- VERSION = "0.1.6"
2
+ VERSION = "0.1.7"
3
3
 
4
4
  def self.define(layout, options={}, &block)
5
5
  table = ConsoleTableClass.new(layout, options)
@@ -19,18 +19,31 @@ module ConsoleTable
19
19
 
20
20
  def initialize(column_layout, options={})
21
21
  @original_column_layout = []
22
- column_layout.each_with_index do |layout, i|
23
- if layout.is_a? String
24
- @original_column_layout << {:key => "col#{i+1}".to_sym, :title=>layout, :size=>"*"}
25
- elsif layout[:key].nil? and layout[:title].nil?
26
- @original_column_layout << layout.merge({:key => "col#{i+1}".to_sym, :title=>"Column #{i+1}"})
27
- elsif layout[:title].nil?
28
- @original_column_layout << layout.merge({:title => layout[:key].to_s.capitalize})
29
- elsif layout[:key].nil?
30
- @original_column_layout << layout.merge({:key => "col#{i+1}".to_sym})
31
- else
32
- @original_column_layout << layout
22
+
23
+ if column_layout.is_a? Fixnum
24
+ column_layout = (1..column_layout).collect{|i| "Column #{i}"}
25
+ end
26
+
27
+ if column_layout.is_a? Array
28
+ column_layout.each_with_index do |layout, i|
29
+ if layout.is_a? String
30
+ @original_column_layout << {:key => "col#{i+1}".to_sym, :title=>layout, :size=>"*"}
31
+ elsif layout.is_a? Fixnum
32
+ @original_column_layout << {:key => "col#{i+1}".to_sym, :title=>"Column #{i+1}", :size=>layout}
33
+ elsif layout.is_a? Float
34
+ @original_column_layout << {:key => "col#{i+1}".to_sym, :title=>"Column #{i+1}", :size=>layout}
35
+ elsif layout[:key].nil? and layout[:title].nil?
36
+ @original_column_layout << layout.merge({:key => "col#{i+1}".to_sym, :title=>"Column #{i+1}"})
37
+ elsif layout[:title].nil?
38
+ @original_column_layout << layout.merge({:title => layout[:key].to_s.capitalize})
39
+ elsif layout[:key].nil?
40
+ @original_column_layout << layout.merge({:key => "col#{i+1}".to_sym})
41
+ else
42
+ @original_column_layout << layout
43
+ end
33
44
  end
45
+ else
46
+ raise("Column layout invalid, must be a num of columns or an array of column definitions")
34
47
  end
35
48
 
36
49
  #Mostly used for mocking/testing
@@ -41,6 +54,7 @@ module ConsoleTable
41
54
  @borders = options[:borders] || false #Lines between every cell, implies outline
42
55
  @left_margin = options[:left_margin] || 0
43
56
  @right_margin = options[:right_margin] || 0
57
+ @headings = options[:headings].nil? ? true : options[:headings]
44
58
 
45
59
  #Set outline, just the upper and lower lines
46
60
  if @borders
@@ -169,7 +183,7 @@ module ConsoleTable
169
183
  return
170
184
  end
171
185
 
172
- print_headings unless @headings_printed
186
+ print_headings unless @headings_printed or not @headings
173
187
 
174
188
  if options.is_a? Array #If an array or something is supplied, infer the order from the heading order
175
189
  munged_options = {}
@@ -180,7 +194,8 @@ module ConsoleTable
180
194
  options = munged_options
181
195
  end
182
196
 
183
- print_line if @borders
197
+
198
+ print_line if @borders unless not @headings and @count == 0
184
199
 
185
200
  @out.print " "*@left_margin
186
201
  if @borders
@@ -11,17 +11,13 @@ class ConsoleTableTest < Minitest::Test
11
11
  @mock_out = StringIO.new
12
12
  end
13
13
 
14
- def teardown
15
- # Do nothing
16
- end
17
-
18
14
  def test_basic
19
15
  table_config = [
20
- {:key=>:col1, :size=>20, :title=>"Column 1"},
21
- {:key=>:col2, :size=>20, :title=>"Column 2"},
16
+ {:key => :col1, :size => 20, :title => "Column 1"},
17
+ {:key => :col2, :size => 20, :title => "Column 2"},
22
18
  ]
23
19
 
24
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
20
+ ConsoleTable.define(table_config, :width => 100, :output=>@mock_out) do |table|
25
21
  table << {
26
22
  :col1 => "Row 1, Column 1",
27
23
  :col2 => "Row 1, Column 2"
@@ -48,12 +44,12 @@ Row 2, Column 1 Row 2, Column 1
48
44
 
49
45
  def test_unicode
50
46
  table_config = [
51
- {:key=>:col1, :size=>20, :title=>"Column 1"},
52
- {:key=>:col2, :size=>20, :title=>"Column 2"},
53
- {:key=>:col3, :size=>20, :title=>"Column 3"},
47
+ {:key => :col1, :size => 20, :title => "Column 1"},
48
+ {:key => :col2, :size => 20, :title => "Column 2"},
49
+ {:key => :col3, :size => 20, :title => "Column 3"},
54
50
  ]
55
51
 
56
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
52
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
57
53
  table << {
58
54
  :col1 => "I ♥ Unicode",
59
55
  :col2 => "I ☂ Unicode",
@@ -67,9 +63,9 @@ Row 2, Column 1 Row 2, Column 1
67
63
  }
68
64
 
69
65
  table << {
70
- :col1 => {:text => "I ⁂ Unicode", :justify=>:right},
71
- :col2 => {:text => "I \u2190 Unicode", :justify=>:center},
72
- :col3 => {:text => "I ✓ Unicode", :justify=>:left}
66
+ :col1 => {:text => "I ⁂ Unicode", :justify => :right},
67
+ :col2 => {:text => "I \u2190 Unicode", :justify => :center},
68
+ :col3 => {:text => "I ✓ Unicode", :justify => :left}
73
69
  }
74
70
  end
75
71
 
@@ -88,12 +84,12 @@ I ⚂ Unicode Even Mor I ¥ Unicode Even Mor I µ Unicode Even Mor
88
84
 
89
85
  def test_spacing_convention_sets_justification
90
86
  table_config = [
91
- {:key=>:col1, :size=>20, :title=>"Column 1"},
92
- {:key=>:col2, :size=>20, :title=>"Column 2"},
93
- {:key=>:col3, :size=>20, :title=>"Column 3"},
87
+ {:key => :col1, :size => 20, :title => "Column 1"},
88
+ {:key => :col2, :size => 20, :title => "Column 2"},
89
+ {:key => :col3, :size => 20, :title => "Column 3"},
94
90
  ]
95
91
 
96
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
92
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
97
93
  table << [
98
94
  "\tRight",
99
95
  "\tCenter\t",
@@ -114,16 +110,16 @@ Column 1 Column 2 Column 3
114
110
 
115
111
  def test_newlines_converted_to_spaces_in_middle_stripped_at_ends
116
112
  table_config = [
117
- {:key=>:col1, :size=>20, :title=>"Column 1"},
118
- {:key=>:col2, :size=>20, :title=>"Column 2"},
119
- {:key=>:col3, :size=>20, :title=>"Column 3"},
113
+ {:key => :col1, :size => 20, :title => "Column 1"},
114
+ {:key => :col2, :size => 20, :title => "Column 2"},
115
+ {:key => :col3, :size => 20, :title => "Column 3"},
120
116
  ]
121
117
 
122
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
118
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
123
119
  table << [
124
- {:text=>"Bl\nah", :justify=>:left},
125
- {:text=>"\nStuff", :justify=>:left},
126
- {:text=>"Junk\n", :justify=>:right}
120
+ {:text => "Bl\nah", :justify => :left},
121
+ {:text => "\nStuff", :justify => :left},
122
+ {:text => "Junk\n", :justify => :right}
127
123
  ]
128
124
  end
129
125
 
@@ -140,11 +136,11 @@ Bl ah Stuff Junk
140
136
 
141
137
  def test_linebreak_inside_colorcode_still_resets
142
138
  table_config = [
143
- {:key=>:col1, :size=>20, :title=>"Column 1"},
144
- {:key=>:col2, :size=>5, :title=>"Column 2"},
139
+ {:key => :col1, :size => 20, :title => "Column 1"},
140
+ {:key => :col2, :size => 5, :title => "Column 2"},
145
141
  ]
146
142
 
147
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
143
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
148
144
  table << [
149
145
  "Bl\nah".blue,
150
146
  "1234\nStuff".red
@@ -159,18 +155,18 @@ Bl ah 1234
159
155
  ==========================
160
156
  END
161
157
 
162
- assert_includes @mock_out.string, "\e[0;34;49mBl ah\e[0m" #ensure the color got reset
163
- assert_includes @mock_out.string, "\e[0;31;49m1234 \e[0m" #ensure the color got reset
158
+ assert_includes @mock_out.string, "\e[0;34;49mBl ah\e[0m" #ensure the color got reset
159
+ assert_includes @mock_out.string, "\e[0;31;49m1234 \e[0m" #ensure the color got reset
164
160
 
165
161
  assert_output_equal expected, @mock_out.string
166
162
  end
167
163
 
168
164
  def test_spacing_after_colors_is_preserved
169
165
  table_config = [
170
- {:key=>:col1, :size=>60, :title=>"Column 1"},
166
+ {:key => :col1, :size => 60, :title => "Column 1"},
171
167
  ]
172
168
 
173
- ConsoleTable.define(table_config, :width=> 60, :output=>@mock_out) do |table|
169
+ ConsoleTable.define(table_config, :width => 60, :output => @mock_out) do |table|
174
170
  table << [
175
171
  "hello - \e[0;34;49mTest\e[0m - this is a test"
176
172
  ]
@@ -199,19 +195,19 @@ blah and stuff - Test
199
195
 
200
196
  def test_can_ellipsize_at_column_level
201
197
  table_config = [
202
- {:key=>:col1, :size=>20, :title=>"Column 1", :ellipsize=>true},
203
- {:key=>:col2, :size=>20, :title=>"Column 2"},
198
+ {:key => :col1, :size => 20, :title => "Column 1", :ellipsize => true},
199
+ {:key => :col2, :size => 20, :title => "Column 2"},
204
200
  ]
205
201
 
206
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
202
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
207
203
  table << [
208
204
  "This is way too long to fit here",
209
205
  "This is way too long to fit here",
210
206
  ]
211
207
 
212
208
  table << [
213
- {text: "This is way too long to fit here", :ellipsize=>false},
214
- {text: "This is way too long to fit here", :ellipsize=>true},
209
+ {text: "This is way too long to fit here", :ellipsize => false},
210
+ {text: "This is way too long to fit here", :ellipsize => true},
215
211
  ]
216
212
  end
217
213
 
@@ -229,19 +225,19 @@ This is way too long This is way too l...
229
225
 
230
226
  def test_justify_convention_followed_in_hash_text_but_overrideable
231
227
  table_config = [
232
- {:key=>:col1, :size=>20, :title=>"Column 1", :justify=>:center},
228
+ {:key => :col1, :size => 20, :title => "Column 1", :justify => :center},
233
229
  ]
234
230
 
235
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
231
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
236
232
  table << ["Short"]
237
233
  table << ["\tShort"]
238
234
  table << ["Short\t"]
239
- table << [{:text=>"Short", :justify=>:right}]
240
- table << [{:text=>"Short", :justify=>:left}]
241
- table << [{:text=>"\tShort"}]
242
- table << [{:text=>"Short\t"}]
243
- table << [{:text=>"\tShort", :justify=>:left}] #Override
244
- table << [{:text=>"Short\t", :justify=>:right}] #Override
235
+ table << [{:text => "Short", :justify => :right}]
236
+ table << [{:text => "Short", :justify => :left}]
237
+ table << [{:text => "\tShort"}]
238
+ table << [{:text => "Short\t"}]
239
+ table << [{:text => "\tShort", :justify => :left}] #Override
240
+ table << [{:text => "Short\t", :justify => :right}] #Override
245
241
  end
246
242
 
247
243
  expected=<<-END
@@ -265,12 +261,12 @@ Short
265
261
 
266
262
  def test_should_not_color_tabs_or_ignore_tab_justify_convention_if_inside_color
267
263
  table_config = [
268
- {:key=>:col1, :size=>20, :title=>"Column 1", :justify=>:center},
269
- {:key=>:col2, :size=>20, :title=>"Column 2", :justify=>:right},
270
- {:key=>:col3, :size=>20, :title=>"Column 3", :justify=>:left},
264
+ {:key => :col1, :size => 20, :title => "Column 1", :justify => :center},
265
+ {:key => :col2, :size => 20, :title => "Column 2", :justify => :right},
266
+ {:key => :col3, :size => 20, :title => "Column 3", :justify => :left},
271
267
  ]
272
268
 
273
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
269
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
274
270
  table << [
275
271
  "\tRight".blue,
276
272
  "\tCenter\t".red,
@@ -286,25 +282,25 @@ Short
286
282
  ==============================================================
287
283
  END
288
284
 
289
- assert_includes @mock_out.string, " \e[0;34;49mRight\e[0m" #space is on outside of coor
290
- assert_includes @mock_out.string, " \e[0;35;49mLeft\e[0m " #space is on outside of color
291
- assert_includes @mock_out.string, " \e[0;31;49mCenter\e[0m" #this assert fails due to what I'm pretty sure is a bug in gsub(), but it's not the end of the world so I'm not doing a workaround
285
+ assert_includes @mock_out.string, " \e[0;34;49mRight\e[0m" #space is on outside of coor
286
+ assert_includes @mock_out.string, " \e[0;35;49mLeft\e[0m " #space is on outside of color
287
+ assert_includes @mock_out.string, " \e[0;31;49mCenter\e[0m" #this assert fails due to what I'm pretty sure is a bug in gsub(), but it's not the end of the world so I'm not doing a workaround
292
288
 
293
289
  assert_output_equal expected, @mock_out.string
294
290
  end
295
291
 
296
292
  def test_spaces_preserved_in_middle_but_stripped_at_ends
297
293
  table_config = [
298
- {:key=>:col1, :size=>20, :title=>"Column 1"},
299
- {:key=>:col2, :size=>20, :title=>"Column 2"},
300
- {:key=>:col3, :size=>20, :title=>"Column 3"},
294
+ {:key => :col1, :size => 20, :title => "Column 1"},
295
+ {:key => :col2, :size => 20, :title => "Column 2"},
296
+ {:key => :col3, :size => 20, :title => "Column 3"},
301
297
  ]
302
298
 
303
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
299
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
304
300
  table << [
305
- {:text=>"Bl ah", :justify=>:left},
306
- {:text=>" Stuff", :justify=>:left},
307
- {:text=>"Junk ", :justify=>:right}
301
+ {:text => "Bl ah", :justify => :left},
302
+ {:text => " Stuff", :justify => :left},
303
+ {:text => "Junk ", :justify => :right}
308
304
  ]
309
305
  end
310
306
 
@@ -321,16 +317,16 @@ Bl ah Stuff Junk
321
317
 
322
318
  def test_ignores_tabbing_convention_if_setting_justification_explicitly
323
319
  table_config = [
324
- {:key=>:col1, :size=>20, :title=>"Column 1"},
325
- {:key=>:col2, :size=>20, :title=>"Column 2"},
326
- {:key=>:col3, :size=>20, :title=>"Column 3"},
320
+ {:key => :col1, :size => 20, :title => "Column 1"},
321
+ {:key => :col2, :size => 20, :title => "Column 2"},
322
+ {:key => :col3, :size => 20, :title => "Column 3"},
327
323
  ]
328
324
 
329
- ConsoleTable.define(table_config, :width=> 62, :output=>@mock_out) do |table|
325
+ ConsoleTable.define(table_config, :width => 62, :output => @mock_out) do |table|
330
326
  table << [
331
- {:text=>"\tBlah", :justify=>:left},
332
- {:text=>"\tStuff\t", :justify=>:right},
333
- {:text=>"\tJunk", :justify=>:center}
327
+ {:text => "\tBlah", :justify => :left},
328
+ {:text => "\tStuff\t", :justify => :right},
329
+ {:text => "\tJunk", :justify => :center}
334
330
  ]
335
331
  end
336
332
 
@@ -347,20 +343,20 @@ Blah Stuff Junk
347
343
 
348
344
  def test_can_use_convenient_operator
349
345
  table_config = [
350
- {:key=>:col1, :size=>20, :title=>"Column 1"},
351
- {:key=>:col2, :size=>20, :title=>"Column 2"},
346
+ {:key => :col1, :size => 20, :title => "Column 1"},
347
+ {:key => :col2, :size => 20, :title => "Column 2"},
352
348
  ]
353
349
 
354
- ConsoleTable.define(table_config, :width=>100, :output=>@mock_out) do |table|
350
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
355
351
  table << {
356
- :col1 => "Row 1, Column 1",
357
- :col2 => "Row 1, Column 2"
358
- }
352
+ :col1 => "Row 1, Column 1",
353
+ :col2 => "Row 1, Column 2"
354
+ }
359
355
 
360
356
  table << {
361
- :col1 => "Row 2, Column 1",
362
- :col2 => "Row 2, Column 1"
363
- }
357
+ :col1 => "Row 2, Column 1",
358
+ :col2 => "Row 2, Column 1"
359
+ }
364
360
  end
365
361
 
366
362
  expected=<<-END
@@ -377,19 +373,19 @@ Row 2, Column 1 Row 2, Column 1
377
373
 
378
374
  def test_can_supply_array_and_order_is_inferred
379
375
  table_config = [
380
- {:key=>:col1, :size=>20, :title=>"Column 1"},
381
- {:key=>:col2, :size=>20, :title=>"Column 2"},
376
+ {:key => :col1, :size => 20, :title => "Column 1"},
377
+ {:key => :col2, :size => 20, :title => "Column 2"},
382
378
  ]
383
379
 
384
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
380
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
385
381
  table << [
386
382
  "Row 1, Column 1",
387
383
  "Row 1, Column 2"
388
384
  ]
389
385
 
390
386
  table << [
391
- {:text=>"Row 2, Column 1", :justify=>:center},
392
- {:text=>"Row 2, Column 2", :justify=>:right}
387
+ {:text => "Row 2, Column 1", :justify => :center},
388
+ {:text => "Row 2, Column 2", :justify => :right}
393
389
  ]
394
390
  end
395
391
 
@@ -407,11 +403,11 @@ Row 1, Column 1 Row 1, Column 2
407
403
 
408
404
  def test_percents
409
405
  table_config = [
410
- {:key=>:col1, :size=>0.3, :title=>"Column 1"},
411
- {:key=>:col2, :size=>0.7, :title=>"Column 2"},
406
+ {:key => :col1, :size => 0.3, :title => "Column 1"},
407
+ {:key => :col2, :size => 0.7, :title => "Column 2"},
412
408
  ]
413
409
 
414
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
410
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
415
411
  table << {
416
412
  :col1 => "Row 1, Column 1",
417
413
  :col2 => "Row 1, Column 2"
@@ -434,11 +430,11 @@ Row 2, Column 1 Row 2, Column 1
434
430
 
435
431
  def test_star_fills_all_extra_space
436
432
  table_config = [
437
- {:key=>:col1, :size=>20, :title=>"Column 1"},
438
- {:key=>:col2, :size=>"*", :title=>"Column 2"},
433
+ {:key => :col1, :size => 20, :title => "Column 1"},
434
+ {:key => :col2, :size => "*", :title => "Column 2"},
439
435
  ]
440
436
 
441
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
437
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
442
438
  table << {
443
439
  :col1 => "Row 1, Column 1",
444
440
  :col2 => "Row 1, Column 2"
@@ -464,12 +460,12 @@ Row 2, Column 1 Row 2, Column 1
464
460
 
465
461
  def test_multiple_stars_split_evenly
466
462
  table_config = [
467
- {:key=>:col1, :size=>20, :title=>"Column 1"},
468
- {:key=>:col2, :size=>"*", :title=>"Column 2"},
469
- {:key=>:col3, :size=>"*", :title=>"Column 3"},
463
+ {:key => :col1, :size => 20, :title => "Column 1"},
464
+ {:key => :col2, :size => "*", :title => "Column 2"},
465
+ {:key => :col3, :size => "*", :title => "Column 3"},
470
466
  ]
471
467
 
472
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
468
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
473
469
  table << {
474
470
  :col1 => "Row 1, Column 1",
475
471
  :col2 => "Row 1, Column 2",
@@ -497,11 +493,11 @@ Row 2, Column 1 Row 2, Column 1 Row 2, Column 3
497
493
 
498
494
  def test_no_size_assumed_to_be_star
499
495
  table_config = [
500
- {:key=>:col1, :title=>"Column 1"},
501
- {:key=>:col2, :title=>"Column 2"},
496
+ {:key => :col1, :title => "Column 1"},
497
+ {:key => :col2, :title => "Column 2"},
502
498
  ]
503
499
 
504
- ConsoleTable.define(table_config, :width=> 40, :output=>@mock_out) do |table|
500
+ ConsoleTable.define(table_config, :width => 40, :output => @mock_out) do |table|
505
501
  table << {
506
502
  :col1 => "Row 1, Column 1",
507
503
  :col2 => "Row 1, Column 2",
@@ -522,11 +518,11 @@ Row 1, Column 1 Row 1, Column 2
522
518
 
523
519
  def test_no_name_defaulted_to_capitalize_of_key_name
524
520
  table_config = [
525
- {:key=>:col1},
526
- {:key=>:col2},
521
+ {:key => :col1},
522
+ {:key => :col2},
527
523
  ]
528
524
 
529
- ConsoleTable.define(table_config, :width=> 40, :output=>@mock_out) do |table|
525
+ ConsoleTable.define(table_config, :width => 40, :output => @mock_out) do |table|
530
526
  table << {
531
527
  :col1 => "Row 1, Column 1",
532
528
  :col2 => "Row 1, Column 2",
@@ -547,16 +543,16 @@ Row 1, Column 1 Row 1, Column 2
547
543
 
548
544
  def test_can_combine_percentages_fixed_and_stars
549
545
  table_config = [
550
- {:key=>:col1, :size=>20, :title=>"Column 1"},
551
- {:key=>:col2, :size=>0.3, :title=>"Column 2"},
552
- {:key=>:col3, :size=>4, :title=>"Column 3"},
553
- {:key=>:col4, :size=>"*", :title=>"Column 4"},
554
- {:key=>:col5, :size=>0.2, :title=>"Column 5"},
555
- {:key=>:col6, :size=>"*", :title=>"Column 6"},
556
- {:key=>:col7, :size=>10, :title=>"Column 7"}
546
+ {:key => :col1, :size => 20, :title => "Column 1"},
547
+ {:key => :col2, :size => 0.3, :title => "Column 2"},
548
+ {:key => :col3, :size => 4, :title => "Column 3"},
549
+ {:key => :col4, :size => "*", :title => "Column 4"},
550
+ {:key => :col5, :size => 0.2, :title => "Column 5"},
551
+ {:key => :col6, :size => "*", :title => "Column 6"},
552
+ {:key => :col7, :size => 10, :title => "Column 7"}
557
553
  ]
558
554
 
559
- ConsoleTable.define(table_config, :width=> 160, :output=>@mock_out) do |table|
555
+ ConsoleTable.define(table_config, :width => 160, :output => @mock_out) do |table|
560
556
  table << {
561
557
  :col1 => "Row 1, Column 1",
562
558
  :col2 => "Row 1, Column 2",
@@ -592,17 +588,17 @@ Row 2, Column 1 Row 2, Column 2 Row Row 2, Column 4
592
588
 
593
589
  def test_wont_create_layout_too_large_for_screen
594
590
  table_config = [
595
- {:key=>:col1, :size=>20, :title=>"Column 1"},
596
- {:key=>:col2, :size=>20, :title=>"Column 2"},
591
+ {:key => :col1, :size => 20, :title => "Column 1"},
592
+ {:key => :col2, :size => 20, :title => "Column 2"},
597
593
  ]
598
594
 
599
- assert_raises(RuntimeError) { ConsoleTable.define(table_config, :width=>30) }
595
+ assert_raises(RuntimeError) { ConsoleTable.define(table_config, :width => 30) }
600
596
  end
601
597
 
602
598
  def test_wont_create_layout_with_more_than_100_percent
603
599
  table_config = [
604
- {:key=>:col1, :size=>0.8, :title=>"Column 1"},
605
- {:key=>:col2, :size=>0.3, :title=>"Column 2"},
600
+ {:key => :col1, :size => 0.8, :title => "Column 1"},
601
+ {:key => :col2, :size => 0.3, :title => "Column 2"},
606
602
  ]
607
603
 
608
604
  assert_raises(RuntimeError) { ConsoleTable.define(table_config) }
@@ -610,8 +606,8 @@ Row 2, Column 1 Row 2, Column 2 Row Row 2, Column 4
610
606
 
611
607
  def test_wont_create_layout_with_invalid_size
612
608
  table_config = [
613
- {:key=>:col1, :size=>0.8, :title=>"Column 1"},
614
- {:key=>:col2, :size=>"hello!", :title=>"Column 2"},
609
+ {:key => :col1, :size => 0.8, :title => "Column 1"},
610
+ {:key => :col2, :size => "hello!", :title => "Column 2"},
615
611
  ]
616
612
 
617
613
  assert_raises(RuntimeError) { ConsoleTable.define(table_config) }
@@ -619,34 +615,30 @@ Row 2, Column 1 Row 2, Column 2 Row Row 2, Column 4
619
615
 
620
616
  def test_wont_allow_repeats_of_key_names
621
617
  table_config = [
622
- {:key=>:col1, :size=>20, :title=>"Column 1"},
623
- {:key=>:col1, :size=>20, :title=>"Column 2"},
618
+ {:key => :col1, :size => 20, :title => "Column 1"},
619
+ {:key => :col1, :size => 20, :title => "Column 2"},
624
620
  ]
625
621
 
626
622
  assert_raises(RuntimeError) { ConsoleTable.define(table_config) }
627
623
  end
628
624
 
629
- def test_wont_allow_columns_with_no_key_name
630
- table_config = [
631
- {:key=>:col1, :size=>20, :title=>"Column 1"},
632
- {:size=>20, :title=>"Column 2"},
633
- ]
634
-
635
- assert_raises(RuntimeError) { ConsoleTable.define(table_config) }
625
+ def test_wont_create_layout_when_column_layout_isnt_num_or_array
626
+ assert_raises(RuntimeError) { ConsoleTable.define("4", :width => 30) }
627
+ assert_raises(RuntimeError) { ConsoleTable.define({}, :width => 30) }
636
628
  end
637
629
 
638
630
  def test_can_truncate_output
639
631
  table_config = [
640
- {:key=>:col1, :size=>20, :title=>"Column 1"}
632
+ {:key => :col1, :size => 20, :title => "Column 1"}
641
633
  ]
642
634
 
643
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
635
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
644
636
  table << ["This is short"]
645
637
 
646
- table << {:col1=>"This is way too long and it needs to get cut off"}
638
+ table << {:col1 => "This is way too long and it needs to get cut off"}
647
639
 
648
640
  table << [
649
- {:text=>"This is way too long and it needs to get cut off", :ellipsize=>true}
641
+ {:text => "This is way too long and it needs to get cut off", :ellipsize => true}
650
642
  ]
651
643
 
652
644
  end
@@ -666,28 +658,28 @@ This is way too l...
666
658
 
667
659
  def test_can_justify_columns_and_override_in_rows
668
660
  table_config = [
669
- {:key=>:col1, :size=>20, :title=>"Column 1"},
670
- {:key=>:col2, :size=>20, :title=>"Column 2", :justify=>:center},
671
- {:key=>:col3, :size=>20, :title=>"Column 3", :justify=>:right}
661
+ {:key => :col1, :size => 20, :title => "Column 1"},
662
+ {:key => :col2, :size => 20, :title => "Column 2", :justify => :center},
663
+ {:key => :col3, :size => 20, :title => "Column 3", :justify => :right}
672
664
  ]
673
665
 
674
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
666
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
675
667
  table << {
676
- :col1 => "Short1",
677
- :col2 => "Short2",
678
- :col3 => "Short3"
668
+ :col1 => "Short1",
669
+ :col2 => "Short2",
670
+ :col3 => "Short3"
679
671
  }
680
672
 
681
673
  table << {
682
- :col1 => {text: "Short1"},
683
- :col2 => {text: "Short2"},
684
- :col3 => {text: "Short3"}
674
+ :col1 => {text: "Short1"},
675
+ :col2 => {text: "Short2"},
676
+ :col3 => {text: "Short3"}
685
677
  }
686
678
 
687
679
  table << {
688
- :col1 => {text: "Short1", :justify=>:center},
689
- :col2 => {text: "Short2", :justify=>:right},
690
- :col3 => {text: "Short3", :justify=>:left}
680
+ :col1 => {text: "Short1", :justify => :center},
681
+ :col2 => {text: "Short2", :justify => :right},
682
+ :col3 => {text: "Short3", :justify => :left}
691
683
  }
692
684
  end
693
685
 
@@ -707,32 +699,32 @@ Short1 Short2 Short3
707
699
  def test_huge_example
708
700
 
709
701
  table_config = [
710
- {:key=>:title, :size=>15, :title=>"Movie Title"},
711
- {:key=>:name, :size=>15, :title=>"Name"},
712
- {:key=>:release_date, :size=>8, :title=>"Release Date Too Long"},
713
- {:key=>:tagline, :size=>"*", :title=>"Motto", :justify=>:right},
702
+ {:key => :title, :size => 15, :title => "Movie Title"},
703
+ {:key => :name, :size => 15, :title => "Name"},
704
+ {:key => :release_date, :size => 8, :title => "Release Date Too Long"},
705
+ {:key => :tagline, :size => "*", :title => "Motto", :justify => :right},
714
706
  ]
715
707
 
716
- ConsoleTable.define(table_config, :left_margin=>5, :right_margin=>10, :width=>80, :title=>"Movie Killers", :output=>@mock_out) do |table|
708
+ ConsoleTable.define(table_config, :left_margin => 5, :right_margin => 10, :width => 80, :title => "Movie Killers", :output => @mock_out) do |table|
717
709
  table << {
718
- :title=>{:text=>"Friday the 13th"},
719
- :name=>{:text=>"Jason's Mom", :justify=>:left},
720
- :release_date=>{text: "05-09-80"},
721
- :tagline=>{:text=>"They were warned...They are doomed...And on Friday the 13th, nothing will save them.", :ellipsize=>true}
710
+ :title => {:text => "Friday the 13th"},
711
+ :name => {:text => "Jason's Mom", :justify => :left},
712
+ :release_date => {text: "05-09-80"},
713
+ :tagline => {:text => "They were warned...They are doomed...And on Friday the 13th, nothing will save them.", :ellipsize => true}
722
714
  }
723
715
 
724
716
  table << {
725
- :title=>{:text=>"Halloween"},
726
- :name=>{:text=>"Michael Meyers", :justify=>:left},
727
- :release_date=>{text: "10-25-80"},
728
- :tagline=>{:text=>"Everyone is entitled to one good scare", :ellipsize=>true}
717
+ :title => {:text => "Halloween"},
718
+ :name => {:text => "Michael Meyers", :justify => :left},
719
+ :release_date => {text: "10-25-80"},
720
+ :tagline => {:text => "Everyone is entitled to one good scare", :ellipsize => true}
729
721
  }
730
722
 
731
723
  table << {
732
- :title=>{:text=>"Nightmare on Elm St."},
733
- :name=>{:text=>"Freddy Krueger", :justify=>:left},
734
- :release_date=>{text: "11-16-84"},
735
- :tagline=>{:text=>"A scream that wakes you up, might be your own", :ellipsize=>true}
724
+ :title => {:text => "Nightmare on Elm St."},
725
+ :name => {:text => "Freddy Krueger", :justify => :left},
726
+ :release_date => {text: "11-16-84"},
727
+ :tagline => {:text => "A scream that wakes you up, might be your own", :ellipsize => true}
736
728
  }
737
729
 
738
730
  table << ["Hellraiser", "Pinhead", "9-18-87", "Demon to some. Angel to others."]
@@ -763,11 +755,11 @@ Short1 Short2 Short3
763
755
 
764
756
  def test_printing_a_single_string_does_full_line
765
757
  table_config = [
766
- {:key=>:col1, :size=>20, :title=>"Column 1"},
767
- {:key=>:col2, :size=>20, :title=>"Column 2"},
758
+ {:key => :col1, :size => 20, :title => "Column 1"},
759
+ {:key => :col2, :size => 20, :title => "Column 2"},
768
760
  ]
769
761
 
770
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
762
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
771
763
  table << "This is just a string, it should ignore columns"
772
764
  end
773
765
 
@@ -782,11 +774,11 @@ This is just a string, it should ignore c
782
774
 
783
775
  def test_printing_a_single_after_data_makes_headings_show_up
784
776
  table_config = [
785
- {:key=>:col1, :size=>20, :title=>"Column 1"},
786
- {:key=>:col2, :size=>20, :title=>"Column 2"},
777
+ {:key => :col1, :size => 20, :title => "Column 1"},
778
+ {:key => :col2, :size => 20, :title => "Column 2"},
787
779
  ]
788
780
 
789
- ConsoleTable.define(table_config, :width=> 100, :output=>@mock_out) do |table|
781
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
790
782
  table << ["One", "Two"]
791
783
  table << "This is just a string, it should ignore columns"
792
784
  table << ["One", "Two"]
@@ -807,15 +799,15 @@ One Two
807
799
 
808
800
  def test_can_have_a_bordered_table
809
801
  table_config = [
810
- {:key=>:col1, :size=>20, :title=>"Column 1"},
811
- {:key=>:col2, :size=>0.3, :title=>"Column 2"},
812
- {:key=>:col3, :size=>10, :title=>"Column 3", :justify=>:center},
813
- {:key=>:col4, :size=>"*", :title=>"Column 4", :justify=>:center}
802
+ {:key => :col1, :size => 20, :title => "Column 1"},
803
+ {:key => :col2, :size => 0.3, :title => "Column 2"},
804
+ {:key => :col3, :size => 10, :title => "Column 3", :justify => :center},
805
+ {:key => :col4, :size => "*", :title => "Column 4", :justify => :center}
814
806
  ]
815
807
 
816
- ConsoleTable.define(table_config, :left_margin=>10, :right_margin=>7, :width=> 100, :title=>"Test Title", :borders=>true, :output=>@mock_out) do |table|
808
+ ConsoleTable.define(table_config, :left_margin => 10, :right_margin => 7, :width => 100, :title => "Test Title", :borders => true, :output => @mock_out) do |table|
817
809
  (1..5).each do |row|
818
- table << (1..4).collect{|i| "Row #{row}, Column #{i}".red}
810
+ table << (1..4).collect { |i| "Row #{row}, Column #{i}".red }
819
811
  end
820
812
 
821
813
  table << "Plain line needs borders"
@@ -853,16 +845,16 @@ One Two
853
845
 
854
846
  def test_outline_joins_only_when_no_footer_or_header
855
847
  table_config = [
856
- {:key=>:col1, :size=>20, :title=>"Column 1"},
857
- {:key=>:col2, :size=>0.3, :title=>"Column 2"},
858
- {:key=>:col3, :size=>10, :title=>"Column 3", :justify=>:center},
859
- {:key=>:col4, :size=>"*", :title=>"Column 4", :justify=>:center}
848
+ {:key => :col1, :size => 20, :title => "Column 1"},
849
+ {:key => :col2, :size => 0.3, :title => "Column 2"},
850
+ {:key => :col3, :size => 10, :title => "Column 3", :justify => :center},
851
+ {:key => :col4, :size => "*", :title => "Column 4", :justify => :center}
860
852
  ]
861
853
 
862
854
  #borders are true, so outline false should be ignored
863
- ConsoleTable.define(table_config, :left_margin=>10, :right_margin=>7, :width=> 100, :borders=>true, :outline=>false, :output=>@mock_out) do |table|
855
+ ConsoleTable.define(table_config, :left_margin => 10, :right_margin => 7, :width => 100, :borders => true, :outline => false, :output => @mock_out) do |table|
864
856
  (1..5).each do |row|
865
- table << (1..4).collect{|i| "Row #{row}, Column #{i}"}
857
+ table << (1..4).collect { |i| "Row #{row}, Column #{i}" }
866
858
  end
867
859
 
868
860
  table << "Plain line needs borders"
@@ -892,13 +884,13 @@ One Two
892
884
 
893
885
  def test_can_have_no_outline_if_requested
894
886
  table_config = [
895
- {:key=>:col1, :size=>20, :title=>"Column 1"},
896
- {:key=>:col2, :size=>0.3, :title=>"Column 2"},
887
+ {:key => :col1, :size => 20, :title => "Column 1"},
888
+ {:key => :col2, :size => 0.3, :title => "Column 2"},
897
889
  ]
898
890
 
899
- ConsoleTable.define(table_config, :width=>60, :outline=>false, :title=>"Still has a title", :output=>@mock_out) do |table|
891
+ ConsoleTable.define(table_config, :width => 60, :outline => false, :title => "Still has a title", :output => @mock_out) do |table|
900
892
  (1..5).each do |row|
901
- table << (1..2).collect{|i| "Row #{row}, Column #{i}"}
893
+ table << (1..2).collect { |i| "Row #{row}, Column #{i}" }
902
894
  end
903
895
 
904
896
  end
@@ -919,26 +911,26 @@ Row 5, Column 1 Row 5, Colu
919
911
 
920
912
  def test_can_use_colors_without_affecting_layout
921
913
  table_config = [
922
- {:key=>:col1, :size=>10, :title=>"Column 1", :justify=>:left},
923
- {:key=>:col2, :size=>10, :title=>"Column 2", :justify=>:center},
924
- {:key=>:col3, :size=>10, :title=>"Column 3", :justify=>:right},
914
+ {:key => :col1, :size => 10, :title => "Column 1", :justify => :left},
915
+ {:key => :col2, :size => 10, :title => "Column 2", :justify => :center},
916
+ {:key => :col3, :size => 10, :title => "Column 3", :justify => :right},
925
917
  ]
926
918
 
927
- ConsoleTable.define(table_config, :width=> 120, :output=>@mock_out) do |table|
919
+ ConsoleTable.define(table_config, :width => 120, :output => @mock_out) do |table|
928
920
  table << ["Short".blue, "Short".bold, "Short".red.on_blue]
929
921
 
930
922
  table << ["Much much longer".blue, "Much much longer".bold, "Much much longer".red.on_blue]
931
923
 
932
924
  table << [
933
- {:text=>"Much much longer".blue, :ellipsize=>true},
934
- {:text=>"Much much longer".underline, :ellipsize=>true},
935
- {:text=>"Much much longer".on_magenta, :ellipsize=>true}
925
+ {:text => "Much much longer".blue, :ellipsize => true},
926
+ {:text => "Much much longer".underline, :ellipsize => true},
927
+ {:text => "Much much longer".on_magenta, :ellipsize => true}
936
928
  ]
937
929
 
938
930
  table << [
939
- {:text=>"Much much longer".yellow, :ellipsize=>true},
940
- {:text=>"Normal, should reset", :ellipsize=>true},
941
- {:text=>"Much much longer".bold, :ellipsize=>true}
931
+ {:text => "Much much longer".yellow, :ellipsize => true},
932
+ {:text => "Normal, should reset", :ellipsize => true},
933
+ {:text => "Much much longer".bold, :ellipsize => true}
942
934
  ]
943
935
  end
944
936
 
@@ -953,23 +945,23 @@ Much mu... Normal,... Much mu...
953
945
  ================================
954
946
  END
955
947
 
956
- assert_includes @mock_out.string, "\e[1;39;49mShort\e[0m" #Should have normal color codes
957
- assert_includes @mock_out.string, "\e[0;33;49mMuch mu...\e[0m" #the cut-off one should keep the color code for ellipses, then reset
948
+ assert_includes @mock_out.string, "\e[1;39;49mShort\e[0m" #Should have normal color codes
949
+ assert_includes @mock_out.string, "\e[0;33;49mMuch mu...\e[0m" #the cut-off one should keep the color code for ellipses, then reset
958
950
 
959
951
  assert_output_equal expected, @mock_out.string
960
952
  end
961
953
 
962
954
  def test_will_generate_default_column_keys_and_titles_and_sizes_if_not_provided
963
955
  table_config = [
964
- {:size=>20, :title=>"Column 1"},
965
- {:key=>:col2, :size=>20, :title=>"Column 2"},
966
- {:size=>20, :title=>"Column 3"},
967
- {:key=>:col4, :size=>20},
968
- {:size=>20},
956
+ {:size => 20, :title => "Column 1"},
957
+ {:key => :col2, :size => 20, :title => "Column 2"},
958
+ {:size => 20, :title => "Column 3"},
959
+ {:key => :col4, :size => 20},
960
+ {:size => 20},
969
961
  {}
970
962
  ]
971
963
 
972
- ConsoleTable.define(table_config, :width=> 125, :output=>@mock_out) do |table|
964
+ ConsoleTable.define(table_config, :width => 125, :output => @mock_out) do |table|
973
965
  table << ["A", "B", "C", "D", "E", "F"]
974
966
 
975
967
  end
@@ -987,12 +979,12 @@ A B C D
987
979
 
988
980
  def test_can_use_a_string_instead_of_hash_to_default_everything
989
981
  table_config = [
990
- {:size=>20, :title=>"Column 1"},
982
+ {:size => 20, :title => "Column 1"},
991
983
  "Simple Column",
992
- {:size=>20, :title=>"Column 3"},
984
+ {:size => 20, :title => "Column 3"},
993
985
  ]
994
986
 
995
- ConsoleTable.define(table_config, :width=> 70, :output=>@mock_out) do |table|
987
+ ConsoleTable.define(table_config, :width => 70, :output => @mock_out) do |table|
996
988
  table << ["A", "B", "C"]
997
989
  end
998
990
 
@@ -1012,7 +1004,7 @@ A B C
1012
1004
  "A Column", "B Column", "C Column"
1013
1005
  ]
1014
1006
 
1015
- ConsoleTable.define(table_config, :width=> 30, :output=>@mock_out) do |table|
1007
+ ConsoleTable.define(table_config, :width => 30, :output => @mock_out) do |table|
1016
1008
  table << ["A", "B", "C"]
1017
1009
  end
1018
1010
 
@@ -1027,6 +1019,275 @@ A B C
1027
1019
  assert_output_equal expected, @mock_out.string
1028
1020
  end
1029
1021
 
1022
+ def test_can_disable_headings
1023
+ table_config = [
1024
+ {:key => :col1, :size => 20, :title => "Column 1"},
1025
+ {:key => :col2, :size => 20, :title => "Column 2"},
1026
+ ]
1027
+
1028
+ ConsoleTable.define(table_config, :width => 100, :headings => false, :output => @mock_out) do |table|
1029
+ table << {
1030
+ :col1 => "Row 1, Column 1",
1031
+ :col2 => "Row 1, Column 2"
1032
+ }
1033
+
1034
+ table << {
1035
+ :col1 => "Row 2, Column 1",
1036
+ :col2 => "Row 2, Column 1"
1037
+ }
1038
+ end
1039
+
1040
+ expected=<<-END
1041
+ =========================================
1042
+ Row 1, Column 1 Row 1, Column 2
1043
+ Row 2, Column 1 Row 2, Column 1
1044
+ =========================================
1045
+ END
1046
+
1047
+ assert_output_equal expected, @mock_out.string
1048
+
1049
+ end
1050
+
1051
+ def test_can_disable_headings_and_outline
1052
+ table_config = [
1053
+ {:key => :col1, :size => 20, :title => "Column 1"},
1054
+ {:key => :col2, :size => 20, :title => "Column 2"},
1055
+ ]
1056
+
1057
+ ConsoleTable.define(table_config, :width => 100, :headings => false, :outline=>false, :output => @mock_out) do |table|
1058
+ table << {
1059
+ :col1 => "Row 1, Column 1",
1060
+ :col2 => "Row 1, Column 2"
1061
+ }
1062
+
1063
+ table << {
1064
+ :col1 => "Row 2, Column 1",
1065
+ :col2 => "Row 2, Column 1"
1066
+ }
1067
+ end
1068
+
1069
+ expected=<<-END
1070
+ Row 1, Column 1 Row 1, Column 2
1071
+ Row 2, Column 1 Row 2, Column 1
1072
+ END
1073
+
1074
+ assert_output_equal expected, @mock_out.string
1075
+
1076
+ end
1077
+
1078
+ def test_can_disable_headings_with_borders
1079
+ table_config = [
1080
+ {:key => :col1, :size => 20, :title => "Column 1"},
1081
+ {:key => :col2, :size => 20, :title => "Column 2"},
1082
+ ]
1083
+
1084
+ ConsoleTable.define(table_config, :width => 100, :headings => false, :borders => true, :output => @mock_out) do |table|
1085
+ table << {
1086
+ :col1 => "Row 1, Column 1",
1087
+ :col2 => "Row 1, Column 2"
1088
+ }
1089
+
1090
+ table << {
1091
+ :col1 => "Row 2, Column 1",
1092
+ :col2 => "Row 2, Column 1"
1093
+ }
1094
+ end
1095
+
1096
+ expected=<<-END
1097
+ *====================*====================*
1098
+ |Row 1, Column 1 |Row 1, Column 2 |
1099
+ +--------------------+--------------------+
1100
+ |Row 2, Column 1 |Row 2, Column 1 |
1101
+ *====================*====================*
1102
+ END
1103
+
1104
+ assert_output_equal expected, @mock_out.string
1105
+ end
1106
+
1107
+ def test_can_define_a_table_with_just_numbers_for_size
1108
+ table_config = [
1109
+ {:key => :col1, :size => 20, :title => "Column 1"},
1110
+ 15,
1111
+ ]
1112
+
1113
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
1114
+ table << {
1115
+ :col1 => "Row 1, Column 1",
1116
+ :col2 => "Row 1, Column 2"
1117
+ }
1118
+
1119
+ table << {
1120
+ :col1 => "Row 2, Column 1",
1121
+ :col2 => "Row 2, Column 1"
1122
+ }
1123
+ end
1124
+
1125
+ expected=<<-END
1126
+ ====================================
1127
+ Column 1 Column 2
1128
+ ------------------------------------
1129
+ Row 1, Column 1 Row 1, Column 2
1130
+ Row 2, Column 1 Row 2, Column 1
1131
+ ====================================
1132
+ END
1133
+
1134
+ assert_output_equal expected, @mock_out.string
1135
+
1136
+ end
1137
+
1138
+ def test_can_define_a_mix_and_match_of_floats_and_hashes_and_strings
1139
+ table_config = [
1140
+ 0.4,
1141
+ {:key => :a_column, :size => 20, :title => "A Column"},
1142
+ 15,
1143
+ "Title"
1144
+ ]
1145
+
1146
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
1147
+ table << [
1148
+ "Row 1, Column 1",
1149
+ "Row 1, Column 2",
1150
+ "Row 1, Column 3",
1151
+ "Row 1, Column 4"
1152
+ ]
1153
+
1154
+ table << [
1155
+ "Row 2, Column 1",
1156
+ "Row 2, Column 2",
1157
+ "Row 2, Column 3",
1158
+ "Row 2, Column 4"
1159
+ ]
1160
+ end
1161
+
1162
+ expected=<<-END
1163
+ ===================================================================================================
1164
+ Column 1 A Column Column 3 Title
1165
+ ---------------------------------------------------------------------------------------------------
1166
+ Row 1, Column 1 Row 1, Column 2 Row 1, Column 3 Row 1, Column 4
1167
+ Row 2, Column 1 Row 2, Column 2 Row 2, Column 3 Row 2, Column 4
1168
+ ===================================================================================================
1169
+ END
1170
+
1171
+ assert_output_equal expected, @mock_out.string
1172
+
1173
+ end
1174
+
1175
+ def test_can_define_a_group_of_equal_size_columns_with_just_the_number_of_columns
1176
+ ConsoleTable.define(4, :width => 100, :output => @mock_out) do |table|
1177
+ table << [
1178
+ "Row 1, Column 1",
1179
+ "Row 1, Column 2",
1180
+ "Row 1, Column 3",
1181
+ "Row 1, Column 4"
1182
+ ]
1183
+
1184
+ table << [
1185
+ "Row 2, Column 1",
1186
+ "Row 2, Column 2",
1187
+ "Row 2, Column 3",
1188
+ "Row 2, Column 4"
1189
+ ]
1190
+ end
1191
+
1192
+ expected=<<-END
1193
+ ===================================================================================================
1194
+ Column 1 Column 2 Column 3 Column 4
1195
+ ---------------------------------------------------------------------------------------------------
1196
+ Row 1, Column 1 Row 1, Column 2 Row 1, Column 3 Row 1, Column 4
1197
+ Row 2, Column 1 Row 2, Column 2 Row 2, Column 3 Row 2, Column 4
1198
+ ===================================================================================================
1199
+ END
1200
+
1201
+ assert_output_equal expected, @mock_out.string
1202
+
1203
+ end
1204
+
1205
+ def test_can_define_a_table_as_just_array_of_numbers
1206
+ table_config = [
1207
+ 20,
1208
+ 15,
1209
+ ]
1210
+
1211
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
1212
+ table << {
1213
+ :col1 => "Row 1, Column 1",
1214
+ :col2 => "Row 1, Column 2"
1215
+ }
1216
+
1217
+ table << {
1218
+ :col1 => "Row 2, Column 1",
1219
+ :col2 => "Row 2, Column 1"
1220
+ }
1221
+ end
1222
+
1223
+ expected=<<-END
1224
+ ====================================
1225
+ Column 1 Column 2
1226
+ ------------------------------------
1227
+ Row 1, Column 1 Row 1, Column 2
1228
+ Row 2, Column 1 Row 2, Column 1
1229
+ ====================================
1230
+ END
1231
+
1232
+ assert_output_equal expected, @mock_out.string
1233
+
1234
+ end
1235
+
1236
+ def test_can_define_a_table_with_just_numbers_including_floats
1237
+ table_config = [
1238
+ 0.5,
1239
+ 15,
1240
+ ]
1241
+
1242
+ ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
1243
+ table << {
1244
+ :col1 => "Row 1, Column 1",
1245
+ :col2 => "Row 1, Column 2"
1246
+ }
1247
+
1248
+ table << {
1249
+ :col1 => "Row 2, Column 1",
1250
+ :col2 => "Row 2, Column 1"
1251
+ }
1252
+ end
1253
+
1254
+ expected=<<-END
1255
+ ==========================================================
1256
+ Column 1 Column 2
1257
+ ----------------------------------------------------------
1258
+ Row 1, Column 1 Row 1, Column 2
1259
+ Row 2, Column 1 Row 2, Column 1
1260
+ ==========================================================
1261
+ END
1262
+
1263
+ puts @mock_out.string
1264
+
1265
+ assert_output_equal expected, @mock_out.string
1266
+
1267
+ end
1268
+
1269
+ def test_can_use_console_table_as_glorified_tab_replacement
1270
+ ConsoleTable.define(2, :width => 40, :headings=>false, :outline=>false, :output => @mock_out) do |table|
1271
+ table << [
1272
+ "Row 1, Column 1",
1273
+ "\tRow 1, Column 2"
1274
+ ]
1275
+
1276
+ table << [
1277
+ "Row 2, Column 1",
1278
+ "\tRow 2, Column 2"
1279
+ ]
1280
+ end
1281
+
1282
+ expected=<<-END
1283
+ Row 1, Column 1 Row 1, Column 2
1284
+ Row 2, Column 1 Row 2, Column 2
1285
+ END
1286
+
1287
+ assert_output_equal expected, @mock_out.string
1288
+
1289
+ end
1290
+
1030
1291
  private
1031
1292
  def assert_output_equal(expected, actual)
1032
1293
  expected_lines = expected.split("\n")
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: console_table
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.6
4
+ version: 0.1.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Rod Hilton
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-02-13 00:00:00.000000000 Z
11
+ date: 2015-02-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler