ansi 1.2.3 → 1.2.4

Sign up to get free protection for your applications and to get access to all the features.
data/.ruby CHANGED
@@ -1,8 +1,26 @@
1
1
  ---
2
- name: ansi
3
2
  spec_version: 1.0.0
3
+ replaces: []
4
+
5
+ loadpath:
6
+ - lib
7
+ name: ansi
8
+ repositories: {}
9
+
10
+ conflicts: []
11
+
12
+ engine_check: []
13
+
4
14
  title: ANSI
5
15
  contact: rubyworks-mailinglist@googlegroups.com
16
+ resources:
17
+ repository: git://github.com/rubyworks/ansi.git
18
+ api: http://rubyworks.github.com/ansi/rdoc
19
+ mail: http://groups.google.com/group/rubyworks-mailinglist
20
+ home: http://rubyworks.github.com/ansi
21
+ work: http://github.com/rubyworks/ansi
22
+ maintainers: []
23
+
6
24
  requires:
7
25
  - group:
8
26
  - build
@@ -12,47 +30,15 @@ requires:
12
30
  - test
13
31
  name: ko
14
32
  version: 0+
15
- resources:
16
- repository: git://github.com/rubyworks/ansi.git
17
- api: http://rubyworks.github.com/ansi/rdoc
18
- mail: http://groups.google.com/group/rubyworks-mailinglist
19
- home: http://rubyworks.github.com/ansi
20
- work: http://github.com/rubyworks/ansi
21
- manifest:
22
- - .ruby
23
- - lib/ansi/bbcode.rb
24
- - lib/ansi/code.rb
25
- - lib/ansi/columns.rb
26
- - lib/ansi/logger.rb
27
- - lib/ansi/mixin.rb
28
- - lib/ansi/progressbar.rb
29
- - lib/ansi/string.rb
30
- - lib/ansi/table.rb
31
- - lib/ansi/terminal/curses.rb
32
- - lib/ansi/terminal/stty.rb
33
- - lib/ansi/terminal/termios.rb
34
- - lib/ansi/terminal/win32.rb
35
- - lib/ansi/terminal.rb
36
- - lib/ansi/version.rb
37
- - lib/ansi.rb
38
- - test/case_ansicode.rb
39
- - test/case_bbcode.rb
40
- - test/case_mixin.rb
41
- - test/case_progressbar.rb
42
- - PROFILE
43
- - LICENSE
44
- - README.rdoc
45
- - HISTORY
46
- - NOTICE
47
- - VERSION
48
- version: 1.2.3
33
+ manifest: MANIFEST
34
+ version: 1.2.4
49
35
  licenses:
50
36
  - Apache 2.0
51
37
  copyright: Copyright (c) 2009 Thomas Sawyer
52
- description: ANSI codes at your fingertips!
53
- summary: ANSI codes at your fingertips!
54
- organization: RubyWorks
55
38
  authors:
56
39
  - Thomas Sawyer
57
40
  - Florian Frank
41
+ organization: RubyWorks
42
+ description: The ANSI project is a collection of ANSI escape code related libraries enabling ANSI code based colorization and stylization of output. It is very nice for beautifying shell output.
43
+ summary: ANSI codes at your fingertips!
58
44
  created: 2004-08-01
@@ -1,6 +1,18 @@
1
1
  = RELEASE HISTORY
2
2
 
3
- == 1.2.3 // 2011-04-12
3
+ == 1.2.4 // 2011-04-09
4
+
5
+ This release improves to the ANSI::Columns class. In particular the
6
+ layout is more consitent with intended functionality.
7
+
8
+ Changes:
9
+
10
+ * Improved ANSI::Columns to give more consitant output.
11
+ * ANSI::Columns#to_s can override number of columns.
12
+ * ANSI::Columns can take a String or Array list.
13
+
14
+
15
+ == 1.2.3 // 2011-04-08
4
16
 
5
17
  Minor release to add #clear method to ProgressBar and provide bug
6
18
  fix to BBCode.ansi_to_bbcode. Big thanks goes to Junegunn Choi
File without changes
@@ -1,9 +1,5 @@
1
1
  = ANSI
2
2
 
3
- * http://rubyworks.github.com/ansi
4
- * http://github.com/rubyworks/ansi
5
-
6
-
7
3
  == DESCRIPTION
8
4
 
