visionmedia-terminal-table 1.0.1

Sign up to get free protection for your applications and to get access to all the features.
data/History.rdoc ADDED
@@ -0,0 +1,4 @@
1
+
2
+ === 1.0.0 / 2009-01-13
3
+
4
+ * Initial release
data/Manifest ADDED
@@ -0,0 +1,19 @@
1
+ History.rdoc
2
+ Rakefile
3
+ README.rdoc
4
+ lib/terminal-table.rb
5
+ lib/terminal-table/core_ext.rb
6
+ lib/terminal-table/cell.rb
7
+ lib/terminal-table/heading.rb
8
+ lib/terminal-table/table.rb
9
+ lib/terminal-table/version.rb
10
+ lib/terminal-table/import.rb
11
+ spec/spec_helper.rb
12
+ spec/core_ext_spec.rb
13
+ spec/table_spec.rb
14
+ spec/cell_spec.rb
15
+ tasks/docs.rake
16
+ tasks/gemspec.rake
17
+ tasks/spec.rake
18
+ Todo.rdoc
19
+ Manifest
data/README.rdoc ADDED
@@ -0,0 +1,128 @@
1
+
2
+ = Terminal Table
3
+
4
+ Simple, feature rich ASCII table generator.
5
+
6
+ == Features:
7
+
8
+ * Fast
9
+ * Simple
10
+ * With or without headings
11
+ * Alignment of headings, cells, or columns
12
+ * Easy modification of table chars (+, -, |)
13
+
14
+ == Examples:
15
+
16
+ require 'rubygems'
17
+ require 'terminal-table/import'
18
+
19
+ puts table(['a', 'b'], [[1, 2], [3, 4]])
20
+
21
+ t = table ['a', 'b']
22
+ t << [1, 2]
23
+ t << [3, 4]
24
+ puts t
25
+
26
+ user_table = table do |t|
27
+ t.headings = 'First Name', 'Last Name', 'Email'
28
+ t << ['TJ', 'Holowaychuk', 'tj@vision-media.ca']
29
+ t << ['Bob', 'Someone', 'bob@vision-media.ca']
30
+ t << ['Joe', 'Whatever', 'joe@vision-media.ca']
31
+ end
32
+ puts user_table
33
+
34
+ user_table = table do
35
+ self.headings = 'First Name', 'Last Name', 'Email'
36
+ add_row ['TJ', 'Holowaychuk', { :value => 'tj@vision-media.ca', :align => :right }]
37
+ add_row ['Bob', 'Someone', 'bob@vision-media.ca']
38
+ add_row ['Joe', 'Whatever', 'joe@vision-media.ca']
39
+ align_column 1, :center
40
+ end
41
+ puts user_table
42
+
43
+ rows = []
44
+ rows << ['Lines', 100]
45
+ rows << ['Comments', 20]
46
+ rows << ['Ruby', 70]
47
+ rows << ['JavaScript', 30]
48
+ puts table([nil, 'Lines'], rows)
49
+
50
+ rows = []
51
+ rows << ['Lines', 100]
52
+ rows << ['Comments', 20]
53
+ rows << ['Ruby', 70]
54
+ rows << ['JavaScript', 30]
55
+ puts table(nil, rows)
56
+
57
+ == Results:
58
+
59
+ +---+---+
60
+ | a | b |
61
+ +---+---+
62
+ | 1 | 2 |
63
+ | 3 | 4 |
64
+ +---+---+
65
+
66
+ +---+---+
67
+ | a | b |
68
+ +---+---+
69
+ | 1 | 2 |
70
+ | 3 | 4 |
71
+ +---+---+
72
+
73
+ +------------+-------------+---------------------+
74
+ | First Name | Last Name | Email |
75
+ +------------+-------------+---------------------+
76
+ | TJ | Holowaychuk | tj@vision-media.ca |
77
+ | Bob | Someone | bob@vision-media.ca |
78
+ | Joe | Whatever | joe@vision-media.ca |
79
+ +------------+-------------+---------------------+
80
+
81
+ +------------+-----------------------------+---------------------+
82
+ | First Name | Last Name | Email |
83
+ +------------+-----------------------------+---------------------+
84
+ | TJ | Holowaychuk | tj@vision-media.ca |
85
+ | Bob | Someone | bob@vision-media.ca |
86
+ | Joe | Whatever | joe@vision-media.ca |
87
+ +------------+-----------------------------+---------------------+
88
+
89
+ +------------+-------+
90
+ | | Lines |
91
+ +------------+-------+
92
+ | Lines | 100 |
93
+ | Comments | 20 |
94
+ | Ruby | 70 |
95
+ | JavaScript | 30 |
96
+ +------------+-------+
97
+
98
+ +------------+-----+
99
+ | Lines | 100 |
100
+ | Comments | 20 |
101
+ | Ruby | 70 |
102
+ | JavaScript | 30 |
103
+ +------------+-----+
104
+
105
+ == License:
106
+
107
+ (The MIT License)
108
+
109
+ Copyright (c) 2008 TJ Holowaychuk <tj@vision-media.ca>
110
+
111
+ Permission is hereby granted, free of charge, to any person obtaining
112
+ a copy of this software and associated documentation files (the
113
+ 'Software'), to deal in the Software without restriction, including
114
+ without limitation the rights to use, copy, modify, merge, publish,
115
+ distribute, sublicense, an d/or sell copies of the Software, and to
116
+ permit persons to whom the Software is furnished to do so, subject to
117
+ the following conditions:
118
+
119
+ The above copyright notice and this permission notice shall be
120
+ included in all copies or substantial portions of the Software.
121
+
122
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
123
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
124
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
125
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
126
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
127
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
128
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
data/Rakefile ADDED
@@ -0,0 +1,15 @@
1
+
2
+ require 'rubygems'
3
+ require 'rake'
4
+ require 'echoe'
5
+ require './lib/terminal-table.rb'
6
+
7
+ Echoe.new("terminal-table", Terminal::Table::VERSION::STRING) do |p|
8
+ p.author = "TJ Holowaychuk"
9
+ p.email = "tj@vision-media.ca"
10
+ p.summary = "Simple,"
11
+ p.url = "http://github.com/visionmedia/terminal-table"
12
+ p.runtime_dependencies = []
13
+ end
14
+
15
+ Dir['tasks/**/*.rake'].sort.each { |lib| load lib }
data/Todo.rdoc ADDED
@@ -0,0 +1,13 @@
1
+
2
+ == Major:
3
+
4
+ * Nothing
5
+
6
+ == Minor:
7
+
8
+ * Add multi-column sorting
9
+ * Change; pre-create Cell and Heading objects to clean up Table a bit
10
+
11
+ == Brainstorming:
12
+
13
+ * Nothing
@@ -0,0 +1,33 @@
1
+
2
+ module Terminal
3
+ class Table
4
+ class Cell
5
+
6
+ DEFAULT_ALIGNMENT = :left
7
+
8
+ attr_accessor :value, :alignment
9
+
10
+ def initialize render_length, initial = nil
11
+ @render_length = render_length
12
+ case initial
13
+ when Hash
14
+ @value = initial[:value]
15
+ @alignment = initial[:align] unless initial[:align].nil?
16
+ when
17
+ @value = initial
18
+ @alignment = DEFAULT_ALIGNMENT
19
+ end
20
+ end
21
+
22
+ def render
23
+ " #{value.to_s} ".align alignment, @render_length + 2
24
+ end
25
+ alias :to_s :render
26
+
27
+ def length
28
+ value.to_s.length + 2
29
+ end
30
+
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,41 @@
1
+
2
+ class String
3
+
4
+ ##
5
+ # Align to +position+, which may be :left, :right, or :center.
6
+
7
+ def align position, length
8
+ send position, length
9
+ end
10
+
11
+ alias_method :left, :ljust
12
+ alias_method :right, :rjust
13
+ end
14
+
15
+ module Enumerable
16
+ def map_with_index &block
17
+ result = []
18
+ each_with_index do |v, i|
19
+ result << yield(v, i)
20
+ end
21
+ result
22
+ end
23
+ alias :collect_with_index :map_with_index
24
+ end
25
+
26
+ class Object
27
+
28
+ ##
29
+ # Yields or instance_eval's a +block+ depending on the arity of a block
30
+ # in order to support both types of block syntax for DSL's.
31
+
32
+ def yield_or_eval &block
33
+ if block_given?
34
+ if block.arity > 0
35
+ yield self
36
+ else
37
+ self.instance_eval &block
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,8 @@
1
+
2
+ module Terminal
3
+ class Table
4
+ class Heading < Cell
5
+ DEFAULT_ALIGNMENT = :center
6
+ end
7
+ end
8
+ end
@@ -0,0 +1,55 @@
1
+
2
+ require 'terminal-table'
3
+
4
+ module Kernel
5
+
6
+ ##
7
+ # Generates a Terminal::Table object.
8
+ #
9
+ # === Examples:
10
+ #
11
+ # puts table(['a', 'b'], [[1, 2], [3, 4]])
12
+ #
13
+ # # OR
14
+ #
15
+ # t = table ['a', 'b']
16
+ # t << [1, 2]
17
+ # t << [3, 4]
18
+ # puts t
19
+ #
20
+ # # OR
21
+ #
22
+ # user_table = table do |t|
23
+ # t.headings = 'First Name', 'Last Name', 'Email'
24
+ # t << ['TJ', 'Holowaychuk', 'tj@vision-media.ca']
25
+ # t << ['Bob', 'Someone', 'bob@vision-media.ca']
26
+ # t << ['Joe', 'Whatever', 'joe@vision-media.ca']
27
+ # end
28
+ # puts user_table
29
+ #
30
+ # # OR
31
+ #
32
+ # user_table = table do
33
+ # self.headings = 'First Name', 'Last Name', 'Email'
34
+ # add_row ['TJ', 'Holowaychuk', 'tj@vision-media.ca']
35
+ # add_row ['Bob', 'Someone', 'bob@vision-media.ca']
36
+ # add_row ['Joe', 'Whatever', 'joe@vision-media.ca']
37
+ # end
38
+ # puts user_table
39
+ #
40
+ # # OR
41
+ #
42
+ # rows = []
43
+ # rows << ['Lines', 100]
44
+ # rows << ['Comments', 20]
45
+ # rows << ['Ruby', 70]
46
+ # rows << ['JavaScript', 30]
47
+ # puts table(nil, rows)
48
+ #
49
+
50
+ def table headings = [], rows = [], &block
51
+ table = Terminal::Table.new :headings => headings, :rows => rows
52
+ table.yield_or_eval &block
53
+ table
54
+ end
55
+ end
@@ -0,0 +1,146 @@
1
+
2
+ module Terminal
3
+
4
+ ##
5
+ # Generates an ASCII table for terminal usage.
6
+ #
7
+ # This class can be used in many ways, however ultimately you should
8
+ # require 'terminal-table/import' (which requires terminal-table itself) to use
9
+ # the Kernel helper method which is easier, and cleaner to use. View Kernel#table
10
+ # for examples.
11
+ #
12
+ # === Examples:
13
+ #
14
+ # table = Terminal::Table.new
15
+ # table.headings = ['Characters', { :value => 'Nums', :align => :right }]
16
+ # table << [{ :value => 'a', :align => :center }, 1]
17
+ # table << ['b', 222222222222222]
18
+ # table << ['c', 3]
19
+ # puts table.render # or simply puts table
20
+ #
21
+ # +------------+-----------------+
22
+ # | Characters | Nums |
23
+ # +------------+-----------------+
24
+ # | a | 1 |
25
+ # | b | 222222222222222 |
26
+ # | c | 3 |
27
+ # +------------+-----------------+
28
+ #
29
+
30
+ class Table
31
+
32
+ ##
33
+ # Table characters, x axis, y axis, and intersection.
34
+
35
+ X, Y, I = '-', '|', '+'
36
+
37
+ attr_accessor :headings, :rows
38
+
39
+ ##
40
+ # Generates a ASCII table.
41
+
42
+ def initialize options = {}
43
+ @headings = options.delete(:headings) || []
44
+ @rows = options.delete(:rows) || []
45
+ end
46
+
47
+ ##
48
+ # Render the table. Often you will simply call _puts_ with an
49
+ # instance in order to output it to the terminal.
50
+
51
+ def render
52
+ sep = seperator
53
+ s = sep + "\n"
54
+ s << Y + headings.collect_with_index { |h, i| Heading.new(length_of_column(i), h).render }.join(Y) + Y if has_headings?
55
+ s << "\n" + sep + "\n" if has_headings?
56
+ s << rows.collect { |row| Y + row.collect_with_index { |c, i| Cell.new(length_of_column(i), c).render }.join(Y) + Y }.join("\n")
57
+ s << "\n" + sep + "\n"
58
+ end
59
+ alias :to_s :render
60
+
61
+ ##
62
+ # Create a seperator based on colum lengths.
63
+
64
+ def seperator
65
+ I + columns.collect_with_index { |col, i| X * (length_of_column(i) + 2) }.join(I) + I
66
+ end
67
+
68
+ ##
69
+ # Add a row.
70
+
71
+ def add_row row
72
+ rows << row
73
+ end
74
+ alias :<< :add_row
75
+
76
+ ##
77
+ # Weither or not any headings are present, since they are optional.
78
+
79
+ def has_headings?
80
+ !headings.empty?
81
+ end
82
+
83
+ ##
84
+ # Return +n+ column.
85
+
86
+ def column n
87
+ rows.collect { |row| row[n] }.compact
88
+ end
89
+
90
+ ##
91
+ # Return +n+ column including headings.
92
+
93
+ def column_with_headings n
94
+ headings_with_rows.collect { |row| row[n] }.compact
95
+ end
96
+
97
+ ##
98
+ # Return columns.
99
+
100
+ def columns
101
+ (0..number_of_columns-1).collect { |n| column n }
102
+ end
103
+
104
+ ##
105
+ # Return the largest cell found within column +n+.
106
+
107
+ def largest_cell_in_column n
108
+ column_with_headings(n).sort_by { |c| Cell.new(0, c).length }.last
109
+ end
110
+
111
+ ##
112
+ # Return length of column +n+.
113
+
114
+ def length_of_column n
115
+ largest_cell_in_column(n).to_s.length
116
+ end
117
+
118
+ ##
119
+ # Return total number of columns available.
120
+
121
+ def number_of_columns
122
+ rows[0].length
123
+ end
124
+
125
+ ##
126
+ # Align column +n+ to +alignment+ of :center, :left, or :right.
127
+
128
+ def align_column n, alignment
129
+ column(n).each_with_index do |c, i|
130
+ unless c.is_a? Hash
131
+ @rows[i][n] = { :value => c, :align => alignment }
132
+ end
133
+ end
134
+ end
135
+
136
+ private
137
+
138
+ ##
139
+ # Return headings combined with rows.
140
+
141
+ def headings_with_rows
142
+ [headings] + rows
143
+ end
144
+
145
+ end
146
+ end
@@ -0,0 +1,9 @@
1
+
2
+ module Terminal
3
+ class Table
4
+ module VERSION #:nodoc:
5
+ MAJOR, MINOR, TINY = [1, 0, 1]
6
+ STRING = [MAJOR, MINOR, TINY].join '.'
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,30 @@
1
+ #--
2
+ # Copyright (c) 2008 TJ Holowaychuk
3
+ #
4
+ # Permission is hereby granted, free of charge, to any person obtaining
5
+ # a copy of this software and associated documentation files (the
6
+ # "Software"), to deal in the Software without restriction, including
7
+ # without limitation the rights to use, copy, modify, merge, publish,
8
+ # distribute, sublicense, and/or sell copies of the Software, and to
9
+ # permit persons to whom the Software is furnished to do so, subject to
10
+ # the following conditions:
11
+ #
12
+ # The above copyright notice and this permission notice shall be
13
+ # included in all copies or substantial portions of the Software.
14
+ #
15
+ # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
16
+ # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
17
+ # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
18
+ # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
19
+ # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
20
+ # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
21
+ # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
22
+ #++
23
+
24
+ $:.unshift File.dirname(__FILE__)
25
+
26
+ require 'terminal-table/version'
27
+ require 'terminal-table/core_ext'
28
+ require 'terminal-table/table'
29
+ require 'terminal-table/cell'
30
+ require 'terminal-table/heading'
data/spec/cell_spec.rb ADDED
@@ -0,0 +1,18 @@
1
+
2
+ describe Terminal::Table do
3
+
4
+ Cell = Terminal::Table::Cell
5
+
6
+ it "should initialize with a string" do
7
+ cell = Cell.new 0, 'Foo'
8
+ cell.value.should == 'Foo'
9
+ cell.alignment.should == :left
10
+ end
11
+
12
+ it "should initialize with a hash" do
13
+ cell = Cell.new 0, :value => 'Bar', :align => :right
14
+ cell.value.should == 'Bar'
15
+ cell.alignment.should == :right
16
+ end
17
+
18
+ end
@@ -0,0 +1,18 @@
1
+
2
+ describe String do
3
+ describe "#align" do
4
+
5
+ it "should center" do
6
+ 'foo'.align(:center, 10).should == ' foo '
7
+ end
8
+
9
+ it "should align left" do
10
+ 'foo'.align(:left, 10).should == 'foo '
11
+ end
12
+
13
+ it "should align right" do
14
+ 'foo'.align(:right, 10).should == ' foo'
15
+ end
16
+
17
+ end
18
+ end
@@ -0,0 +1,8 @@
1
+
2
+ require 'terminal-table'
3
+
4
+ class String
5
+ def deindent
6
+ gsub /^ */, ''
7
+ end
8
+ end
@@ -0,0 +1,153 @@
1
+
2
+ describe Terminal::Table do
3
+
4
+ before :each do
5
+ @table = Terminal::Table.new
6
+ end
7
+
8
+ it "should select columns" do
9
+ @table << ['foo', 'bar']
10
+ @table << ['big foo', 'big foo bar']
11
+ @table.column(1).should == ['bar', 'big foo bar']
12
+ end
13
+
14
+ it "should count columns" do
15
+ @table << [1, 2, 3]
16
+ @table.number_of_columns.should == 3
17
+ end
18
+
19
+ it "should iterate columns" do
20
+ @table << [1, 2, 3]
21
+ @table << [4, 5, 6]
22
+ @table.columns.should == [[1, 4], [2, 5], [3, 6]]
23
+ end
24
+
25
+ it "should select columns" do
26
+ @table.headings = ['one', 'two']
27
+ @table << ['foo', 'bar']
28
+ @table << ['big foo', 'big foo bar']
29
+ @table.column(1).should == ['bar', 'big foo bar']
30
+ end
31
+
32
+ it "should select columns when using hashes" do
33
+ @table.headings = ['one', 'two']
34
+ @table.rows = [[{ :value => 'a', :align => :left }, 1], ['b', 2], ['c', 3]]
35
+ @table.column(0).should == [{ :value => 'a', :align => :left }, 'b', 'c']
36
+ end
37
+
38
+ it "should select largest cell in a column" do
39
+ @table << ['foo', 'bar']
40
+ @table << ['big foo', 'big foo bar']
41
+ @table.largest_cell_in_column(1).should == 'big foo bar'
42
+ end
43
+
44
+ it "should find column length" do
45
+ @table << ['foo', 'bar', 'a']
46
+ @table << ['big foo', 'big foo bar']
47
+ @table.length_of_column(1).should == 11
48
+ end
49
+
50
+ it "should find column length with headings" do
51
+ @table.headings = ['one', 'super long heading']
52
+ @table << ['foo', 'bar', 'a']
53
+ @table << ['big foo', 'big foo bar']
54
+ @table.length_of_column(1).should == 18
55
+ end
56
+
57
+ it "should render seperators" do
58
+ @table.headings = ['Char', 'Num']
59
+ @table << ['a', 1]
60
+ @table.seperator.should == '+------+-----+'
61
+ end
62
+
63
+ it "should render properly" do
64
+ @table.headings = ['Char', 'Num']
65
+ @table << ['a', 1]
66
+ @table << ['b', 2]
67
+ @table << ['c', 3]
68
+ @table.render.should == <<-EOF.deindent
69
+ +------+-----+
70
+ | Char | Num |
71
+ +------+-----+
72
+ | a | 1 |
73
+ | b | 2 |
74
+ | c | 3 |
75
+ +------+-----+
76
+ EOF
77
+ end
78
+
79
+ it "should render properly without headings" do
80
+ @table << ['a', 1]
81
+ @table << ['b', 2]
82
+ @table << ['c', 3]
83
+ @table.render.should == <<-EOF.deindent
84
+ +---+---+
85
+ | a | 1 |
86
+ | b | 2 |
87
+ | c | 3 |
88
+ +---+---+
89
+ EOF
90
+ end
91
+
92
+ it "should allows a hash of options for creation" do
93
+ headings = ['Char', 'Num']
94
+ rows = [['a', 1], ['b', 2], ['c', 3]]
95
+ Terminal::Table.new(:rows => rows, :headings => headings).render.should == <<-EOF.deindent
96
+ +------+-----+
97
+ | Char | Num |
98
+ +------+-----+
99
+ | a | 1 |
100
+ | b | 2 |
101
+ | c | 3 |
102
+ +------+-----+
103
+ EOF
104
+ end
105
+
106
+ it "should flex for large cells" do
107
+ @table.headings = ['Just some characters', 'Num']
108
+ @table.rows = [['a', 1], ['b', 2], ['c', 3]]
109
+ @table.render.should == <<-EOF.deindent
110
+ +----------------------+-----+
111
+ | Just some characters | Num |
112
+ +----------------------+-----+
113
+ | a | 1 |
114
+ | b | 2 |
115
+ | c | 3 |
116
+ +----------------------+-----+
117
+ EOF
118
+ end
119
+
120
+ it "should allow alignment of headings and cells" do
121
+ @table.headings = ['Characters', { :value => 'Nums', :align => :right }]
122
+ @table << [{ :value => 'a', :align => :center }, 1]
123
+ @table << ['b', 222222222222222]
124
+ @table << ['c', 3]
125
+ @table.render.should == <<-EOF.deindent
126
+ +------------+-----------------+
127
+ | Characters | Nums |
128
+ +------------+-----------------+
129
+ | a | 1 |
130
+ | b | 222222222222222 |
131
+ | c | 3 |
132
+ +------------+-----------------+
133
+ EOF
134
+
135
+ end
136
+
137
+ it "should align columns, but allow specifics to remain" do
138
+ @table.headings = ['Just some characters', 'Num']
139
+ @table.rows = [[{ :value => 'a', :align => :left }, 1], ['b', 2], ['c', 3]]
140
+ @table.align_column 0, :center
141
+ @table.align_column 1, :right
142
+ @table.render.should == <<-EOF.deindent
143
+ +----------------------+-----+
144
+ | Just some characters | Num |
145
+ +----------------------+-----+
146
+ | a | 1 |
147
+ | b | 2 |
148
+ | c | 3 |
149
+ +----------------------+-----+
150
+ EOF
151
+ end
152
+
153
+ end
data/tasks/docs.rake ADDED
@@ -0,0 +1,13 @@
1
+
2
+ namespace :docs do
3
+
4
+ desc 'Remove rdoc products'
5
+ task :remove => [:clobber_docs]
6
+
7
+ desc 'Build docs, and open in browser for viewing (specify BROWSER)'
8
+ task :open => [:docs] do
9
+ browser = ENV["BROWSER"] || "safari"
10
+ sh "open -a #{browser} doc/index.html"
11
+ end
12
+
13
+ end
@@ -0,0 +1,3 @@
1
+
2
+ desc 'Build gemspec file'
3
+ task :gemspec => [:build_gemspec]
data/tasks/spec.rake ADDED
@@ -0,0 +1,25 @@
1
+
2
+ require 'spec/rake/spectask'
3
+
4
+ desc "Run all specifications"
5
+ Spec::Rake::SpecTask.new(:spec) do |t|
6
+ t.libs << "lib"
7
+ t.spec_opts = ["--color", "--require", "spec/spec_helper.rb"]
8
+ end
9
+
10
+ namespace :spec do
11
+
12
+ desc "Run all specifications verbosely"
13
+ Spec::Rake::SpecTask.new(:verbose) do |t|
14
+ t.libs << "lib"
15
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
16
+ end
17
+
18
+ desc "Run specific specification verbosely (specify SPEC)"
19
+ Spec::Rake::SpecTask.new(:select) do |t|
20
+ t.libs << "lib"
21
+ t.spec_files = [ENV["SPEC"]]
22
+ t.spec_opts = ["--color", "--format", "specdoc", "--require", "spec/spec_helper.rb"]
23
+ end
24
+
25
+ end
@@ -0,0 +1,34 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ Gem::Specification.new do |s|
4
+ s.name = %q{terminal-table}
5
+ s.version = "1.0.1"
6
+
7
+ s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
8
+ s.authors = ["TJ Holowaychuk"]
9
+ s.date = %q{2009-01-15}
10
+ s.description = %q{Simple,}
11
+ s.email = %q{tj@vision-media.ca}
12
+ s.extra_rdoc_files = ["README.rdoc", "lib/terminal-table.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/heading.rb", "lib/terminal-table/table.rb", "lib/terminal-table/version.rb", "lib/terminal-table/import.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake"]
13
+ s.files = ["History.rdoc", "Rakefile", "README.rdoc", "lib/terminal-table.rb", "lib/terminal-table/core_ext.rb", "lib/terminal-table/cell.rb", "lib/terminal-table/heading.rb", "lib/terminal-table/table.rb", "lib/terminal-table/version.rb", "lib/terminal-table/import.rb", "spec/spec_helper.rb", "spec/core_ext_spec.rb", "spec/table_spec.rb", "spec/cell_spec.rb", "tasks/docs.rake", "tasks/gemspec.rake", "tasks/spec.rake", "Todo.rdoc", "Manifest", "terminal-table.gemspec"]
14
+ s.has_rdoc = true
15
+ s.homepage = %q{http://github.com/visionmedia/terminal-table}
16
+ s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Terminal-table", "--main", "README.rdoc"]
17
+ s.require_paths = ["lib"]
18
+ s.rubyforge_project = %q{terminal-table}
19
+ s.rubygems_version = %q{1.3.1}
20
+ s.summary = %q{Simple,}
21
+
22
+ if s.respond_to? :specification_version then
23
+ current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
24
+ s.specification_version = 2
25
+
26
+ if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
27
+ s.add_development_dependency(%q<echoe>, [">= 0"])
28
+ else
29
+ s.add_dependency(%q<echoe>, [">= 0"])
30
+ end
31
+ else
32
+ s.add_dependency(%q<echoe>, [">= 0"])
33
+ end
34
+ end
metadata ADDED
@@ -0,0 +1,95 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: visionmedia-terminal-table
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.1
5
+ platform: ruby
6
+ authors:
7
+ - TJ Holowaychuk
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+
12
+ date: 2009-01-15 00:00:00 -08:00
13
+ default_executable:
14
+ dependencies:
15
+ - !ruby/object:Gem::Dependency
16
+ name: echoe
17
+ version_requirement:
18
+ version_requirements: !ruby/object:Gem::Requirement
19
+ requirements:
20
+ - - ">="
21
+ - !ruby/object:Gem::Version
22
+ version: "0"
23
+ version:
24
+ description: Simple,
25
+ email: tj@vision-media.ca
26
+ executables: []
27
+
28
+ extensions: []
29
+
30
+ extra_rdoc_files:
31
+ - README.rdoc
32
+ - lib/terminal-table.rb
33
+ - lib/terminal-table/core_ext.rb
34
+ - lib/terminal-table/cell.rb
35
+ - lib/terminal-table/heading.rb
36
+ - lib/terminal-table/table.rb
37
+ - lib/terminal-table/version.rb
38
+ - lib/terminal-table/import.rb
39
+ - tasks/docs.rake
40
+ - tasks/gemspec.rake
41
+ - tasks/spec.rake
42
+ files:
43
+ - History.rdoc
44
+ - Rakefile
45
+ - README.rdoc
46
+ - lib/terminal-table.rb
47
+ - lib/terminal-table/core_ext.rb
48
+ - lib/terminal-table/cell.rb
49
+ - lib/terminal-table/heading.rb
50
+ - lib/terminal-table/table.rb
51
+ - lib/terminal-table/version.rb
52
+ - lib/terminal-table/import.rb
53
+ - spec/spec_helper.rb
54
+ - spec/core_ext_spec.rb
55
+ - spec/table_spec.rb
56
+ - spec/cell_spec.rb
57
+ - tasks/docs.rake
58
+ - tasks/gemspec.rake
59
+ - tasks/spec.rake
60
+ - Todo.rdoc
61
+ - Manifest
62
+ - terminal-table.gemspec
63
+ has_rdoc: true
64
+ homepage: http://github.com/visionmedia/terminal-table
65
+ post_install_message:
66
+ rdoc_options:
67
+ - --line-numbers
68
+ - --inline-source
69
+ - --title
70
+ - Terminal-table
71
+ - --main
72
+ - README.rdoc
73
+ require_paths:
74
+ - lib
75
+ required_ruby_version: !ruby/object:Gem::Requirement
76
+ requirements:
77
+ - - ">="
78
+ - !ruby/object:Gem::Version
79
+ version: "0"
80
+ version:
81
+ required_rubygems_version: !ruby/object:Gem::Requirement
82
+ requirements:
83
+ - - ">="
84
+ - !ruby/object:Gem::Version
85
+ version: "1.2"
86
+ version:
87
+ requirements: []
88
+
89
+ rubyforge_project: terminal-table
90
+ rubygems_version: 1.2.0
91
+ signing_key:
92
+ specification_version: 2
93
+ summary: Simple,
94
+ test_files: []
95
+