table_print 1.2.0 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,3 +9,4 @@ rvm:
9
9
  - rbx-18mode
10
10
  - rbx-19mode
11
11
  - ree
12
+
data/Rakefile CHANGED
@@ -12,7 +12,11 @@ require 'rake'
12
12
  require 'rspec/core/rake_task'
13
13
 
14
14
  desc 'Default: run specs and cucumber features.'
15
- task :default => [:spec, :cucumber]
15
+ if RUBY_VERSION < '1.9'
16
+ task :default => [:spec, :cucumber_187]
17
+ else
18
+ task :default => [:spec, :cucumber]
19
+ end
16
20
 
17
21
  desc "Run specs"
18
22
  RSpec::Core::RakeTask.new do |t|
@@ -24,6 +28,11 @@ Cucumber::Rake::Task.new(:cucumber) do |task|
24
28
  task.cucumber_opts = ["features"]
25
29
  end
26
30
 
31
+ desc 'Run cucumber features for ruby 1.8.7'
32
+ Cucumber::Rake::Task.new(:cucumber_187) do |task|
33
+ task.cucumber_opts = ["-t", "~@ruby19", "features"]
34
+ end
35
+
27
36
  begin
28
37
  require 'rdoc/task'
29
38
  rescue LoadError
@@ -0,0 +1,17 @@
1
+ # coding: utf-8
2
+
3
+ @ruby19
4
+ Feature: Fix the column width for multibyte character
5
+ Scenario: A simple array of hashes
6
+ Given a variable named data with
7
+ |title | author |
8
+ |これは日本語です。| 山田太郎 |
9
+ |English | Bob |
10
+ When I table_print data
11
+ Then the output should contain
12
+ """
13
+ TITLE | AUTHOR
14
+ -------------------|---------
15
+ これは日本語です。 | 山田太郎
16
+ English | Bob
17
+ """
@@ -34,7 +34,10 @@ module TablePrint
34
34
  end
35
35
 
36
36
  def data_width
37
- [name.length].concat(Array(data).compact.collect(&:to_s).collect(&:length)).max
37
+ [
38
+ name.each_char.collect{|c| c.bytesize == 1 ? 1 : 2}.inject(0, &:+),
39
+ Array(data).compact.collect(&:to_s).collect{|m| m.each_char.collect{|n| n.bytesize == 1 ? 1 : 2}.inject(0, &:+)}.max
40
+ ].max
38
41
  end
39
42
 
40
43
  def width
@@ -25,7 +25,8 @@ module TablePrint
25
25
  end
26
26
 
27
27
  def format(value)
28
- "%-#{width}s" % truncate(value)
28
+ padding = width - value.to_s.each_char.collect{|c| c.bytesize == 1 ? 1 : 2}.inject(0, &:+)
29
+ truncate(value) + (padding < 0 ? '' : " " * padding)
29
30
  end
30
31
 
31
32
  private
@@ -1,4 +1,4 @@
1
1
  module TablePrint
2
- VERSION = "1.2.0"
2
+ VERSION = "1.3.0"
3
3
  end
4
4
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: table_print
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-08-30 00:00:00.000000000Z
12
+ date: 2013-08-31 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cat
@@ -94,6 +94,7 @@ files:
94
94
  - features/adding_columns.feature
95
95
  - features/configuring_output.feature
96
96
  - features/excluding_columns.feature
97
+ - features/multibyte.feature
97
98
  - features/printing_hash.feature
98
99
  - features/sensible_defaults.feature
99
100
  - features/support/step_definitions/before.rb
@@ -151,6 +152,7 @@ test_files:
151
152
  - features/adding_columns.feature
152
153
  - features/configuring_output.feature
153
154
  - features/excluding_columns.feature
155
+ - features/multibyte.feature
154
156
  - features/printing_hash.feature
155
157
  - features/sensible_defaults.feature
156
158
  - features/support/step_definitions/before.rb