9
5
  The ANSI project is a collection of ANSI escape code related libraries
@@ -11,13 +7,13 @@ enabling ANSI code based colorization and stylization of output.
11
7
  It is very nice for beautifying shell output.
12
8
 
13
9
  This collection is based on a set of scripts spun-off from
14
- Ruby Facets. Include are Code (used to be ANSICode), Logger,
10
+ Ruby Facets. Included are Code (used to be ANSICode), Logger,
15
11
  ProgressBar and String. In addition the library includes
16
12
  Terminal which provides information about the current output
17
13
  device.
18
14
 
19
15
 
20
- == FEATURES/ISSUES
16
+ == FEATURES
21
17
 
22
18
  * ANSI::Code provides ANSI codes as module functions.
23
19
  * String#ansi makes common usage very easy and elegant.
@@ -25,6 +21,12 @@ device.
25
21
  * Very Good coverage of standard ANSI codes.
26
22
 
27
23
 
24
+ == RESOURCES
25
+
26
+ * home: http://rubyworks.github.com/ansi
27
+ * code: http://github.com/rubyworks/ansi
28
+
29
+
28
30
  == RELEASE NOTES
29
31
 
30
32
  Please see HISTORY file.
@@ -0,0 +1,4 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ Dir['task/*.rake'].each{ |f| load f }
4
+
@@ -1,10 +1,20 @@
1
1
  # ANSI module contains all the ANSI related classes.
2
2
  module ANSI
3
+ #
4
+ def self.meta
5
+ @spec ||= (
6
+ require 'yaml'
7
+ YAML.load(File.new(File.dirname(__FILE__) + '/ansi.yml'))
8
+ )
9
+ end
10
+ #
11
+ def self.const_missing(name)
12
+ meta[name.to_s.downcase] || super(name)
13
+ end
3
14
  end
4
15
 
5
- require 'ansi/version'
6
16
  require 'ansi/code'
7
17
  require 'ansi/logger'
8
18
  require 'ansi/progressbar'
9
19
  require 'ansi/string'
10
-
20
+ require 'ansi/columns'
@@ -0,0 +1,44 @@
1
+ ---
2
+ spec_version: 1.0.0
3
+ replaces: []
4
+
5
+ loadpath:
6
+ - lib
7
+ name: ansi
8
+ repositories: {}
9
+
10
+ conflicts: []
11
+
12
+ engine_check: []
13
+
14
+ title: ANSI
15
+ contact: rubyworks-mailinglist@googlegroups.com
16
+ resources:
17
+ repository: git://github.com/rubyworks/ansi.git
18
+ api: http://rubyworks.github.com/ansi/rdoc
19
+ mail: http://groups.google.com/group/rubyworks-mailinglist
20
+ home: http://rubyworks.github.com/ansi
21
+ work: http://github.com/rubyworks/ansi
22
+ maintainers: []
23
+
24
+ requires:
25
+ - group:
26
+ - build
27
+ name: syckle
28
+ version: 0+
29
+ - group:
30
+ - test
31
+ name: ko
32
+ version: 0+
33
+ manifest: MANIFEST
34
+ version: 1.2.4
35
+ licenses:
36
+ - Apache 2.0
37
+ copyright: Copyright (c) 2009 Thomas Sawyer
38
+ authors:
39
+ - Thomas Sawyer
40
+ - Florian Frank
41
+ organization: RubyWorks
42
+ description: The ANSI project is a collection of ANSI escape code related libraries enabling ANSI code based colorization and stylization of output. It is very nice for beautifying shell output.
43
+ summary: ANSI codes at your fingertips!
44
+ created: 2004-08-01
@@ -7,77 +7,102 @@ module ANSI
7
7
 
8
8
  # Create a column-based layout.
9
9
  #
10
- # string - multiline string to columnize
10
+ # list - Multiline String or Array of strings to columnize
11
11
  #
12
12
  # options[:columns] - number of columns
13
13
  # options[:align] - align :left or :right
14
14
  # options[:padding] - space to add to each cell
15
15
  #
16
- # The +format+ must return ansi codes.
17
- def initialize(string, options={}, &format)
18
- @string = string
19
- @columns = options[:columns] || 3
20
- @padding = options[:padding] || 0
16
+ # The +format+ block MUST return ANSI codes.
17
+ def initialize(list, options={}, &format)
18
+ self.list = list
19
+
20
+ @columns = options[:columns]
21
+ @padding = options[:padding] || 1
21
22
  @align = options[:align]
