columnize 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (7) hide show
  1. data/ChangeLog +26 -0
  2. data/NEWS +7 -1
  3. data/Rakefile +18 -3
  4. data/VERSION +1 -1
  5. data/lib/columnize.rb +26 -15
  6. data/test/test-columnize.rb +11 -0
  7. metadata +64 -33
data/ChangeLog CHANGED
@@ -1,3 +1,29 @@
1
+ 2009-07-26 23:16 rockyb
2
+
3
+ * ChangeLog: Get ready for 0.3.1 release
4
+
5
+ 2009-07-26 23:13 rockyb
6
+
7
+ * NEWS, lib/columnize.rb, test/test-columnize.rb: Add lineprefix.
8
+ Get ready for release.
9
+
10
+ 2009-07-26 21:59 mark-moseley
11
+
12
+ * ChangeLog, lib/columnize.rb: Ruby 1.9 updates
13
+
14
+ 2009-03-30 08:54 rockyb
15
+
16
+ * Rakefile: Revise for 1.9 version of rake
17
+
18
+ 2009-01-16 18:32 rockyb
19
+
20
+ * ChangeLog, Rakefile, VERSION: package readme was wonky. Looks
21
+ like no one reads this stuff.
22
+
23
+ 2009-01-10 19:02 rockyb
24
+
25
+ * ChangeLog, NEWS: Get ready for release
26
+
1
27
  2009-01-08 09:27 rockyb
2
28
 
3
29
  * ChangeLog, NEWS, VERSION, lib/columnize.rb,
data/NEWS CHANGED
@@ -1,3 +1,9 @@
1
+ 0.3.1 (01-07-26)
2
+
3
+ - Correct for Ruby 1.9 (Mark Mosely)
4
+
5
+ - add optional lineprefix parameter
6
+
1
7
  0.3.0 (01-10-09) - Sam Woodward Release
2
8
 
3
9
  - Fix bad bug in arranging horizontally
@@ -15,4 +21,4 @@
15
21
  - Initial release of Columnize, a module to print an Array in
16
22
  column-sorted order
17
23
 
