tabularize 0.1.0 → 0.1.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.
- data/CHANGELOG.md +7 -0
- data/Gemfile.lock +19 -0
- data/README.md +15 -0
- data/lib/tabularize.rb +16 -3
- data/lib/tabularize/version.rb +1 -1
- data/tabularize.gemspec +1 -0
- data/test/test_tabularize.rb +18 -11
- data/test/test_unicode.csv +5 -0
- metadata +30 -5
data/CHANGELOG.md
ADDED
data/Gemfile.lock
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
tabularize (0.1.1)
|
5
|
+
unicode-display_width (~> 0.1.1)
|
6
|
+
|
7
|
+
GEM
|
8
|
+
remote: http://rubygems.org/
|
9
|
+
specs:
|
10
|
+
awesome_print (1.0.2)
|
11
|
+
unicode-display_width (0.1.1)
|
12
|
+
|
13
|
+
PLATFORMS
|
14
|
+
java
|
15
|
+
ruby
|
16
|
+
|
17
|
+
DEPENDENCIES
|
18
|
+
awesome_print
|
19
|
+
tabularize!
|
data/README.md
CHANGED
@@ -2,6 +2,7 @@ tabularize
|
|
2
2
|
==========
|
3
3
|
|
4
4
|
Formatting tabular data with paddings.
|
5
|
+
|
5
6
|
Inspired by tabular.vim (https://github.com/godlygeek/tabular)
|
6
7
|
|
7
8
|
Installation
|
@@ -107,6 +108,20 @@ Average Joe_ | Engineering | Somewhere over the rainbow | N/A_____
|
|
107
108
|
Hong Gildong | HR_________ | Nowhere___________________ | 555-5555
|
108
109
|
```
|
109
110
|
|
111
|
+
#### CJK wide characters
|
112
|
+
|
113
|
+
```ruby
|
114
|
+
puts Tabularize.it(data, :unicode_display => true).map { |row| row.join ' | ' }
|
115
|
+
```
|
116
|
+
|
117
|
+
```
|
118
|
+
Name | Dept | Location | Phone
|
119
|
+
John Doe | Finance | Los Angeles, CA 90089 | 555-1555
|
120
|
+
Average Joe | Engineering | Somewhere over the rainbow | N/A
|
121
|
+
Hong Gildong | HR | Nowhere | 555-5555
|
122
|
+
홍길동 | 탁상 3부 | 서울역 3번 출구 김씨 옆자리 | N/A
|
123
|
+
```
|
124
|
+
|
110
125
|
Copyright
|
111
126
|
---------
|
112
127
|
|
data/lib/tabularize.rb
CHANGED
@@ -3,7 +3,8 @@ require "tabularize/version"
|
|
3
3
|
module Tabularize
|
4
4
|
DEFAULT_OPTIONS = {
|
5
5
|
:pad => ' ',
|
6
|
-
:align => :left
|
6
|
+
:align => :left,
|
7
|
+
:unicode_display => false
|
7
8
|
}
|
8
9
|
|
9
10
|
# Formats two-dimensional tabular data.
|
@@ -19,17 +20,26 @@ module Tabularize
|
|
19
20
|
options = DEFAULT_OPTIONS.merge(options)
|
20
21
|
pad = options[:pad].to_s
|
21
22
|
align = options[:align]
|
22
|
-
|
23
|
+
unicode = options[:unicode_display]
|
24
|
+
raise ArgumentError.new("Invalid padding") unless pad.length == 1
|
23
25
|
raise ArgumentError.new("Invalid alignment") unless
|
24
26
|
[:left, :right, :center].include?(align)
|
25
27
|
|
28
|
+
l =
|
29
|
+
if unicode
|
30
|
+
require 'unicode/display_width'
|
31
|
+
:display_width
|
32
|
+
else
|
33
|
+
:length
|
34
|
+
end
|
35
|
+
|
26
36
|
rows = []
|
27
37
|
max_widths = []
|
28
38
|
table_data.each do |row|
|
29
39
|
rows << row = [*row].map(&:to_s).map(&:chomp)
|
30
40
|
|
31
41
|
row.each_with_index do |cell, idx|
|
32
|
-
max_widths[idx] = [ cell.
|
42
|
+
max_widths[idx] = [ cell.send(l), max_widths[idx] || 0 ].max
|
33
43
|
end
|
34
44
|
end
|
35
45
|
|
@@ -38,6 +48,9 @@ module Tabularize
|
|
38
48
|
row.map { |str|
|
39
49
|
idx += 1
|
40
50
|
w = max_widths[idx]
|
51
|
+
if unicode
|
52
|
+
w += str.length - str.display_width
|
53
|
+
end
|
41
54
|
case align
|
42
55
|
when :left
|
43
56
|
str.ljust(w, pad)
|
data/lib/tabularize/version.rb
CHANGED
data/tabularize.gemspec
CHANGED
data/test/test_tabularize.rb
CHANGED
@@ -101,19 +101,26 @@ class TestTabularize < Test::Unit::TestCase
|
|
101
101
|
end
|
102
102
|
end
|
103
103
|
|
104
|
+
# TODO: Need assertion
|
104
105
|
def test_tabularize_csv
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
106
|
+
{
|
107
|
+
'test.csv' => false,
|
108
|
+
'test_unicode.csv' => true
|
109
|
+
}.each do |file, unicode|
|
110
|
+
data = CSV.read(File.join(File.dirname(__FILE__), file), :col_sep => '|')
|
111
|
+
ap data
|
112
|
+
output = Tabularize.it(data, :unicode_display => unicode).map { |row| row.join ' | ' }
|
113
|
+
ap output
|
114
|
+
puts
|
115
|
+
puts output
|
111
116
|
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
+
puts Tabularize.it(data, :align => :right, :unicode_display => unicode).map { |row| row.join ' | ' }
|
118
|
+
puts
|
119
|
+
puts Tabularize.it(data, :align => :center, :unicode_display => unicode).map { |row| row.join ' | ' }
|
120
|
+
puts
|
121
|
+
puts Tabularize.it(data, :pad => '_', :unicode_display => unicode).map { |row| row.join ' | ' }
|
122
|
+
|
123
|
+
end
|
117
124
|
end
|
118
125
|
|
119
126
|
def test_invalid_arguments
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: tabularize
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-03-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: awesome_print
|
16
|
-
requirement:
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,7 +21,28 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: unicode-display_width
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ~>
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: 0.1.1
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ~>
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: 0.1.1
|
25
46
|
description: Formatting tabular data with paddings and alignments
|
26
47
|
email:
|
27
48
|
- junegunn.c@gmail.com
|
@@ -30,7 +51,9 @@ extensions: []
|
|
30
51
|
extra_rdoc_files: []
|
31
52
|
files:
|
32
53
|
- .gitignore
|
54
|
+
- CHANGELOG.md
|
33
55
|
- Gemfile
|
56
|
+
- Gemfile.lock
|
34
57
|
- LICENSE.txt
|
35
58
|
- README.md
|
36
59
|
- Rakefile
|
@@ -39,6 +62,7 @@ files:
|
|
39
62
|
- tabularize.gemspec
|
40
63
|
- test/test.csv
|
41
64
|
- test/test_tabularize.rb
|
65
|
+
- test/test_unicode.csv
|
42
66
|
homepage: ''
|
43
67
|
licenses: []
|
44
68
|
post_install_message:
|
@@ -59,11 +83,12 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
59
83
|
version: '0'
|
60
84
|
requirements: []
|
61
85
|
rubyforge_project: tabularize
|
62
|
-
rubygems_version: 1.8.
|
86
|
+
rubygems_version: 1.8.18
|
63
87
|
signing_key:
|
64
88
|
specification_version: 3
|
65
89
|
summary: Formatting tabular data
|
66
90
|
test_files:
|
67
91
|
- test/test.csv
|
68
92
|
- test/test_tabularize.rb
|
93
|
+
- test/test_unicode.csv
|
69
94
|
has_rdoc:
|