command_line_reporter 3.1.0 → 3.2.0
Sign up to get free protection for your applications and to get access to all the features.
- data/README.md +8 -2
- data/examples/table.rb +2 -2
- data/lib/row.rb +3 -6
- data/lib/table.rb +47 -9
- data/lib/version.rb +1 -1
- metadata +3 -3
data/README.md
CHANGED
@@ -8,9 +8,10 @@ interface to your application. Some of the best features include:
|
|
8
8
|
* Table syntax similar to HTML that makes it trivial to format your data in rows and columns
|
9
9
|
* Easily created headers and footers for your report
|
10
10
|
* Output suppression that makes it easy for your script to support a _quiet_ flag
|
11
|
+
* Capture report output as a string
|
11
12
|
|
12
|
-
The latest release
|
13
|
-
if your terminal supports it.
|
13
|
+
The latest release uses unicode drawing characters for the table, colors allowing you to distinguish
|
14
|
+
data in new ways including bold if your terminal supports it.
|
14
15
|
|
15
16
|
### Installation
|
16
17
|
|
@@ -106,6 +107,9 @@ There are several methods the mixin provides that do not depend on the formatter
|
|
106
107
|
* :align - Allowed values are left|right|center
|
107
108
|
* :color - The color to use for the terminal output i.e. 'red' or 'blue' or 'green'
|
108
109
|
* :bold - true|false to boldface the font
|
110
|
+
* _suppress_output_ - Suppresses output stream that goes to STDOUT
|
111
|
+
* _capture_output_ - Captures all of the output stream to a string and restores output to STDOUT
|
112
|
+
* _restore_output_ - Restores the output stream to STDOUT
|
109
113
|
|
110
114
|
### To Do
|
111
115
|
|
@@ -115,6 +119,8 @@ There are several methods the mixin provides that do not depend on the formatter
|
|
115
119
|
|
116
120
|
### Contributors
|
117
121
|
|
122
|
+
* Thanks to [Stefan Frank](https://github.com/mugwump) for raising the issue that he could not
|
123
|
+
capture report output in a variable as a string
|
118
124
|
* Thanks to [Mike Gunderloy](https://github.com/ffmike) for suggesting the need for suppressing
|
119
125
|
output and putting together a fantastic pull request and discussion
|
120
126
|
* Thanks to [Jason Rogers](https://github.com/jacaetevha) and [Peter
|
data/examples/table.rb
CHANGED
@@ -34,7 +34,7 @@ class Example
|
|
34
34
|
column 'CITY', :width => 15
|
35
35
|
end
|
36
36
|
row :color => 'green', :bold => true do
|
37
|
-
column '
|
37
|
+
column 'caeser'
|
38
38
|
column '1 Appian Way'
|
39
39
|
column 'Rome'
|
40
40
|
end
|
@@ -55,7 +55,7 @@ class Example
|
|
55
55
|
column 'CITY', :width => 15
|
56
56
|
end
|
57
57
|
row :color => 'green', :bold => true do
|
58
|
-
column '
|
58
|
+
column 'caeser'
|
59
59
|
column '1 Appian Way'
|
60
60
|
column 'Rome'
|
61
61
|
end
|
data/lib/row.rb
CHANGED
@@ -30,13 +30,10 @@ module CommandLineReporter
|
|
30
30
|
self.columns << column
|
31
31
|
end
|
32
32
|
|
33
|
-
def separator
|
34
|
-
@sep ||= '+' + self.columns.map {|c| '-' * (c.width + 2)}.join('+') + '+'
|
35
|
-
end
|
36
|
-
|
37
33
|
def output
|
38
34
|
screen_count.times do |sr|
|
39
|
-
|
35
|
+
border_char = ("\u2501" == "u2501") ? '|' : "\u2503"
|
36
|
+
line = (self.border) ? "#{border_char} " : ''
|
40
37
|
self.columns.size.times do |mc|
|
41
38
|
col = self.columns[mc]
|
42
39
|
# Account for the fact that some columns will have more screen rows than their
|
@@ -63,7 +60,7 @@ module CommandLineReporter
|
|
63
60
|
else
|
64
61
|
line << self.columns[mc].screen_rows[sr]
|
65
62
|
end
|
66
|
-
line << ' ' + ((self.border) ?
|
63
|
+
line << ' ' + ((self.border) ? "#{border_char} " : '')
|
67
64
|
end
|
68
65
|
puts line
|
69
66
|
end
|
data/lib/table.rb
CHANGED
@@ -30,14 +30,24 @@ module CommandLineReporter
|
|
30
30
|
c.width = self.rows[0].columns[i].width
|
31
31
|
c.size = c.width - 2 * c.padding
|
32
32
|
|
33
|
-
# Allow for the fact that the row or column may take precedence
|
34
|
-
|
35
|
-
|
33
|
+
# Allow for the fact that the row or column may take precedence and that the first
|
34
|
+
# row might be a header row which we don't want to inherit from
|
35
|
+
unless row.color || c.color
|
36
|
+
if self.rows[0].header
|
37
|
+
c.color = self.rows[1].columns[i].color if self.rows[1]
|
38
|
+
else
|
39
|
+
c.color = self.rows[0].columns[i].color
|
40
|
+
end
|
36
41
|
end
|
37
42
|
|
38
|
-
# Allow for the row to take precendence
|
39
|
-
|
40
|
-
|
43
|
+
# Allow for the row to take precendence and that the first # row might be a header
|
44
|
+
# row which we don't want to inherit from
|
45
|
+
unless row.bold
|
46
|
+
if self.rows[0].header
|
47
|
+
c.bold = self.rows[1].columns[i].bold if self.rows[1]
|
48
|
+
else
|
49
|
+
c.bold = self.rows[0].columns[i].bold
|
50
|
+
end
|
41
51
|
end
|
42
52
|
end
|
43
53
|
end
|
@@ -48,11 +58,39 @@ module CommandLineReporter
|
|
48
58
|
def output
|
49
59
|
return if self.rows.size == 0 # we got here with nothing to print to the screen
|
50
60
|
|
51
|
-
puts
|
52
|
-
self.rows.
|
61
|
+
puts separator('first') if self.border
|
62
|
+
self.rows.each_with_index do |row, index|
|
53
63
|
row.output
|
54
|
-
puts
|
64
|
+
puts separator('middle') if self.border && (index != self.rows.size - 1)
|
55
65
|
end
|
66
|
+
puts separator('last') if self.border
|
67
|
+
end
|
68
|
+
|
69
|
+
private
|
70
|
+
|
71
|
+
def separator(type = 'middle')
|
72
|
+
if "\u2501" == 'u2501'
|
73
|
+
left = right = center = '+'
|
74
|
+
bar = '-'
|
75
|
+
else
|
76
|
+
bar = "\u2501"
|
77
|
+
case type
|
78
|
+
when 'first'
|
79
|
+
left = "\u250F"
|
80
|
+
center = "\u2533"
|
81
|
+
right = "\u2513"
|
82
|
+
when 'middle'
|
83
|
+
left = "\u2523"
|
84
|
+
center = "\u254A"
|
85
|
+
right = "\u252B"
|
86
|
+
when 'last'
|
87
|
+
left = "\u2517"
|
88
|
+
center = "\u253B"
|
89
|
+
right = "\u251B"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
|
93
|
+
left + self.rows[0].columns.map {|c| bar * (c.width + 2)}.join(center) + right
|
56
94
|
end
|
57
95
|
end
|
58
96
|
end
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
name: command_line_reporter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
4
|
prerelease:
|
5
|
-
version: 3.
|
5
|
+
version: 3.2.0
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
8
8
|
- Wes
|
@@ -11,7 +11,7 @@ autorequire:
|
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
13
|
|
14
|
-
date: 2012-02-
|
14
|
+
date: 2012-02-26 00:00:00 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: bundler
|
@@ -82,7 +82,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
82
82
|
requirements:
|
83
83
|
- - ">="
|
84
84
|
- !ruby/object:Gem::Version
|
85
|
-
hash: -
|
85
|
+
hash: -3704234342160057856
|
86
86
|
segments:
|
87
87
|
- 0
|
88
88
|
version: "0"
|