kosi 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,16 +1,16 @@
1
- # encoding: utf-8
2
- require 'simplecov'
3
- require 'coveralls'
4
- Coveralls.wear!
5
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
- SimpleCov::Formatter::HTMLFormatter,
7
- Coveralls::SimpleCov::Formatter
8
- ]
9
- SimpleCov.start do
10
- add_filter '/spec/'
11
- end
12
- RSpec.configure do |config|
13
- config.treat_symbols_as_metadata_keys_with_true_values = true
14
- config.run_all_when_everything_filtered = true
15
- config.filter_run :focus
16
- end
1
+ # encoding: utf-8
2
+ require 'simplecov'
3
+ require 'coveralls'
4
+ Coveralls.wear!
5
+ SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
6
+ SimpleCov::Formatter::HTMLFormatter,
7
+ Coveralls::SimpleCov::Formatter
8
+ ]
9
+ SimpleCov.start do
10
+ add_filter '/spec/'
11
+ end
12
+ RSpec.configure do |config|
13
+ config.treat_symbols_as_metadata_keys_with_true_values = true
14
+ config.run_all_when_everything_filtered = true
15
+ config.filter_run :focus
16
+ end
@@ -1,134 +1,145 @@
1
- # encoding: utf-8
2
- require 'spec_helper'
3
- require 'kosi'
4
-
5
- describe Kosi::Table do
6
- context :initialize do
7
- cases = [
8
- {
9
- case_no: 1,
10
- case_title: 'no options case',
11
- options: nil,
12
- attr_name: '@align',
13
- expected: Kosi::Align::TYPE::LEFT
14
- },
15
- {
16
- case_no: 2,
17
- case_title: 'align options left case',
18
- options: { Kosi::OptionKeys::ALIGN => Kosi::Align::TYPE::RIGHT },
19
- attr_name: '@align',
20
- expected: Kosi::Align::TYPE::RIGHT
21
- }
22
- ]
23
-
24
- cases.each do |c|
25
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
26
- begin
27
- case_before c
28
-
29
- # -- given --
30
- kosi_table = \
31
- if c[:options]
32
- Kosi::Table.new(c[:options])
33
- else
34
- Kosi::Table.new
35
- end
36
-
37
- # -- when --
38
- actual = kosi_table.instance_variable_get(c[:attr_name]).value
39
-
40
- # -- then --
41
- expect(actual).to eq(c[:expected])
42
- ensure
43
- case_after c
44
- end
45
- end
46
-
47
- def case_before(c)
48
- # implement each case before
49
- end
50
-
51
- def case_after(c)
52
- # implement each case after
53
- end
54
- end
55
- end
56
-
57
- context :render do
58
- cases = [
59
- {
60
- case_no: 1,
61
- case_title: 'valid case',
62
- options: nil,
63
- inputs: [[1, 2, 3], [1111, '222アア', '33イイ']],
64
- expected: <<-EOS
65
- +----+-------+------+
66
- |1 |2 |3 |
67
- |1111|222アア|33イイ|
68
- +----+-------+------+
69
- EOS
70
- },
71
- {
72
- case_no: 2,
73
- case_title: 'use header case',
74
- options: {header: %w{header1 header2 header3}},
75
- inputs: [[1, 2, 3], [1111, '222アア', '33イイ']],
76
- expected: <<-EOS
77
- +-------+-------+-------+
78
- |header1|header2|header3|
79
- +-------+-------+-------+
80
- |1 |2 |3 |
81
- |1111 |222アア|33イイ |
82
- +-------+-------+-------+
83
- EOS
84
- },
85
- {
86
- case_no: 3,
87
- case_title: 'Enable SeparateEachRow case',
88
- options: {separate_each_row: true},
89
- inputs: [[1, 2, 3], [1111, '222アア', '33イイ'], [1, 2, 3]],
90
- expected: <<-EOS
91
- +----+-------+------+
92
- |1 |2 |3 |
93
- +----+-------+------+
94
- |1111|222アア|33イイ|
95
- +----+-------+------+
96
- |1 |2 |3 |
97
- +----+-------+------+
98
- EOS
99
- },
100
- ]
101
-
102
- cases.each do |c|
103
- it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
104
- begin
105
- case_before c
106
-
107
- # -- given --
108
- kosi_table = \
109
- if c[:options]
110
- Kosi::Table.new(c[:options])
111
- else
112
- Kosi::Table.new
113
- end
114
-
115
- # -- when --
116
- actual = kosi_table.render(c[:inputs])
117
-
118
- # -- then --
119
- expect(actual).to eq(c[:expected])
120
- ensure
121
- case_after c
122
- end
123
- end
124
-
125
- def case_before(c)
126
- # implement each case before
127
- end
128
-
129
- def case_after(c)
130
- # implement each case after
131
- end
132
- end
133
- end
134
- end
1
+ # encoding: utf-8
2
+ require 'spec_helper'
3
+ require 'kosi'
4
+
5
+ describe Kosi::Table do
6
+ context :initialize do
7
+ cases = [
8
+ {
9
+ case_no: 1,
10
+ case_title: 'no options case',
11
+ options: nil,
12
+ attr_name: '@align',
13
+ expected: Kosi::Align::TYPE::LEFT
14
+ },
15
+ {
16
+ case_no: 2,
17
+ case_title: 'align options left case',
18
+ options: { Kosi::OptionKeys::ALIGN => Kosi::Align::TYPE::RIGHT },
19
+ attr_name: '@align',
20
+ expected: Kosi::Align::TYPE::RIGHT
21
+ }
22
+ ]
23
+
24
+ cases.each do |c|
25
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
26
+ begin
27
+ case_before c
28
+
29
+ # -- given --
30
+ kosi_table = \
31
+ if c[:options]
32
+ Kosi::Table.new(c[:options])
33
+ else
34
+ Kosi::Table.new
35
+ end
36
+
37
+ # -- when --
38
+ actual = kosi_table.instance_variable_get(c[:attr_name]).value
39
+
40
+ # -- then --
41
+ expect(actual).to eq(c[:expected])
42
+ ensure
43
+ case_after c
44
+ end
45
+ end
46
+
47
+ def case_before(c)
48
+ # implement each case before
49
+ end
50
+
51
+ def case_after(c)
52
+ # implement each case after
53
+ end
54
+ end
55
+ end
56
+
57
+ context :render do
58
+ cases = [
59
+ {
60
+ case_no: 1,
61
+ case_title: 'valid case',
62
+ options: nil,
63
+ inputs: [[1, 2, 3], [1111, '222アア', '33イイ']],
64
+ expected: <<-EOS
65
+ +----+-------+------+
66
+ |1 |2 |3 |
67
+ |1111|222アア|33イイ|
68
+ +----+-------+------+
69
+ EOS
70
+ },
71
+ {
72
+ case_no: 2,
73
+ case_title: 'use header case',
74
+ options: {header: %w{header1 header2 header3}},
75
+ inputs: [[1, 2, 3], [1111, '222アア', '33イイ']],
76
+ expected: <<-EOS
77
+ +-------+-------+-------+
78
+ |header1|header2|header3|
79
+ +-------+-------+-------+
80
+ |1 |2 |3 |
81
+ |1111 |222アア|33イイ |
82
+ +-------+-------+-------+
83
+ EOS
84
+ },
85
+ {
86
+ case_no: 3,
87
+ case_title: 'Enable SeparateEachRow case',
88
+ options: {separate_each_row: true},
89
+ inputs: [[1, 2, 3], [1111, '222アア', '33イイ'], [1, 2, 3]],
90
+ expected: <<-EOS
91
+ +----+-------+------+
92
+ |1 |2 |3 |
93
+ +----+-------+------+
94
+ |1111|222アア|33イイ|
95
+ +----+-------+------+
96
+ |1 |2 |3 |
97
+ +----+-------+------+
98
+ EOS
99
+ },
100
+ {
101
+ case_no: 4,
102
+ case_title: 'use ANSI Escape sequence case',
103
+ options: nil,
104
+ inputs: [["\e[31mhello\e[0m"]],
105
+ expected: <<-EOS
106
+ +-----+
107
+ |\e[31mhello\e[0m|
108
+ +-----+
109
+ EOS
110
+ },
111
+ ]
112
+
113
+ cases.each do |c|
114
+ it "|case_no=#{c[:case_no]}|case_title=#{c[:case_title]}" do
115
+ begin
116
+ case_before c
117
+
118
+ # -- given --
119
+ kosi_table = \
120
+ if c[:options]
121
+ Kosi::Table.new(c[:options])
122
+ else
123
+ Kosi::Table.new
124
+ end
125
+
126
+ # -- when --
127
+ actual = kosi_table.render(c[:inputs])
128
+
129
+ # -- then --
130
+ expect(actual).to eq(c[:expected])
131
+ ensure
132
+ case_after c
133
+ end
134
+ end
135
+
136
+ def case_before(c)
137
+ # implement each case before
138
+ end
139
+
140
+ def case_after(c)
141
+ # implement each case after
142
+ end
143
+ end
144
+ end
145
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: kosi
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - tbpgr
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-06-09 00:00:00.000000000 Z
11
+ date: 2014-06-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: activesupport
@@ -108,7 +108,6 @@ files:
108
108
  - .travis.yml
109
109
  - Gemfile
110
110
  - LICENSE.txt
111
- - README.html
112
111
  - README.md
113
112
  - Rakefile
114
113
  - kosi.gemspec
@@ -1,273 +0,0 @@
1
- <!doctype html>
2
- <html lang="ja">
3
- <head>
4
- <meta charset="UTF-8">
5
- <title>Markdown Preview</title>
6
- <link rel="stylesheet" href="C:\Users\tabei\AppData\Roaming\Sublime Text 2\Packages\User\markdown_template\styles\default.css">
7
- <link rel="stylesheet" href="C:\Users\tabei\AppData\Roaming\Sublime Text 2\Packages\User\markdown_template\github.css">
8
- <script src="C:\Users\tabei\AppData\Roaming\Sublime Text 2\Packages\User\markdown_template\highlight.pack.js"></script>
9
- <script>hljs.initHighlightingOnLoad();</script>
10
- </head>
11
- <body>
12
- <h1 id="kosi">Kosi</h1>
13
- <p>ターミナル用表フォーマットサポートツール。格子。</p>
14
- <h2 id="installation">Installation</h2>
15
- <p>Add this line to your application's Gemfile:</p>
16
- <pre><code>gem 'kosi'
17
- </code></pre>
18
- <p>And then execute:</p>
19
- <pre><code>$ bundle
20
- </code></pre>
21
- <p>Or install it yourself as:</p>
22
- <pre><code>$ gem install kosi
23
- </code></pre>
24
- <h2 id="description">Description</h2>
25
- <p>2次元配列をテーブルフォーマットにして出力します。<br />
26
- terminal-table gemの日本語対応版にあたります。<br />
27
- (terminal-tableはASCII対応のみなので全角文字が混ざるとテーブルレイアウトが崩れる) </p>
28
- <p>具体的には </p>
29
- <ul>
30
- <li>Unicode 1-127 =&gt; ASCII。1文字分として計算</li>
31
- <li>Unicode 65_377(0xff61)..65_439(0xff9f) =&gt; 半角カナ。1文字分として計算</li>
32
- <li>その他 =&gt; 全角として扱う。2文字分として計算</li>
33
- </ul>
34
- <h2 id="options">Options</h2>
35
- <h3 id="align">Align</h3>
36
- <p>配置指定。右寄せ、左寄せ、中央を選択可能。 </p>
37
- <table>
38
- <thead>
39
- <tr>
40
- <th align="left">設定可能パラメータ</th>
41
- <th align="left">説明</th>
42
- </tr>
43
- </thead>
44
- <tbody>
45
- <tr>
46
- <td align="left">Kosi::Align::TYPE::RIGHT</td>
47
- <td align="left">右寄せ</td>
48
- </tr>
49
- <tr>
50
- <td align="left">Kosi::Align::TYPE::LEFT</td>
51
- <td align="left">左寄せ。デフォルト</td>
52
- </tr>
53
- <tr>
54
- <td align="left">Kosi::Align::TYPE::CENTER</td>
55
- <td align="left">中央</td>
56
- </tr>
57
- </tbody>
58
- </table>
59
- <h3 id="connectorchar">ConnectorChar</h3>
60
- <p>表の結合部に表示するテキスト。1文字で指定。<br />
61
- 下記で言うところの 「+」がConnectorChar。 </p>
62
- <pre><code>+-----+------+-------+
63
- |a |b |c |
64
- +-----+------+-------+
65
- </code></pre>
66
-
67
- <h3 id="header">Header</h3>
68
- <p>表のヘッダー。配列で指定。<br />
69
- デフォルトはヘッダーなし。 </p>
70
- <h3 id="horizontalborderchar">HorizontalBorderChar</h3>
71
- <p>水平線を1文字で設定。<br />
72
- デフォルトは「-」 </p>
73
- <h3 id="separateeachrow">SeparateEachRow</h3>
74
- <p>各行に区切り線を入れるかどうか。<br />
75
- デフォルトは「false」 </p>
76
- <h3 id="verticalborderchar">VerticalBorderChar</h3>
77
- <p>垂直線を1文字で設定。<br />
78
- デフォルトは「|」 </p>
79
- <h2 id="usage">Usage</h2>
80
- <h3 id="オプション指定なし">オプション指定なし</h3>
81
- <pre><code class="ruby">require 'kosi'
82
-
83
- kosi = Kosi::Table.new
84
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
85
- </code></pre>
86
-
87
- <p>出力<br />
88
- ※GitHubの表示上ずれているかもしれませんが、等幅フォント利用時にそろいます。</p>
89
- <pre><code>+-----+------+-------+
90
- |a |b |c |
91
- |ほゲ1|ひゲ22|へゲ333|
92
- +-----+------+-------+
93
- </code></pre>
94
-
95
- <h3 id="align指定">Align指定</h3>
96
- <pre><code class="ruby">require 'kosi'
97
-
98
- kosi = Kosi::Table.new({align: Kosi::Align::TYPE::CENTER})
99
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
100
- kosi = Kosi::Table.new({align: Kosi::Align::TYPE::RIGHT})
101
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
102
- kosi = Kosi::Table.new({align: Kosi::Align::TYPE::LEFT})
103
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
104
- </code></pre>
105
-
106
- <p>出力 </p>
107
- <pre><code>+-----+------+-------+
108
- | a | b | c |
109
- |ほゲ1|ひゲ22|へゲ333|
110
- +-----+------+-------+
111
- +-----+------+-------+
112
- | a| b| c|
113
- |ほゲ1|ひゲ22|へゲ333|
114
- +-----+------+-------+
115
- +-----+------+-------+
116
- |a |b |c |
117
- |ほゲ1|ひゲ22|へゲ333|
118
- +-----+------+-------+
119
- </code></pre>
120
-
121
- <h3 id="connectorchar指定">ConnectorChar指定</h3>
122
- <pre><code class="ruby">require 'kosi'
123
-
124
- kosi = Kosi::Table.new
125
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
126
- kosi = Kosi::Table.new({connector_char: 'x'})
127
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
128
- kosi = Kosi::Table.new({connector_char: '$'})
129
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
130
- </code></pre>
131
-
132
- <p>出力 </p>
133
- <pre><code>+-----+------+-------+
134
- |a |b |c |
135
- |ほゲ1|ひゲ22|へゲ333|
136
- +-----+------+-------+
137
- x-----x------x-------x
138
- |a |b |c |
139
- |ほゲ1|ひゲ22|へゲ333|
140
- x-----x------x-------x
141
- $-----$------$-------$
142
- |a |b |c |
143
- |ほゲ1|ひゲ22|へゲ333|
144
- $-----$------$-------$
145
- </code></pre>
146
-
147
- <h3 id="header指定">Header指定</h3>
148
- <pre><code class="ruby">require 'kosi'
149
-
150
- kosi = Kosi::Table.new
151
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
152
- kosi = Kosi::Table.new({header: %w{column1 column2 column3}})
153
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
154
- </code></pre>
155
-
156
- <p>出力 </p>
157
- <pre><code>+-----+------+-------+
158
- |a |b |c |
159
- |ほゲ1|ひゲ22|へゲ333|
160
- +-----+------+-------+
161
- +-------+-------+-------+
162
- |column1|column2|column3|
163
- +-------+-------+-------+
164
- |a |b |c |
165
- |ほゲ1 |ひゲ22 |へゲ333|
166
- +-------+-------+-------+
167
- </code></pre>
168
-
169
- <h3 id="horizontalborderchar指定">HorizontalBorderChar指定</h3>
170
- <pre><code class="ruby">require 'kosi'
171
-
172
- kosi = Kosi::Table.new
173
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
174
- kosi = Kosi::Table.new({horizontal_border_char: '*'})
175
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
176
- </code></pre>
177
-
178
- <p>出力 </p>
179
- <pre><code>+-----+------+-------+
180
- |a |b |c |
181
- |ほゲ1|ひゲ22|へゲ333|
182
- +-----+------+-------+
183
- +*****+******+*******+
184
- |a |b |c |
185
- |ほゲ1|ひゲ22|へゲ333|
186
- +*****+******+*******+
187
- </code></pre>
188
-
189
- <h3 id="separateeachrow指定">SeparateEachRow指定</h3>
190
- <pre><code class="ruby">require 'kosi'
191
-
192
- kosi = Kosi::Table.new
193
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333'], [*'a'..'c']])
194
- kosi = Kosi::Table.new({separate_each_row: true})
195
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333'], [*'a'..'c']])
196
- </code></pre>
197
-
198
- <p>出力 </p>
199
- <pre><code>+-----+------+-------+
200
- |a |b |c |
201
- |ほゲ1|ひゲ22|へゲ333|
202
- |a |b |c |
203
- +-----+------+-------+
204
- +-----+------+-------+
205
- |a |b |c |
206
- +-----+------+-------+
207
- |ほゲ1|ひゲ22|へゲ333|
208
- +-----+------+-------+
209
- |a |b |c |
210
- +-----+------+-------+
211
- </code></pre>
212
-
213
- <h3 id="verticalborderchar指定">VerticalBorderChar指定</h3>
214
- <pre><code class="ruby">require 'kosi'
215
-
216
- kosi = Kosi::Table.new
217
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
218
- kosi = Kosi::Table.new({vertical_border_char: '#'})
219
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333']])
220
- </code></pre>
221
-
222
- <p>出力 </p>
223
- <pre><code>+-----+------+-------+
224
- |a |b |c |
225
- |ほゲ1|ひゲ22|へゲ333|
226
- +-----+------+-------+
227
- +-----+------+-------+
228
- #a #b #c #
229
- #ほゲ1#ひゲ22#へゲ333#
230
- +-----+------+-------+
231
- </code></pre>
232
-
233
- <h3 id="複合オプション">複合オプション</h3>
234
- <p>様々なオプションを一気に指定してみます</p>
235
- <pre><code class="ruby">require 'kosi'
236
-
237
- kosi = Kosi::Table.new(
238
- {
239
- align: Kosi::Align::TYPE::CENTER,
240
- connector_char: 'x',
241
- header: %w{column1 column2 column3},
242
- horizontal_border_char: '*',
243
- vertical_border_char: '#',
244
- separate_each_row: true
245
- }
246
- )
247
- print kosi.render([[*'a'..'c'], ['ほゲ1', 'ひゲ22', 'へゲ333'], [*'a'..'c']])
248
- </code></pre>
249
-
250
- <p>出力 </p>
251
- <pre><code>x*******x*******x*******x
252
- #column1#column2#column3#
253
- x*******x*******x*******x
254
- # a # b # c #
255
- x*******x*******x*******x
256
- # ほゲ1 #ひゲ22 #へゲ333#
257
- x*******x*******x*******x
258
- # a # b # c #
259
- x*******x*******x*******x
260
- </code></pre>
261
-
262
- <h2 id="history">History</h2>
263
- <p>version 0.0.1 : first release</p>
264
- <h2 id="contributing">Contributing</h2>
265
- <ol>
266
- <li>Fork it ( https://github.com/[my-github-username]/kosi/fork )</li>
267
- <li>Create your feature branch (<code>git checkout -b my-new-feature</code>)</li>
268
- <li>Commit your changes (<code>git commit -am 'Add some feature'</code>)</li>
269
- <li>Push to the branch (<code>git push origin my-new-feature</code>)</li>
270
- <li>Create a new Pull Request</li>
271
- </ol>
272
- </body>
273
- </html>