18
- $Id: NEWS 160 2009-01-10 19:02:28Z rockyb $
24
+ $Id: NEWS 173 2009-07-26 23:13:54Z rockyb $
data/Rakefile CHANGED
@@ -25,7 +25,7 @@ FILES = FileList[
25
25
  desc "Test everything."
26
26
  test_task = task :test => :lib do
27
27
  Rake::TestTask.new(:test) do |t|
28
- t.libs << ['./lib']
28
+ t.libs << './lib'
29
29
  t.pattern = 'test/test-*.rb'
30
30
  t.verbose = true
31
31
  end
@@ -46,8 +46,23 @@ default_spec = Gem::Specification.new do |spec|
46
46
  spec.homepage = "http://rubyforge.org/projects/rocky-hacks/columnize"
47
47
  spec.summary = "Read file with caching"
48
48
  spec.description = <<-EOF
49
- Columnize is a module for reading and caching lines. This may be useful for
50
- example in a debugger where the same lines are shown many times.
49
+ Return a list of strings as a set of arranged in columns.
50
+
51
+ For example, for a line width of 4 characters (arranged vertically):
52
+ ['1', '2,', '3', '4'] => '1 3\n2 4\n'
53
+
54
+ or arranged horizontally:
55
+ ['1', '2,', '3', '4'] => '1 2\n3 4\n'
56
+
57
+ Each column is only as wide as necessary. By default, columns are
58
+ separated by two spaces - one was not legible enough. Set "colsep"
59
+ to adjust the string separate columns. Set `displaywidth' to set
60
+ the line width.
61
+
62
+ Normally, consecutive items go down from the top to bottom from
63
+ the left-most column to the right-most. If +arrange_vertical+ is
64
+ set false, consecutive items will go across, left to right, top to
65
+ bottom.
51
66
  EOF
52
67
 
53
68
  spec.version = PACKAGE_VERSION
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.3.0
1
+ 0.3.1
@@ -1,4 +1,4 @@
1
- # $Id: columnize.rb 159 2009-01-08 09:27:51Z rockyb $
1
+ # $Id: columnize.rb 175 2009-07-26 23:24:40Z rockyb $
2
2
  #
3
3
  # Copyright (C) 2007, 2008, 2009 Rocky Bernstein <rockyb@rubyforge.net>
4
4
  #
@@ -37,7 +37,7 @@
37
37
 
38
38
  module Columnize
39
39
 
40
- # Return a list of strings with embeeded newlines (\n) as a compact
40
+ # Return a list of strings with embedded newlines (\n) as a compact
41
41
  # set of columns arranged horizontally or vertically.
42
42
  #
43
43
  # For example, for a line width of 4 characters (arranged vertically):
@@ -54,7 +54,7 @@ module Columnize
54
54
  # will go across, left to right, top to bottom.
55
55
 
56
56
  def columnize(list, displaywidth=80, colsep = ' ',
57
- arrange_vertical=true, ljust=true)
57
+ arrange_vertical=true, ljust=true, lineprefix='')
58
58
 
59
59
  # Some degenerate cases
60
60
  if not list.is_a?(Array)
@@ -70,18 +70,22 @@ module Columnize
70
70
 
71
71
  nrows = ncols = 0 # Make nrows, ncols have more global scope
72
72
  colwidths = [] # Same for colwidths
73
+ displaywidth = [4, displaywidth - lineprefix.length].max
73
74
  if arrange_vertical
74
75
  array_index = lambda {|nrows, row, col| nrows*col + row }
75
76
  # Try every row count from 1 upwards
76
- 1.upto(l.size-1) do |nrows|
77
+ 1.upto(l.size-1) do |_nrows|
78
+ nrows = _nrows
77
79
  ncols = (l.size + nrows-1) / nrows
78
80
  colwidths = []
79
81
  totwidth = -colsep.length
80
82
 
81
- 0.upto(ncols-1) do |col|
83
+ 0.upto(ncols-1) do |_col|
84
+ col = _col
82
85
  # get max column width for this column
83
86
  colwidth = 0
84
- 0.upto(nrows-1) do |row|
87
+ 0.upto(nrows-1) do |_row|
88
+ row = _row
85
89
  i = array_index.call(nrows, row, col)
86
90
  if i >= l.size
87
91
  break
@@ -104,9 +108,11 @@ module Columnize
104
108
  # Now we just have to format each of the
105
109
  # rows.
106
110
  s = ''
107
- 0.upto(nrows-1) do |row|
111
+ 0.upto(nrows-1) do |_row|
112
+ row = _row
108
113
  texts = []
109
- 0.upto(ncols-1) do |col|
114
+ 0.upto(ncols-1) do |_col|
115
+ col = _col
110
116
  i = array_index.call(nrows, row, col)
111
117
  if i >= l.size
112
118
  x = ""
@@ -119,14 +125,15 @@ module Columnize
119
125
  texts = texts[0..-2]
120
126
  end
121
127
  if texts.size > 0
122
- 0.upto(texts.size-1) do |col|
128
+ 0.upto(texts.size-1) do |_col|
129
+ col = _col
123
130
  if ljust
124
131
  texts[col] = texts[col].ljust(colwidths[col])
125
132
  else
126
133
  texts[col] = texts[col].rjust(colwidths[col])
127
134
  end
128
135
  end
129
- s += "%s\n" % texts.join(colsep)
136
+ s += "%s%s\n" % [lineprefix, texts.join(colsep)]
130
137
  end
131
138
  end
132
139
  return s
@@ -135,17 +142,21 @@ module Columnize
135
142
  # Try every column count from size downwards
136
143
  # Assign to make enlarge scope of loop variables
137
144
  totwidth = i = rounded_size = 0
138
- l.size.downto(0) do |ncols|
145
+ l.size.downto(0) do |_ncols|
146
+ ncols = _ncols
139
147
  # Try every row count from 1 upwards
140
148
  min_rows = (l.size+ncols-1) / ncols
141
- min_rows.upto(l.size) do |nrows|
149
+ min_rows.upto(l.size) do |_nrows|
150
+ nrows = _nrows
142
151
  rounded_size = nrows * ncols
143
152
  colwidths = []
144
153
  totwidth = -colsep.length
145
154
  colwidth = row = 0
146
- 0.upto(ncols-1) do |col|
155
+ 0.upto(ncols-1) do |_col|
156
+ col = _col
147
157
  # get max column width for this column
148
- 1.upto(nrows) do |row|
158
+ 1.upto(nrows) do |_row|
159
+ row = _row
149
160
  i = array_index.call(nrows, row, col)
150
161
  if i >= rounded_size
151
162
  break
@@ -195,7 +206,7 @@ module Columnize
195
206
  texts[col] = texts[col].rjust(colwidths[col])
196
207
  end
197
208
  end
198
- s += "%s\n" % texts.join(colsep)
209
+ s += "%s%s\n" % [lineprefix, texts.join(colsep)]
199
210
  end
200
211
  return s
201
212
  end
@@ -43,6 +43,17 @@ class TestColumnize < Test::Unit::TestCase
43
43
  columnize(data, 39, ', ', false, false))
44
44
 
45
45
 
46
+ assert_equal(
47
+ " 0, 1, 2, 3, 4, 5, 6, 7, 8\n" +
48
+ " 9, 10, 11, 12, 13, 14, 15, 16, 17\n" +
49
+ " 18, 19, 20, 21, 22, 23, 24, 25, 26\n" +
50
+ " 27, 28, 29, 30, 31, 32, 33, 34, 35\n" +
51
+ " 36, 37, 38, 39, 40, 41, 42, 43, 44\n" +
52
+ " 45, 46, 47, 48, 49, 50, 51, 52, 53\n" +
53
+ " 54\n",
54
+ columnize(data, 39, ', ', false, false, ' '))
55
+
56
+
46
57
  data = ["one", "two", "three",
47
58
  "for", "five", "six",
48
59
  "seven", "eight", "nine",
metadata CHANGED
@@ -1,33 +1,49 @@
1
1
  --- !ruby/object:Gem::Specification
2
- rubygems_version: 0.9.4
3
- specification_version: 1
4
2
  name: columnize
5
3
  version: !ruby/object:Gem::Version
6
- version: 0.3.0
7
- date: 2009-01-10 00:00:00 -05:00
8
- summary: Read file with caching
9
- require_paths:
10
- - lib
11
- email: rockyb@rubyforge.net
12
- homepage: http://rubyforge.org/projects/rocky-hacks/columnize
13
- rubyforge_project: rocky-hacks
14
- description: Columnize is a module for reading and caching lines. This may be useful for example in a debugger where the same lines are shown many times.
15
- autorequire:
16
- default_executable:
17
- bindir: bin
18
- has_rdoc: true
19
- required_ruby_version: !ruby/object:Gem::Version::Requirement
20
- requirements:
21
- - - ">="
22
- - !ruby/object:Gem::Version
23
- version: 1.8.2
24
- version:
4
+ version: 0.3.1
25
5
  platform: ruby
26
- signing_key:
27
- cert_chain:
28
- post_install_message:
29
6
  authors:
30
7
  - R. Bernstein
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-07-26 00:00:00 -04:00
13
+ default_executable:
14
+ dependencies: []
15
+
16
+ description: |
17
+ Return a list of strings as a set of arranged in columns.
18
+
19
+ For example, for a line width of 4 characters (arranged vertically):
20
+ ['1', '2,', '3', '4'] => '1 3
21
+ 2 4
22
+ '
23
+
24
+ or arranged horizontally:
25
+ ['1', '2,', '3', '4'] => '1 2
26
+ 3 4
27
+ '
28
+
29
+ Each column is only as wide as necessary. By default, columns are
30
+ separated by two spaces - one was not legible enough. Set "colsep"
31
+ to adjust the string separate columns. Set `displaywidth' to set
32
+ the line width.
33
+
34
+ Normally, consecutive items go down from the top to bottom from
35
+ the left-most column to the right-most. If +arrange_vertical+ is
36
+ set false, consecutive items will go across, left to right, top to
37
+ bottom.
38
+
39
+ email: rockyb@rubyforge.net
40
+ executables: []
41
+
42
+ extensions: []
43
+
44
+ extra_rdoc_files:
45
+ - README
46
+ - lib/columnize.rb
31
47
  files:
32
48
  - AUTHORS
33
49
  - COPYING
@@ -38,18 +54,33 @@ files:
38
54
  - VERSION
39
55
  - lib/columnize.rb
40
56
  - test/test-columnize.rb
41
- test_files: []
57
+ has_rdoc: true
58
+ homepage: http://rubyforge.org/projects/rocky-hacks/columnize
59
+ licenses: []
42
60
 
61
+ post_install_message:
43
62
  rdoc_options: []
44
63
 
45
- extra_rdoc_files:
46
- - README
47
- - lib/columnize.rb
48
- executables: []
49
-
50
- extensions: []
51
-
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: 1.8.2
71
+ version:
72
+ required_rubygems_version: !ruby/object:Gem::Requirement
73
+ requirements:
74
+ - - ">="
75
+ - !ruby/object:Gem::Version
76
+ version: "0"
77
+ version:
52
78
  requirements: []
53
79
 
54
- dependencies: []
80
+ rubyforge_project: rocky-hacks
81
+ rubygems_version: 1.3.4
82
+ signing_key:
83
+ specification_version: 3
84
+ summary: Read file with caching
85
+ test_files: []
55
86