22
23
  #@ansi = [options[:ansi]].flatten
23
24
  @format = format
25
+
26
+ @columns = nil if @columns == 0
24
27
  end
25
28
 
26
- #
27
- attr_accessor :string
29
+ # List layout into columns. Each new line is taken to be
30
+ # a row-column cell.
31
+ attr_accessor :list
28
32
 
29
- #
33
+ def list=(list)
34
+ case list
35
+ when ::String
36
+ @list = list.lines.to_a.map{ |e| e.chomp("\n") }
37
+ when ::Array
38
+ @list = list.map{ |e| e.to_s }
39
+ end
40
+ end
41
+
42
+ # Default number of columns to display. If nil then the number
43
+ # of coumns is estimated from the size of the terminal.
30
44
  attr_accessor :columns
31
45
 
32
- #
46
+ # Padding size to apply to cells.
33
47
  attr_accessor :padding
34
48
 
35
- #
49
+ # Alignment to apply to cells.
36
50
  attr_accessor :align
37
51
 
38
- #
52
+ # Formating to apply to cells.
39
53
  attr_accessor :format
40
54
 
41
- #
42
- def to_s
43
- if columns
44
- to_s_columns(columns)
45
- else
46
- to_s_auto
47
- end
55
+ # Return string in column layout. The number of columns is determined
56
+ # by the `columns` property or overriden by +cols+ argument.
57
+ #--
58
+ # TODO: Allow #to_s to take options and formating block?
59
+ #++
60
+ def to_s(cols=nil)
61
+ to_s_columns(cols || columns)
48
62
  end
49
63
 
50
64
  private
51
65
 
66
+ # Layout string lines into columns.
52
67
  #
53
68
  # TODO: put in empty strings for blank cells
54
- def to_s_columns(columns)
55
- lines = string.lines.to_a
69
+ def to_s_columns(columns=nil)
70
+ lines = list.to_a
56
71
  count = lines.size
57
- cols = []
58
- mod = (count / columns.to_f).to_i + 1
72
+ max = lines.map{ |l| l.size }.max
73
+ if columns.nil?
74
+ width = Terminal.terminal_width
75
+ columns = (width / (max + padding)).to_i
76
+ end
77
+ cols = []
78
+ mod = (count / columns.to_f).to_i
79
+ mod += 1 if count % columns != 0
80
+
59
81
  lines.each_with_index do |line, index|
60
82
  (cols[index % mod] ||=[]) << line.strip
61
83
  end
62
- max = lines.map{ |l| l.size }.max
84
+
63
85
  pad = " " * padding
64
86
  tmp = template(max, pad)
65
87
  str = ""
66
88
  cols.each_with_index do |row, c|
67
89
  row.each_with_index do |cell, r|
68
- str << (tmp % cell).ansi(*ansi_formating(cell, c, r))
90
+ ansi_codes = ansi_formating(cell, c, r)
91
+ if ansi_codes.empty?
92
+ str << (tmp % cell)
93
+ else
94
+ str << (tmp % cell).ansi(*ansi_codes)
95
+ end
69
96
  end
97
+ str.rstrip!
70
98
  str << "\n"
71
99
  end
72
100
  str
73
101
  end
74
102
 
75
- # TODO: look at the lines and figure out how many columns will fit
76
- def to_s_auto
77
- width = Terminal.terminal_width
78
- end
79
-
103
+ # Aligns the cell left or right.
80
104
  #
105
+ # TODO: Handle centered alignment.
81
106
  def template(max, pad)
82
107
  case align
83
108
  when :right, 'right'
@@ -87,7 +112,7 @@ module ANSI
87
112
  end
88
113
  end
89
114
 
90
- #
115
+ # Used to apply ANSI formating to each cell.
91
116
  def ansi_formating(cell, col, row)
92
117
  if @format
93
118
  case @format.arity
