console_table 0.2.0 → 0.2.1
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 +4 -4
- data/console_table.gemspec +1 -2
- data/lib/console_table.rb +2 -15
- data/test/test_console_table.rb +52 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0fed2d92f9592e9ed2fe3f687550473f783c6982
|
4
|
+
data.tar.gz: c3d516293086bcc3734d8e21710c879225bbb5ae
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3561143d5ced3c2bbb9464519c84f86f9aad36f8b17658202d4eaf4e49818a5583db8430af311dbb51a4fb11dcab31fc571b25100ea91c0f81997c6505cf4856
|
7
|
+
data.tar.gz: 57be1e70ba595a59f7b4eb1b987f3aade12b7643462d09ae631359ca7d8a8a605a8b8688c450bb9c8afac0320ea445f2f5a0e32952223e37b136c3c7f0edf97c
|
data/console_table.gemspec
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
# coding: utf-8
|
2
2
|
lib = File.expand_path('../lib', __FILE__)
|
3
3
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
-
# require 'console_table'
|
5
4
|
|
6
5
|
Gem::Specification.new do |spec|
|
7
6
|
spec.name = "console_table"
|
8
|
-
spec.version = "0.2.
|
7
|
+
spec.version = "0.2.1"
|
9
8
|
spec.authors = ["Rod Hilton"]
|
10
9
|
spec.email = ["consoletable@rodhilton.com"]
|
11
10
|
spec.summary = %q{Simplifies printing tables of information to commandline consoles}
|
data/lib/console_table.rb
CHANGED
@@ -4,18 +4,7 @@
|
|
4
4
|
#
|
5
5
|
# Author:: Rod Hilton
|
6
6
|
# License:: MIT
|
7
|
-
#
|
8
|
-
#--
|
9
|
-
# TODO: it's a little weird how, if a footer is too long, it simply doesn't print at all.
|
10
|
-
# This seems like not what someone would want to have happen.
|
11
|
-
# Could we take footer lines and split them every X characters where X is the working
|
12
|
-
# width, then use those? Long lines effectively wrap, but not on word boundaries
|
13
|
-
# TODO: if you're doing center or right-justification, should it trim from the sides or
|
14
|
-
# from the left, respectively?
|
15
|
-
#++
|
16
|
-
|
17
7
|
module ConsoleTable
|
18
|
-
VERSION = "0.1.8"
|
19
8
|
|
20
9
|
# Define a console table. Requires a table layout which specifies column information
|
21
10
|
# like sizes, titles, and key names.
|
@@ -103,7 +92,7 @@ module ConsoleTable
|
|
103
92
|
print_line("=", "*", true)
|
104
93
|
end if @outline
|
105
94
|
|
106
|
-
|
95
|
+
unless @title.nil?
|
107
96
|
@out.print " "*@left_margin
|
108
97
|
@out.print "|" if @borders
|
109
98
|
@out.print format(@working_width, @title, false, :center)
|
@@ -119,13 +108,11 @@ module ConsoleTable
|
|
119
108
|
end
|
120
109
|
|
121
110
|
footer_lines.each do |line|
|
122
|
-
if uncolorize(line).length <= @working_width
|
123
111
|
@out.print " " * @left_margin
|
124
112
|
@out.print "|" if @borders
|
125
113
|
@out.print format(@working_width, line, false, :right)
|
126
114
|
@out.print "|" if @borders
|
127
115
|
@out.print "\n"
|
128
|
-
end
|
129
116
|
end
|
130
117
|
|
131
118
|
if should_print_footer
|
@@ -183,7 +170,7 @@ module ConsoleTable
|
|
183
170
|
end
|
184
171
|
|
185
172
|
def should_print_footer
|
186
|
-
footer_lines.length > 0
|
173
|
+
footer_lines.length > 0
|
187
174
|
end
|
188
175
|
|
189
176
|
def footer_lines
|
data/test/test_console_table.rb
CHANGED
@@ -4,9 +4,12 @@ SimpleCov.start
|
|
4
4
|
|
5
5
|
require 'minitest/autorun'
|
6
6
|
|
7
|
+
#--
|
8
|
+
# TODO: if you're doing center or right-justification, should it trim from the sides or
|
9
|
+
# from the left, respectively?
|
10
|
+
#++
|
7
11
|
class ConsoleTableTest < Minitest::Test
|
8
12
|
|
9
|
-
|
10
13
|
def setup
|
11
14
|
require 'console_table'
|
12
15
|
require 'colorize'
|
@@ -658,6 +661,28 @@ This is way too l...
|
|
658
661
|
assert_output_equal expected, @mock_out.string
|
659
662
|
end
|
660
663
|
|
664
|
+
def test_can_truncate_titles
|
665
|
+
table_config = [
|
666
|
+
{:key => :col1, :size => 20, :title => "This column title is too long"}
|
667
|
+
]
|
668
|
+
|
669
|
+
ConsoleTable.define(table_config, :width => 100, :title=>"Hello world this is too long", :output => @mock_out) do |table|
|
670
|
+
table << ["This is short"]
|
671
|
+
|
672
|
+
end
|
673
|
+
|
674
|
+
expected=<<-END
|
675
|
+
====================
|
676
|
+
Hello world this is
|
677
|
+
This column title is
|
678
|
+
--------------------
|
679
|
+
This is short
|
680
|
+
====================
|
681
|
+
END
|
682
|
+
|
683
|
+
assert_output_equal expected, @mock_out.string
|
684
|
+
end
|
685
|
+
|
661
686
|
def test_can_justify_columns_and_override_in_rows
|
662
687
|
table_config = [
|
663
688
|
{:key => :col1, :size => 20, :title => "Column 1"},
|
@@ -774,6 +799,32 @@ This is just a string, it should ignore c
|
|
774
799
|
assert_output_equal expected, @mock_out.string
|
775
800
|
end
|
776
801
|
|
802
|
+
#TODO: Really don't love how this works.. truncate from right? Auto word-wrap? something..
|
803
|
+
def test_printing_a_single_string_truncates_footer
|
804
|
+
table_config = [
|
805
|
+
{:key => :col1, :size => 20, :title => "Column 1"},
|
806
|
+
]
|
807
|
+
|
808
|
+
ConsoleTable.define(table_config, :width => 100, :output => @mock_out) do |table|
|
809
|
+
table << "Blah"
|
810
|
+
|
811
|
+
table.footer << "This is a really long footer that should automatically be truncated"
|
812
|
+
table.footer << "This is a really long footer \n that should automatically be truncated"
|
813
|
+
end
|
814
|
+
|
815
|
+
expected=<<-END
|
816
|
+
====================
|
817
|
+
Blah
|
818
|
+
--------------------
|
819
|
+
This is a really lon
|
820
|
+
This is a really lon
|
821
|
+
that should automati
|
822
|
+
====================
|
823
|
+
END
|
824
|
+
|
825
|
+
assert_output_equal expected, @mock_out.string
|
826
|
+
end
|
827
|
+
|
777
828
|
def test_printing_a_single_after_data_makes_headings_show_up
|
778
829
|
table_config = [
|
779
830
|
{:key => :col1, :size => 20, :title => "Column 1"},
|