kosi 0.0.1 → 0.0.2

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.
@@ -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>