@@ -0,0 +1,56 @@
1
+ = ANSI::Code
2
+
3
+ Require the library.
4
+
5
+ require 'ansi/code'
6
+
7
+ ANSI::Code can be used as a functions module.
8
+
9
+ str = ANSI::Code.red + "Hello" + ANSI::Code.blue + "World"
10
+ str.assert == "\e[31mHello\e[34mWorld"
11
+
12
+ If a block is supplied to each method then yielded value will
13
+ be wrapped in the ANSI code and clear code.
14
+
15
+ str = ANSI::Code.red{ "Hello" } + ANSI::Code.blue{ "World" }
16
+ str.assert == "\e[31mHello\e[0m\e[34mWorld\e[0m"
17
+
18
+ More conveniently the ANSI::Code module extends ANSI itself.
19
+
20
+ str = ANSI.red + "Hello" + ANSI.blue + "World"
21
+ str.assert == "\e[31mHello\e[34mWorld"
22
+
23
+ str = ANSI.red{ "Hello" } + ANSI.blue{ "World" }
24
+ str.assert == "\e[31mHello\e[0m\e[34mWorld\e[0m"
25
+
26
+ In the appropriate context the ANSI::Code module can also be
27
+ included, making its methods directly accessible.
28
+
29
+ include ANSI::Code
30
+
31
+ str = red + "Hello" + blue + "World"
32
+ str.assert == "\e[31mHello\e[34mWorld"
33
+
34
+ str = red{ "Hello" } + blue{ "World" }
35
+ str.assert == "\e[31mHello\e[0m\e[34mWorld\e[0m"
36
+
37
+ Along with the single font colors, the library include background colors.
38
+
39
+ str = on_red + "Hello"
40
+ str.assert == "\e[41mHello"
41
+
42
+ As well as combined color methods.
43
+
44
+ str = white_on_red + "Hello"
45
+ str.assert == "\e[37m\e[41mHello"
46
+
47
+ In addition the library offers an extension to String class
48
+ called #ansi, which allows some of the ANSI::Code methods
49
+ to be called in a more object-oriented fashion.
50
+
51
+ str = "Hello".ansi(:red) + "World".ansi(:blue)
52
+ str.assert == "\e[31mHello\e[0m\e[34mWorld\e[0m"
53
+
54
+ The ANSI::Code module supports most standard ANSI codes, though
55
+ not all platforms support every code, so YMMV.
56
+
@@ -0,0 +1,24 @@
1
+ = ANSI::BBCode
2
+
3
+ The BBCode module provides methods for converting between
4
+ BBCodes, basic HTML and ANSI codes.
5
+
6
+ require 'ansi/bbcode'
7
+
8
+ BBCodes are color and style codes in square brackets, quite
9
+ popular with on line forums.
10
+
11
+ bbcode = "this is [COLOR=red]red[/COLOR], this is [B]bold[/B]"
12
+
13
+ We can convert this to ANSI code simply enough:
14
+
15
+ ansi = ANSI::BBCode.bbcode_to_ansi(bbcode)
16
+
17
+ ansi.assert == "this is \e[0;31mred\e[0m, this is \e[1mbold\e[0m\n"
18
+
19
+ In addition the BBCode module supports conversion to simple HTML.
20
+
21
+ html = ANSI::BBCode.bbcode_to_html(bbcode)
22
+
23
+ html.assert == "this is <font color=\"red\">red</font>, this is <strong>bold</strong><br />\n"
24
+
@@ -0,0 +1,31 @@
1
+ = ANSI::Logger
2
+
3
+ Require the ANSI::Logger library.
4
+
5
+ require 'ansi/logger'
6
+
7
+ Create a new ANSI::Logger
8
+
9
+ log = ANSI::Logger.new(STDOUT)
10
+
11
+ Info logging appears normal.
12
+
13
+ log.info{"Info logs are green.\n"}
14
+
15
+ Warn logging appears yellow.
16
+
17
+ log.warn{"Warn logs are yellow.\n"}
18
+
19
+ Debug logging appears cyan.
20
+
21
+ log.debug{"Debug logs are cyan.\n"}
22
+
23
+ Error logging appears red.
24
+
25
+ log.error{"Error logs are red.\n"}
26
+
27
+ Fatal logging appears bright red.
28
+
29
+ log.fatal{"Fatal logs are bold red!\n"}
30
+
31
+ QED.
@@ -0,0 +1,63 @@
1
+ = ANSI::Progressbar
2
+
3
+ Pretty progress bars are easy to construct.
4
+
5
+ require 'ansi/progressbar'
6
+
7
+ pbar = ANSI::Progressbar.new("Test Bar", 100)
8
+
9
+ Running the bar simply requires calling the #inc method during
10
+ a loop and calling #finish when done.
11
+
12
+ 100.times do |i|
13
+ sleep 0.01
14
+ pbar.inc
15
+ end
16
+ pbar.finish
17
+
18
+ We will use this same rountine in all the examples below, so lets
19
+ make a quick macro for it. Notice we have to use #reset first
20
+ before reusing the same progress bar.
21
+
22
+ def run(pbar)
23
+ pbar.reset
24
+ 100.times do |i|
25
+ sleep 0.01
26
+ pbar.inc
27
+ end
28
+ pbar.finish
29
+ puts
30
+ end
31
+
32
+ The progress bar can be stylized in almost any way.
33
+ The #format setter provides control over the parts
34
+ that appear on the line. For example, by default the
35
+ format is:
36
+
37
+ pbar.format("%-14s %3d%% %s %s", :title, :percentage, :bar, :stat)
38
+
39
+ So lets vary it up to demonstrate the case.
40
+
41
+ pbar.format("%-14s %3d%% %s %s", :title, :percentage, :stat, :bar)
42
+ run(pbar)
43
+
44
+ The progress bar has an extra build in format intended for use with
45
+ file downloads called #transer_mode.
46
+
47
+ pbar.transfer_mode
48
+ run(pbar)
49
+
50
+ Calling this methods is the same as calling:
51
+
52
+ pbar.format("%-14s %3d%% %s %s",:title, :percentage, :bar, :stat_for_file_transfer)
53
+ run(pbar)
54
+
55
+ The #style setter allows each part of the line be modified with ANSI codes. And the
56
+ #bar_mark writer can be used to change the character used to make the bar.
57
+
58
+ pbar.standard_mode
59
+ pbar.style(:title => [:red], :bar=>[:blue])
60
+ pbar.bar_mark = "="
61
+ run(pbar)
62
+
63
+ QED.
@@ -0,0 +1,37 @@
1
+ = ANSI::Mixin
2
+
3
+ The ANSI::Mixin module is design for including into
4
+ String-like classes. It will support any class that defines
5
+ a #to_s method.
6
+
7
+ require 'ansi/mixin'
8
+
9
+ In this demonstration we will simply include it in the
10
+ core String class.
11
+
12
+ class ::String
13
+ include ANSI::Mixin
14
+ end
15
+
16
+ Now all strings will have access to ANSI's style and color
17
+ codes via simple method calls.
18
+
19
+ "roses".red.assert == "\e[31mroses\e[0m"
20
+
21
+ "violets".blue.assert == "\e[34mviolets\e[0m"
22
+
23
+ "sugar".italic.assert == "\e[3msugar\e[0m"
24
+
25
+ The method can be combined, of course.
26
+
27
+ "you".italic.bold.assert == "\e[1m\e[3myou\e[0m\e[0m"
28
+
29
+ The mixin also supports background methods.
30
+
31
+ "envy".on_green.assert == "\e[42menvy\e[0m"
32
+
33
+ And it also supports the combined foreground-on-background
34
+ methods.
35
+
36
+ "b&w".white_on_black.assert == "\e[37m\e[40mb&w\e[0m"
37
+
@@ -0,0 +1,56 @@
1
+ = ANSI::String
2
+
3
+ The ANSI::String class is a very sophisticated implementation
4
+ of Ruby's standard String class, but one that can handle
5
+ ANSI codes seamlessly.
6
+
7
+ require 'ansi/string'
8
+
9
+ flower1 = ANSI::String.new("Roses")
10
+ flower2 = ANSI::String.new("Violets")
11
+
12
+ Like any other string.
13
+
14
+ flower1.to_s.assert == "Roses"
15
+ flower2.to_s.assert == "Violets"
16
+
17
+ Bet now we can add color.
18
+
19
+ flower1.red!
20
+ flower2.blue!
21
+
22
+ flower1.to_s.assert == "\e[31mRoses\e[0m"
23
+ flower2.to_s.assert == "\e[34mViolets\e[0m"
24
+
25
+ Despite that the string representation now contains ANSI codes,
26
+ we can still manipulate the string in much the same way that
27
+ we manipulate an ordinary string.
28
+
29
+ flower1.size.assert == 5
30
+ flower2.size.assert == 7
31
+
32
+ Like ordinary strings we can concatenate the two strings
33
+
34
+ flowers = flower1 + ' ' + flower2
35
+ flowers.to_s.assert == "\e[31mRoses\e[0m \e[34mViolets\e[0m"
36
+
37
+ flowers.size.assert == 13
38
+
39
+ Standard case conversion such as #upcase and #downcase work.
40
+
41
+ flower1.upcase.to_s.assert == "\e[31mROSES\e[0m"
42
+ flower1.downcase.to_s.assert == "\e[31mroses\e[0m"
43
+
44
+ Some of the most difficult methods to re-implement were the
45
+ substitution methods such as #sub and #gsub. They are still
46
+ somewhat more limited than the original string methods, but
47
+ their primary functionality should work.
48
+
49
+ flower1.gsub('s', 'z').to_s.assert == "\e[31mRozez\e[0m"
50
+
51
+ There are still a number of methods that need implementation.
52
+ ANSI::String is currently a very partial implementation. But
53
+ as you can see from the methods it does currently support,
54
+ is it already useful.
55
+
56
+
@@ -0,0 +1,90 @@
1
+ = ANSI::Columns
2
+
3
+ The +Columns+ class makes it easy to create nice looking text columns,
4
+ sorted from top to bottom, right to left (as opposed to the other way
5
+ around).
6
+
7
+ require 'ansi/columns'
8
+
9
+ list = %w{a b c d e f g h i j k l}
10
+
11
+ columns = ANSI::Columns.new(list)
12
+
13
+ columns.to_s(4)
14
+
15
+ The output will be:
16
+
17
+ a d g j
18
+ b e h k
19
+ c f i l
20
+
21
+ Besides and array of elements, Columns.new can take a string in which
22
+ the elements are divided by newlines characters. The default column
23
+ size can also be given to the initializer.
24
+
25
+ list = "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\nk\nl"
26
+
27
+ columns = ANSI::Columns.new(list, :columns=>6)
28
+
29
+ columns.to_s
30
+
31
+ The output will be:
32
+
33
+ a c e g i k
34
+ b d f h j l
35
+
36
+ If the column count is +nil+, then the number of columns will be calculated
37
+ as a best fit for the current terminal window.
38
+
39
+ == Padding
40
+
41
+ Columns can adjsut the padding between cells.
42
+
43
+ list = %w{a b c d e f g h i j k l}
44
+
45
+ columns = ANSI::Columns.new(list, :padding=>2)
46
+
47
+ columns.to_s(4)
48
+
49
+ The output will be:
50
+
51
+ a d g j
52
+ b e h k
53
+ c f i l
54
+
55
+ == Alignment
56
+
57
+ Columns can also be aligned either left or right.
58
+
59
+ list = %w{xx xx xx yy y yy z zz z}
60
+
61
+ columns = ANSI::Columns.new(list, :align=>:right)
62
+
63
+ columns.to_s(3)
64
+
65
+ The output will be:
66
+
67
+ xx yy z
68
+ xx y zz
69
+ xx yy z
70
+
71
+ == Format
72
+
73
+ Lastly, columns can be aguamented with ANSI codes. This is done through
74
+ a formating block. The block can take upto three parameters, the cell
75
+ content, the row and column numbers, or the cell and the row and column
76
+ numbers.
77
+
78
+ list = %w{a b c d e f g h i j k l}
79
+
80
+ columns = ANSI::Columns.new(list){ |r,c| c % 2 == 0 ? :red : :blue }
81
+
82
+ out = columns.to_s(4)
83
+
84
+ out.assert == (
85
+ "\e[31ma \e[0m\e[31md \e[0m\e[31mg \e[0m\e[31mj \e[0m\n" +
86
+ "\e[34mb \e[0m\e[34me \e[0m\e[34mh \e[0m\e[34mk \e[0m\n" +
87
+ "\e[31mc \e[0m\e[31mf \e[0m\e[31mi \e[0m\e[31ml \e[0m\n"
88
+ )
89
+
90
+ QED.
@@ -0,0 +1,28 @@
1
+ = ANSI::Table
2
+
3
+ The ANSI::Table class can be used to output tabular data with nicely
4
+ formated ASCII cell borders.
5
+
6
+ require 'ansi/table'
7
+
8
+ The constructor takes an 2-dimensional array.
9
+
10
+ data = [
11
+ [ 10, 20, 30 ],
12
+ [ 20, 10, 20 ],
13
+ [ 50, 40, 20 ]
14
+ ]
15
+
16
+ table = ANSI::Table.new(data)
17
+
18
+ table.to_s
19
+
20
+ The output will be:
21
+
22
+ +----+----+----+
23
+ | 10 | 20 | 30 |
24
+ | 20 | 10 | 20 |
25
+ | 50 | 40 | 20 |
26
+ +----+----+----+
27
+
28
+
@@ -0,0 +1,5 @@
1
+ When "output will be" do |text|
2
+ # how to get result of last block?
3
+ @_.strip.assert == text.strip
4
+ end
5
+
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ansi
3
3
  version: !ruby/object:Gem::Version
