ttable 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +4 -0
- data/lib/terminal/table.rb +16 -3
- data/lib/terminal/table/version.rb +5 -0
- data/lib/ttable.rb +1 -1
- data/spec/terminal/table_spec.rb +88 -0
- data/ttable.gemspec +1 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 848ced9a6e3d3713df2705bc0c1e2d09e8480962
|
4
|
+
data.tar.gz: 842f58e9371c834e36755738b686db91a813b1e7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 91fd34dcb375c8cad28523e5965233f6452a16d3e503a6a4784f0bfe29d2914fec3bd86e1b19ffb3f9aa91685b631fd87b8416453f7be653d75147c2dd6359eb
|
7
|
+
data.tar.gz: 0b9a31805ecb628a1893028f985ba310d0409b3563be5fc3e52de9702f79af0f6c7edae956762f8f76c260da3a15f4fe5d6d60fe783c68d082097ae6349b94bc
|
data/README.md
CHANGED
data/lib/terminal/table.rb
CHANGED
@@ -19,7 +19,12 @@ class String
|
|
19
19
|
chars.inject(result) do |result, c|
|
20
20
|
if c.ord <= 126
|
21
21
|
result += 1
|
22
|
-
elsif %w{
|
22
|
+
elsif %w{ ͡ ͜ }.include?(c)
|
23
|
+
# zero width
|
24
|
+
result += 0
|
25
|
+
elsif %w{ ě ì • é · ♪ … ω ˊ ˋ √ “ ” ☻ ※ ◎ ◆ ‘ ★ ’ — ° ʖ ¯ ≥ ≤ }.include?(c)
|
26
|
+
result += 1
|
27
|
+
elsif c == ' ' # ord == 8198
|
23
28
|
result += 1
|
24
29
|
elsif Emoji.find_by_unicode(c)
|
25
30
|
result += 1
|
@@ -40,8 +45,6 @@ end
|
|
40
45
|
|
41
46
|
module Terminal
|
42
47
|
class Table
|
43
|
-
VERSION = '0.0.2'
|
44
|
-
|
45
48
|
attr_accessor :rows
|
46
49
|
attr_accessor :headings
|
47
50
|
attr_accessor :column_widths
|
@@ -54,6 +57,16 @@ module Terminal
|
|
54
57
|
recalculate_column_widths!
|
55
58
|
end
|
56
59
|
|
60
|
+
def rows=(rows)
|
61
|
+
@rows = rows.map { |row| row.map { |item| item.to_s.gsub("\n", " ") } }
|
62
|
+
recalculate_column_widths!
|
63
|
+
end
|
64
|
+
|
65
|
+
def headings=(headings)
|
66
|
+
@headings = headings
|
67
|
+
recalculate_column_widths!
|
68
|
+
end
|
69
|
+
|
57
70
|
def recalculate_column_widths!
|
58
71
|
if @rows.count > 0
|
59
72
|
(0...@rows.first.size).each do |col|
|
data/lib/ttable.rb
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
require "
|
1
|
+
require "terminal/table/version"
|
2
2
|
require "terminal/table"
|
data/spec/terminal/table_spec.rb
CHANGED
@@ -12,10 +12,43 @@ module Terminal
|
|
12
12
|
its(:to_s) { should == "++\n++\n" }
|
13
13
|
end
|
14
14
|
|
15
|
+
context 'new lines' do
|
16
|
+
subject { Table.new { |t| t.rows = [["a\nb"]] } }
|
17
|
+
|
18
|
+
expected = <<END
|
19
|
+
+-----+
|
20
|
+
| a b |
|
21
|
+
+-----+
|
22
|
+
END
|
23
|
+
its(:to_s) { should == expected.gsub(/^(\s+)/, '') }
|
24
|
+
end
|
25
|
+
|
15
26
|
context 'when only heading' do
|
16
27
|
subject { Table.new { |t| t.headings = %w{ head } } }
|
17
28
|
its(:to_s) { should == "+------+\n| head |\n+------+\n+------+\n" }
|
18
29
|
end
|
30
|
+
|
31
|
+
context 'when set contents after' do
|
32
|
+
subject { Table.new.tap { |t| t.headings = %w{ head } } }
|
33
|
+
its(:to_s) { should == "+------+\n| head |\n+------+\n+------+\n" }
|
34
|
+
end
|
35
|
+
|
36
|
+
context 'with nil values' do
|
37
|
+
subject { Table.new { |t| t.headings = %w{ head }; t.rows = [ [ nil ] ] } }
|
38
|
+
its(:to_s) { should == "+------+\n| head |\n+------+\n| |\n+------+\n" }
|
39
|
+
end
|
40
|
+
|
41
|
+
context 'with nil values' do
|
42
|
+
subject { Table.new { |t| t.headings = %w{ head1 head2 }; t.rows = [ [ nil, nil ] ] } }
|
43
|
+
expected = <<END
|
44
|
+
+-------+-------+
|
45
|
+
| head1 | head2 |
|
46
|
+
+-------+-------+
|
47
|
+
| | |
|
48
|
+
+-------+-------+
|
49
|
+
END
|
50
|
+
its(:to_s) { should == expected.gsub(/^(\s+)/, '') }
|
51
|
+
end
|
19
52
|
end
|
20
53
|
end
|
21
54
|
end
|
@@ -76,5 +109,60 @@ describe String do
|
|
76
109
|
subject { '☻' }
|
77
110
|
its(:twidth) { should == 1 }
|
78
111
|
end
|
112
|
+
|
113
|
+
context '※' do
|
114
|
+
subject { '※' }
|
115
|
+
its(:twidth) { should == 1 }
|
116
|
+
end
|
117
|
+
|
118
|
+
context '◎' do
|
119
|
+
subject { '◎' }
|
120
|
+
its(:twidth) { should == 1 }
|
121
|
+
end
|
122
|
+
|
123
|
+
context '◆' do
|
124
|
+
subject { '◆' }
|
125
|
+
its(:twidth) { should == 1 }
|
126
|
+
end
|
127
|
+
|
128
|
+
context '‘' do
|
129
|
+
subject { '‘' }
|
130
|
+
its(:twidth) { should == 1 }
|
131
|
+
end
|
132
|
+
|
133
|
+
context '★ ’' do
|
134
|
+
subject { '★ ’' }
|
135
|
+
its(:twidth) { should == 3 }
|
136
|
+
end
|
137
|
+
|
138
|
+
context '—' do
|
139
|
+
subject { '—' }
|
140
|
+
its(:twidth) { should == 1 }
|
141
|
+
end
|
142
|
+
|
143
|
+
context 'special whitespace' do
|
144
|
+
subject { ' ' }
|
145
|
+
its(:twidth) { should == 1 }
|
146
|
+
end
|
147
|
+
|
148
|
+
context ' ͡° ͜ʖ ͡°' do
|
149
|
+
subject { ' ͡° ͜ʖ ͡°' }
|
150
|
+
its(:twidth) { should == 6 }
|
151
|
+
end
|
152
|
+
|
153
|
+
context '(¯﹃¯)' do
|
154
|
+
subject { '(¯﹃¯)' }
|
155
|
+
its(:twidth) { should == 8 }
|
156
|
+
end
|
157
|
+
|
158
|
+
context '()' do
|
159
|
+
subject { '()' }
|
160
|
+
its(:twidth) { should == 4 }
|
161
|
+
end
|
162
|
+
|
163
|
+
context '≥≤' do
|
164
|
+
subject { '≥≤' }
|
165
|
+
its(:twidth) { should == 2 }
|
166
|
+
end
|
79
167
|
end
|
80
168
|
end
|
data/ttable.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ttable
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Forrest Ye
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-10-
|
11
|
+
date: 2014-10-23 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -69,6 +69,7 @@ files:
|
|
69
69
|
- Rakefile
|
70
70
|
- bin/ttable
|
71
71
|
- lib/terminal/table.rb
|
72
|
+
- lib/terminal/table/version.rb
|
72
73
|
- lib/ttable.rb
|
73
74
|
- screenshot.png
|
74
75
|
- spec/spec_helper.rb
|