collimator 0.0.1 → 0.0.2
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.
- data/Gemfile.lock +1 -1
- data/README.md +55 -1
- data/examples/progress_bar.rb +14 -0
- data/examples/spinner.rb +9 -0
- data/examples/table.rb +22 -0
- data/lib/collimator/version.rb +1 -1
- data/lib/collimator.rb +43 -8
- data/test/table_test.rb +51 -6
- metadata +16 -13
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -22,7 +22,61 @@ Or install it yourself as:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
|
25
|
-
|
25
|
+
### Table
|
26
|
+
see a few samples in `examples`.
|
27
|
+
|
28
|
+
Table.header("Collimator")
|
29
|
+
Table.header("Usage Example")
|
30
|
+
Table.header("Can have lots of headers")
|
31
|
+
|
32
|
+
Table.column('', :width => 18, :padding => 2, :justification => :right)
|
33
|
+
Table.column('numbers', :width => 14, :justification => :center)
|
34
|
+
Table.column('words', :width => 12, :justification => :left, :padding => 2)
|
35
|
+
Table.column('decimal', :width => 12, :justification => :decimal)
|
36
|
+
|
37
|
+
Table.row(['george', 123, 'holla', 12.5])
|
38
|
+
Table.row(['jim', 8, 'hi', 76.58])
|
39
|
+
Table.row(['robert', 10000, 'greetings', 0.2])
|
40
|
+
|
41
|
+
Table.footer("gotta love it", :justification => :center)
|
42
|
+
|
43
|
+
Table.tabulate
|
44
|
+
|
45
|
+
will result in...
|
46
|
+
|
47
|
+
+---------------------------------------------------------------+
|
48
|
+
| Collimator |
|
49
|
+
| Usage Example |
|
50
|
+
| Can have lots of headers |
|
51
|
+
+---------------------------------------------------------------+
|
52
|
+
| | numbers | words | decimal |
|
53
|
+
|--------------------+--------------+--------------+------------|
|
54
|
+
| george | 123 | holla | 12.5 |
|
55
|
+
| jim | 8 | hi | 76.58 |
|
56
|
+
| robert | 10000 | greetings | 0.2 |
|
57
|
+
+---------------------------------------------------------------+
|
58
|
+
| gotta love it |
|
59
|
+
+---------------------------------------------------------------+
|
60
|
+
|
61
|
+
### Spinner
|
62
|
+
|
63
|
+
Spinner.spin
|
64
|
+
# ...
|
65
|
+
Spinner.stop
|
66
|
+
|
67
|
+
### Progress Bar
|
68
|
+
|
69
|
+
ProgressBar.start({:min => 0, :max => 100, :method => :percent, :step_size => 10})
|
70
|
+
|
71
|
+
0.upto(10) do
|
72
|
+
# ...
|
73
|
+
ProgressBar.increment
|
74
|
+
end
|
75
|
+
|
76
|
+
ProgressBar.complete
|
77
|
+
|
78
|
+
|
79
|
+
Better usage coming. in the mean time, tests might show best how to use.
|
26
80
|
|
27
81
|
## Contributing
|
28
82
|
|
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "rubygems"
|
3
|
+
require 'collimator'
|
4
|
+
|
5
|
+
include Collimator
|
6
|
+
|
7
|
+
ProgressBar.start({:min => 0, :max => 100, :method => :percent, :step_size => 10})
|
8
|
+
0.upto(10) do
|
9
|
+
sleep 0.5
|
10
|
+
ProgressBar.increment
|
11
|
+
end
|
12
|
+
|
13
|
+
sleep 0.5
|
14
|
+
ProgressBar.complete
|
data/examples/spinner.rb
ADDED
data/examples/table.rb
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "rubygems"
|
3
|
+
require 'collimator'
|
4
|
+
|
5
|
+
include Collimator
|
6
|
+
|
7
|
+
Table.header("Collimator")
|
8
|
+
Table.header("Usage Example")
|
9
|
+
Table.header("Can have lots of headers")
|
10
|
+
|
11
|
+
Table.column('', :width => 18, :padding => 2, :justification => :right)
|
12
|
+
Table.column('numbers', :width => 14, :justification => :center)
|
13
|
+
Table.column('words', :width => 12, :justification => :left, :padding => 2)
|
14
|
+
Table.column('decimal', :width => 12, :justification => :decimal)
|
15
|
+
|
16
|
+
Table.row(['george', 123, 'holla', 12.5])
|
17
|
+
Table.row(['jim', 8, 'hi', 76.58])
|
18
|
+
Table.row(['robert', 10000, 'greetings', 0.2])
|
19
|
+
|
20
|
+
Table.footer("gotta love it", :justification => :center)
|
21
|
+
|
22
|
+
Table.tabulate
|
data/lib/collimator/version.rb
CHANGED
data/lib/collimator.rb
CHANGED
@@ -25,6 +25,7 @@ module Collimator
|
|
25
25
|
@table_string = []
|
26
26
|
@use_capture_string = false
|
27
27
|
@use_capture_html = false
|
28
|
+
@last_header_color = '#EEEEEE'
|
28
29
|
|
29
30
|
def self.live_update=(live_upate)
|
30
31
|
@live_update = live_upate
|
@@ -51,9 +52,9 @@ module Collimator
|
|
51
52
|
end
|
52
53
|
|
53
54
|
def self.header(text, opts = {})
|
54
|
-
width, padding, justification = parse_options(opts)
|
55
|
+
width, padding, justification, color = parse_options(opts)
|
55
56
|
|
56
|
-
@headers << { :text => text, :padding => padding, :justification => justification }
|
57
|
+
@headers << { :text => text, :padding => padding, :justification => justification , :color => color}
|
57
58
|
end
|
58
59
|
|
59
60
|
def self.footer(text, opts)
|
@@ -125,7 +126,7 @@ module Collimator
|
|
125
126
|
|
126
127
|
def self.prep_html_table
|
127
128
|
@table_string = []
|
128
|
-
@table_string << "<table>"
|
129
|
+
@table_string << "<table STYLE=\"font-family: helvetica, verdana, tahoma; border-collapse: collapse;\">"
|
129
130
|
end
|
130
131
|
|
131
132
|
def self.complete_html_table
|
@@ -317,11 +318,40 @@ module Collimator
|
|
317
318
|
put_horizontal_line_with_dividers
|
318
319
|
end
|
319
320
|
|
320
|
-
def self.
|
321
|
-
|
321
|
+
def self.style_color(rgb)
|
322
|
+
luminance = get_luminance(rgb)
|
323
|
+
color = luminance < 50 ? '#EEEEEE' : '#222222'
|
324
|
+
color_style = "color: #{color};"
|
325
|
+
end
|
326
|
+
|
327
|
+
def self.style_header_border(rgb)
|
328
|
+
luminance = get_luminance(rgb)
|
329
|
+
color = luminance < 50 ? '#EEEEEE' : '#222222'
|
330
|
+
color_style = "border-bottom: 1px solid #{color};"
|
331
|
+
end
|
332
|
+
|
333
|
+
def self.get_luminance(rgb)
|
334
|
+
rgb_temp = rgb.gsub("#", '')
|
335
|
+
luminance = 0
|
336
|
+
if rgb_temp.length == 6
|
337
|
+
r = rgb_temp[0..1].hex
|
338
|
+
g = rgb_temp[2..3].hex
|
339
|
+
b = rgb_temp[4..5].hex
|
340
|
+
luminance = (0.299*r + 0.587*g + 0.114*b)
|
341
|
+
end
|
342
|
+
luminance
|
343
|
+
end
|
322
344
|
|
345
|
+
def self.put_column_heading_text_html
|
346
|
+
c = @last_header_color
|
347
|
+
text_color = style_color(c)
|
348
|
+
border_color = style_header_border(c)
|
349
|
+
out = "<tr STYLE=\"background-color: #{@last_header_color}; #{text_color} #{border_color}\">\n"
|
350
|
+
column = 0
|
323
351
|
@column_names.each do |cname|
|
324
|
-
|
352
|
+
padding_style = @columns[column][:padding] ? "STYLE=\"padding-left: #{@columns[column][:padding]}em; padding-right: #{@columns[column][:padding]}em;\"" : ""
|
353
|
+
out += "<th #{padding_style}>#{cname}</th>\n"
|
354
|
+
column += 1
|
325
355
|
end
|
326
356
|
|
327
357
|
out += "</tr>\n"
|
@@ -368,8 +398,11 @@ module Collimator
|
|
368
398
|
end
|
369
399
|
|
370
400
|
def self.make_header_line_html(data)
|
401
|
+
@last_header_color = data[:color] || @last_header_color
|
402
|
+
|
403
|
+
text_color = style_color(@last_header_color)
|
371
404
|
header_line = "<tr>"
|
372
|
-
header_line += "<th colspan='#{@column_names.count + 1}'>#{data[:text]}</th>"
|
405
|
+
header_line += "<th STYLE=\"background-color: #{@last_header_color}; #{text_color}\" colspan='#{@column_names.count + 1}'>#{data[:text]}</th>"
|
373
406
|
header_line += "</tr>"
|
374
407
|
header_line
|
375
408
|
end
|
@@ -404,7 +437,9 @@ module Collimator
|
|
404
437
|
row_string = "<tr>\n"
|
405
438
|
|
406
439
|
row_data.each do | val |
|
407
|
-
|
440
|
+
style_info = @columns[column][:padding] ? " STYLE=\"padding-left: #{@columns[column][:padding]}em; padding-right: #{@columns[column][:padding]}em;\"" : ''
|
441
|
+
row_string += "<td#{style_info}>#{val}</td>\n"
|
442
|
+
column += 1
|
408
443
|
end
|
409
444
|
|
410
445
|
row_string += "</tr>"
|
data/test/table_test.rb
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
require 'test/unit'
|
2
|
-
require
|
2
|
+
require File.expand_path("../../lib/collimator", __FILE__)
|
3
|
+
|
3
4
|
require 'date'
|
4
5
|
require 'stringio'
|
5
6
|
require 'test_helper'
|
@@ -640,8 +641,56 @@ class TestTable < Test::Unit::TestCase
|
|
640
641
|
assert_equal '+--------------------------------------------+', table_lines[13]
|
641
642
|
end
|
642
643
|
|
643
|
-
def
|
644
|
+
def test_html_output_formatted
|
645
|
+
header_text = ['a', 'b', 'c', 'd']
|
646
|
+
|
647
|
+
table_header = 'header'
|
648
|
+
|
649
|
+
Table.header(table_header, :color => '#FF9933')
|
650
|
+
|
651
|
+
(0..header_text.length - 1).each do |i|
|
652
|
+
Table.column(header_text[i], :width => 10, :padding => 1.2, :justification => :center)
|
653
|
+
end
|
654
|
+
|
655
|
+
Table.row([1, 2, 3, 4])
|
656
|
+
Table.row([1.1, 2.1, 3.1, 4.1])
|
644
657
|
|
658
|
+
table_text = Table.tabulate_to_html
|
659
|
+
|
660
|
+
# puts table_text
|
661
|
+
|
662
|
+
table_lines = table_text.split("\n")
|
663
|
+
assert_equal 25, table_lines.length, 'the number of lines in the table output'
|
664
|
+
|
665
|
+
assert_equal '<table STYLE="font-family: helvetica, verdana, tahoma; border-collapse: collapse;">', table_lines[0]
|
666
|
+
assert_equal '<thead>', table_lines[1]
|
667
|
+
assert_equal "<tr><th STYLE=\"background-color: #FF9933; color: #222222;\" colspan='5'>header</th></tr>", table_lines[2]
|
668
|
+
assert_equal '<tr STYLE="background-color: #FF9933; color: #222222; border-bottom: 1px solid #222222;">', table_lines[3]
|
669
|
+
assert_equal '<th STYLE="padding-left: 1.2em; padding-right: 1.2em;">a</th>', table_lines[4]
|
670
|
+
assert_equal '<th STYLE="padding-left: 1.2em; padding-right: 1.2em;">b</th>', table_lines[5]
|
671
|
+
assert_equal '<th STYLE="padding-left: 1.2em; padding-right: 1.2em;">c</th>', table_lines[6]
|
672
|
+
assert_equal '<th STYLE="padding-left: 1.2em; padding-right: 1.2em;">d</th>', table_lines[7]
|
673
|
+
assert_equal '</tr>', table_lines[8]
|
674
|
+
assert_equal '</thead>', table_lines[9]
|
675
|
+
assert_equal '<tbody>', table_lines[10]
|
676
|
+
assert_equal '<tr>', table_lines[11]
|
677
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">1</td>', table_lines[12]
|
678
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">2</td>', table_lines[13]
|
679
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">3</td>', table_lines[14]
|
680
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">4</td>', table_lines[15]
|
681
|
+
assert_equal '</tr>', table_lines[16]
|
682
|
+
assert_equal '<tr>', table_lines[17]
|
683
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">1.1</td>', table_lines[18]
|
684
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">2.1</td>', table_lines[19]
|
685
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">3.1</td>', table_lines[20]
|
686
|
+
assert_equal '<td STYLE="padding-left: 1.2em; padding-right: 1.2em;">4.1</td>', table_lines[21]
|
687
|
+
assert_equal '</tr>', table_lines[22]
|
688
|
+
assert_equal '</tbody>', table_lines[23]
|
689
|
+
assert_equal '</table>', table_lines[24]
|
690
|
+
|
691
|
+
end
|
692
|
+
|
693
|
+
def xtest_html_output
|
645
694
|
header_text = ['a', 'b', 'c', 'd']
|
646
695
|
|
647
696
|
table_header = 'header'
|
@@ -657,8 +706,6 @@ class TestTable < Test::Unit::TestCase
|
|
657
706
|
|
658
707
|
table_text = Table.tabulate_to_html
|
659
708
|
|
660
|
-
#assert_equal "booty", table_text
|
661
|
-
|
662
709
|
table_lines = table_text.split("\n")
|
663
710
|
assert_equal 25, table_lines.length, 'the number of lines in the table output'
|
664
711
|
|
@@ -687,8 +734,6 @@ class TestTable < Test::Unit::TestCase
|
|
687
734
|
assert_equal '</tr>', table_lines[22]
|
688
735
|
assert_equal '</tbody>', table_lines[23]
|
689
736
|
assert_equal '</table>', table_lines[24]
|
690
|
-
|
691
|
-
|
692
737
|
end
|
693
738
|
|
694
739
|
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: collimator
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 27
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 2
|
10
|
+
version: 0.0.2
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- geordie
|
@@ -15,11 +15,12 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2013-03
|
18
|
+
date: 2013-05-03 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
name: rdoc
|
22
|
-
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
23
24
|
none: false
|
24
25
|
requirements:
|
25
26
|
- - ">="
|
@@ -29,11 +30,11 @@ dependencies:
|
|
29
30
|
- 0
|
30
31
|
version: "0"
|
31
32
|
type: :development
|
32
|
-
|
33
|
-
requirement: *id001
|
33
|
+
version_requirements: *id001
|
34
34
|
- !ruby/object:Gem::Dependency
|
35
35
|
name: rake
|
36
|
-
|
36
|
+
prerelease: false
|
37
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
37
38
|
none: false
|
38
39
|
requirements:
|
39
40
|
- - ~>
|
@@ -45,11 +46,11 @@ dependencies:
|
|
45
46
|
- 2
|
46
47
|
version: 0.9.2
|
47
48
|
type: :development
|
48
|
-
|
49
|
-
requirement: *id002
|
49
|
+
version_requirements: *id002
|
50
50
|
- !ruby/object:Gem::Dependency
|
51
51
|
name: colored
|
52
|
-
|
52
|
+
prerelease: false
|
53
|
+
requirement: &id003 !ruby/object:Gem::Requirement
|
53
54
|
none: false
|
54
55
|
requirements:
|
55
56
|
- - ">="
|
@@ -59,8 +60,7 @@ dependencies:
|
|
59
60
|
- 0
|
60
61
|
version: "0"
|
61
62
|
type: :runtime
|
62
|
-
|
63
|
-
requirement: *id003
|
63
|
+
version_requirements: *id003
|
64
64
|
description: Collimator
|
65
65
|
email:
|
66
66
|
- george.speake@gmail.com
|
@@ -79,6 +79,9 @@ files:
|
|
79
79
|
- README.md
|
80
80
|
- Rakefile
|
81
81
|
- collimator.gemspec
|
82
|
+
- examples/progress_bar.rb
|
83
|
+
- examples/spinner.rb
|
84
|
+
- examples/table.rb
|
82
85
|
- lib/collimator.rb
|
83
86
|
- lib/collimator/version.rb
|
84
87
|
- test/progressbar_test.rb
|