4
- hash: 25
4
+ hash: 23
5
5
  prerelease: false
6
6
  segments:
7
7
  - 1
8
8
  - 2
9
- - 3
10
- version: 1.2.3
9
+ - 4
10
+ version: 1.2.4
11
11
  platform: ruby
12
12
  authors:
13
13
  - Thomas Sawyer
@@ -16,7 +16,7 @@ autorequire:
16
16
  bindir: bin
17
17
  cert_chain: []
18
18
 
19
- date: 2011-04-08 00:00:00 -04:00
19
+ date: 2011-05-01 00:00:00 -04:00
20
20
  default_executable:
21
21
  dependencies:
22
22
  - !ruby/object:Gem::Dependency
@@ -47,7 +47,7 @@ dependencies:
47
47
  version: "0"
48
48
  type: :development
49
49
  version_requirements: *id002
50
- description: ANSI codes at your fingertips!
50
+ description: The ANSI project is a collection of ANSI escape code related libraries enabling ANSI code based colorization and stylization of output. It is very nice for beautifying shell output.
51
51
  email: rubyworks-mailinglist@googlegroups.com
52
52
  executables: []
53
53
 
@@ -70,18 +70,26 @@ files:
70
70
  - lib/ansi/terminal/termios.rb
71
71
  - lib/ansi/terminal/win32.rb
