table_print 1.1.3 → 1.1.4

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.
@@ -5,13 +5,13 @@ Feature: Configuring output
5
5
 
6
6
  Given Blog has attributes title, author
7
7
 
8
- When I instantiate a Blog with {:title => "post!", :author => 'Ryan'}
9
- And table_print Blog, {:include => {:author => {:width => 10}}}
8
+ When I instantiate a Blog with {:title => "post!", :author => 'Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ryan'}
9
+ And table_print Blog, {:include => {:author => {:width => 40}}}
10
10
  Then the output should contain
11
11
  """
12
- TITLE | AUTHOR
13
- ------------------
14
- post! | Ryan
12
+ TITLE | AUTHOR
13
+ ------------------------------------------------
14
+ post! | Ryan Ryan Ryan Ryan Ryan Ryan Ryan Ry...
15
15
  """
16
16
  Scenario: Specifying configuration on a per-object basis
17
17
  Given a class named Blog
@@ -1,8 +1,7 @@
1
1
  module TablePrint
2
2
  class Column
3
3
  attr_reader :formatters
4
- attr_writer :width
5
- attr_accessor :name, :data, :time_format
4
+ attr_accessor :name, :data, :time_format, :default_width
6
5
 
7
6
  def initialize(attr_hash={})
8
7
  @formatters = []
@@ -35,11 +34,16 @@ module TablePrint
35
34
  end
36
35
 
37
36
  def data_width
38
- [name.length].concat(data.compact.collect(&:to_s).collect(&:length)).max
37
+ [name.length].concat(Array(data).compact.collect(&:to_s).collect(&:length)).max
39
38
  end
40
39
 
41
40
  def width
42
- @width ||= data_width
41
+ [(default_width || max_width), data_width].min
42
+ end
43
+
44
+ private
45
+ def max_width
46
+ TablePrint::Config.max_width
43
47
  end
44
48
  end
45
49
  end
@@ -68,11 +68,16 @@ module TablePrint
68
68
  else
69
69
  option = {:name => option}
70
70
  end
71
+
72
+ if option.has_key? :width
73
+ option[:default_width] = option.delete(:width)
74
+ end
75
+
71
76
  c = Column.new(option)
72
77
  @column_hash[c.name] = c
73
78
  c
74
79
  end
75
-
80
+
76
81
  def usable_column_names
77
82
  base = @default_columns
78
83
  base = @only_columns unless @only_columns.empty?
@@ -18,18 +18,16 @@ module TablePrint
18
18
  end
19
19
 
20
20
  class FixedWidthFormatter
21
+ attr_accessor :width
22
+
21
23
  def initialize(width)
22
- @width = width
24
+ self.width = width
23
25
  end
24
26
 
25
27
  def format(value)
26
28
  "%-#{width}s" % truncate(value)
27
29
  end
28
30
 
29
- def width
30
- [@width, TablePrint::Config.max_width].min
31
- end
32
-
33
31
  private
34
32
  def truncate(value)
35
33
  return "" unless value
@@ -1,4 +1,4 @@
1
1
  module TablePrint
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.4"
3
3
  end
4
4
 
data/spec/column_spec.rb CHANGED
@@ -58,13 +58,36 @@ describe Column do
58
58
  end
59
59
 
60
60
  describe "#width" do
61
- it "returns the specified width" do
62
- c.width = 14
63
- c.width.should == 14
61
+ context "when default width is specified" do
62
+ it "uses the default width" do
63
+ c.default_width = 10
64
+ c.stub(:data_width => 15)
65
+ c.stub(:max_width => 20)
66
+ c.width.should == 10
67
+ end
68
+
69
+ it "isn't limited by the config width" do
70
+ c.default_width = 40
71
+ c.stub(:data_width => 50)
72
+ c.stub(:max_width => 20)
73
+ c.width.should == 40
74
+ end
64
75
  end
65
76
 
66
- it "uses the data_width if no width has been set" do
67
- c.width.should == 33
77
+ context "When default width is not specified" do
78
+ it "uses the data width" do
79
+ c.default_width = nil
80
+ c.stub(:data_width => 10)
81
+ c.stub(:max_width => 20)
82
+ c.width.should == 10
83
+ end
84
+
85
+ it "is limited by the config width" do
86
+ c.default_width = nil
87
+ c.stub(:data_width => 30)
88
+ c.stub(:max_width => 20)
89
+ c.width.should == 20
90
+ end
68
91
  end
69
92
  end
70
93
  end
@@ -100,7 +100,7 @@ describe TablePrint::ConfigResolver do
100
100
  c.columns.first.name.should == 'title'
101
101
 
102
102
  c.columns.last.name.should == 'foo'
103
- c.columns.last.width.should == 10
103
+ c.columns.last.default_width.should == 10
104
104
  end
105
105
  end
106
106
  end
@@ -189,11 +189,11 @@ describe TablePrint::ConfigResolver do
189
189
  end
190
190
  end
191
191
  context "width" do
192
- it "sets the width" do
192
+ it "sets the default width" do
193
193
  c = TablePrint::ConfigResolver.new(Object, [:title], :title => {:width => 100})
194
194
  c.columns.length.should == 1
195
195
  c.columns.first.name.should == 'title'
196
- c.columns.first.width.should == 100
196
+ c.columns.first.default_width.should == 100
197
197
  end
198
198
  end
199
199
  context "formatters" do
@@ -226,9 +226,9 @@ describe TablePrint::ConfigResolver do
226
226
  context "with a hash" do
227
227
  it "returns a column named foo and the specified options" do
228
228
  c = TablePrint::ConfigResolver.new(Object, [])
229
- column = c.option_to_column({:foo => {:width => 10}})
229
+ column = c.option_to_column({:foo => {:default_width => 10}})
230
230
  column.name.should == 'foo'
231
- column.width.should == 10
231
+ column.default_width.should == 10
232
232
  end
233
233
  end
234
234
  end
@@ -61,17 +61,4 @@ describe TablePrint::FixedWidthFormatter do
61
61
  @f.format(123).should == "123 "
62
62
  end
63
63
  end
64
-
65
- describe "#width" do
66
- it "returns the width" do
67
- @f.width.should == 10
68
- end
69
-
70
- it "respects the config'd max_width" do
71
- max = TablePrint::Config.max_width
72
- TablePrint::Config.max_width = 5
73
- @f.width.should == 5
74
- TablePrint::Config.max_width = max
75
- end
76
- end
77
64
  end
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.1.3
4
+ version: 1.1.4
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-02-27 00:00:00.000000000 Z
12
+ date: 2013-03-04 00:00:00.000000000Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: cat