72
72
  - lib/ansi/terminal.rb
73
- - lib/ansi/version.rb
74
73
  - lib/ansi.rb
74
+ - lib/ansi.yml
75
+ - qed/01_ansicode.rdoc
76
+ - qed/02_bbcode.rdoc
77
+ - qed/03_logger.rdoc
78
+ - qed/04_progressbar.rdoc
79
+ - qed/05_mixin.rdoc
80
+ - qed/06_string.rdoc
81
+ - qed/07_columns.rdoc
82
+ - qed/08_table.rdoc
83
+ - qed/applique/output.rb
75
84
  - test/case_ansicode.rb
76
85
  - test/case_bbcode.rb
77
86
  - test/case_mixin.rb
78
87
  - test/case_progressbar.rb
79
- - PROFILE
88
+ - Rakefile
89
+ - HISTORY.rdoc
80
90
  - LICENSE
81
91
  - README.rdoc
82
- - HISTORY
83
- - NOTICE
84
- - VERSION
92
+ - NOTICE.rdoc
85
93
  has_rdoc: true
86
94
  homepage: http://rubyworks.github.com/ansi
87
95
  licenses:
data/PROFILE DELETED
@@ -1,28 +0,0 @@
1
- ---
2
- title : ANSI
3
- summary: ANSI codes at your fingertips!
4
- license: Apache 2.0
5
- contact: rubyworks-mailinglist@googlegroups.com
6
- created: 2004-08-01
7
-
8
- requires:
9
- - syckle (build)
10
- - ko (test)
11
-
12
- authors:
13
- - Thomas Sawyer
14
- - Florian Frank
15
-
16
- description:
17
- ANSI codes at your fingertips!
18
-
19
- resources:
20
- homepage : http://rubyworks.github.com/ansi
21
- development : http://github.com/rubyworks/ansi
22
- reference : http://rubyworks.github.com/ansi/rdoc
23
- mailinglist : http://groups.google.com/group/rubyworks-mailinglist
24
- repository : git://github.com/rubyworks/ansi.git
25
-
26
- organization : RubyWorks
27
- copyright : Copyright (c) 2009 Thomas Sawyer
28
-
data/VERSION DELETED
@@ -1 +0,0 @@
1
- 1.2.3
@@ -1,4 +0,0 @@
1
- module ANSI
2
- VERSION = '1.2.3'
3
- DATE = '2011-04-08'
4
- end