bash-visual 1.0.5 → 1.0.6
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/.gitignore +2 -0
- data/Gemfile +8 -0
- data/README.md +26 -9
- data/bash-visual.gemspec +6 -4
- data/example/hello_world.rb +14 -0
- data/example/random.rb +9 -0
- data/example/spectrum.rb +30 -0
- data/lib/bash-visual/builder.rb +7 -5
- data/lib/bash-visual/console.rb +18 -5
- data/lib/bash-visual/font.rb +99 -69
- data/lib/bash-visual/scroll.rb +34 -10
- data/lib/bash-visual/version.rb +1 -1
- data/lib/bash-visual/vertical_scroll.rb +1 -1
- data/test/builder_test.rb +18 -0
- data/test/font_test.rb +84 -0
- data/test/helper.rb +6 -0
- metadata +9 -4
- data/Gemfile.lock +0 -14
data/.gitignore
CHANGED
data/Gemfile
CHANGED
@@ -2,3 +2,11 @@ source 'https://rubygems.org'
|
|
2
2
|
|
3
3
|
# Specify your gem's dependencies in bash-visual.gemspec
|
4
4
|
gemspec
|
5
|
+
|
6
|
+
group :test do
|
7
|
+
gem 'test-unit'
|
8
|
+
gem 'mocha', :group => :test, :require=>false
|
9
|
+
gem 'minitest-reporters'
|
10
|
+
|
11
|
+
gem 'simplecov', :require => false, :group => :test
|
12
|
+
end
|
data/README.md
CHANGED
@@ -1,6 +1,17 @@
|
|
1
|
-
# Bash
|
1
|
+
# Bash-Visual
|
2
2
|
|
3
|
-
Bash visualisation
|
3
|
+
Bash visualisation library
|
4
|
+
|
5
|
+
## Description
|
6
|
+
**BashVisual** simplifies Unix-console operation (bash, csh etc). It uses _tput_ and standard Unix-terminal facilities. It is also thread-safe.
|
7
|
+
|
8
|
+
BashVisual allows:
|
9
|
+
- control position, colors and text's form
|
10
|
+
- draw graphical primitives (rectangle, window)
|
11
|
+
- create dynamic scrolling objects
|
12
|
+
- get window parameters (weight, height)
|
13
|
+
|
14
|
+
[See the wiki!](https://github.com/AlmazKo/BashVisual/wiki)
|
4
15
|
|
5
16
|
## Installation
|
6
17
|
|
@@ -17,14 +28,20 @@ Or install it yourself as:
|
|
17
28
|
$ gem install bash-visual
|
18
29
|
|
19
30
|
## Usage
|
31
|
+
```ruby
|
32
|
+
require 'bash-visual'
|
33
|
+
include Bash_Visual
|
34
|
+
|
35
|
+
border_font = Font.new(:std, :blue)
|
36
|
+
main_color = Font.new(:bold, :green)
|
37
|
+
|
38
|
+
console = Console.new(main_color)
|
39
|
+
console.clear
|
20
40
|
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
console.draw_window(2, 2, 20, 5, 'Example', font, Console::BORDER_UTF_DOUBLE)
|
26
|
-
console.write_to_position(5, 3, 'Hello World!', Font.new(Font::BOLD, Font::LIGHT_GREEN))
|
27
|
-
console.position = [0, 8]
|
41
|
+
console.draw_window(2, 2, 20, 5, 'Example', border_font, Console::BORDER_UTF_DOUBLE)
|
42
|
+
console.write_to_position(5, 3, 'Hello World!')
|
43
|
+
console.position = [0, 8]
|
44
|
+
```
|
28
45
|
|
29
46
|
## Contributing
|
30
47
|
|
data/bash-visual.gemspec
CHANGED
@@ -1,16 +1,18 @@
|
|
1
|
-
#
|
1
|
+
# coding: utf-8
|
2
|
+
$:.push File.expand_path('../lib', __FILE__)
|
3
|
+
require 'bash-visual/version'
|
2
4
|
|
3
|
-
Dir[File.dirname(__FILE__) + '/lib/bash-visual/*.rb'].each {|file| require file }
|
4
5
|
|
5
6
|
Gem::Specification.new do |gem|
|
6
7
|
gem.name = 'bash-visual'
|
7
8
|
gem.author = 'Alexander Suslov'
|
8
9
|
gem.email = ['a.s.suslov@gmail.com']
|
9
10
|
gem.description = %q{Bash visualisation tools}
|
10
|
-
gem.summary =
|
11
|
-
gem.homepage = 'https://github.com/AlmazKo/
|
11
|
+
gem.summary = gem.description
|
12
|
+
gem.homepage = 'https://github.com/AlmazKo/BashVisual'
|
12
13
|
|
13
14
|
gem.files = `git ls-files`.split($\)
|
15
|
+
gem.test_files = `git ls-files -- {test}/*`.split($\)
|
14
16
|
gem.require_paths = ['lib']
|
15
17
|
gem.version = Bash_Visual::VERSION
|
16
18
|
gem.license = 'MIT'
|
@@ -0,0 +1,14 @@
|
|
1
|
+
$:.push File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'bash-visual'
|
4
|
+
include Bash_Visual
|
5
|
+
|
6
|
+
border_font = Font.new(:std, :blue)
|
7
|
+
main_color = Font.new(:bold, :green)
|
8
|
+
|
9
|
+
console = Console.new(main_color)
|
10
|
+
console.clear
|
11
|
+
|
12
|
+
console.draw_window(2, 2, 20, 5, 'Example', border_font, Console::BORDER_UTF_DOUBLE)
|
13
|
+
console.write_to_position(5, 3, 'Hello World!')
|
14
|
+
console.position = [0, 8]
|
data/example/random.rb
ADDED
data/example/spectrum.rb
ADDED
@@ -0,0 +1,30 @@
|
|
1
|
+
$:.push File.expand_path('../../lib', __FILE__)
|
2
|
+
|
3
|
+
require 'bash-visual'
|
4
|
+
include Bash_Visual
|
5
|
+
|
6
|
+
colors = Font::COLORS
|
7
|
+
types = [:std, :bold, :underline, :blink,
|
8
|
+
[:bold, :underline], [:bold, :blink], [:underline, :blink],
|
9
|
+
[:bold, :underline, :blink]
|
10
|
+
]
|
11
|
+
|
12
|
+
console = Console.new
|
13
|
+
console.clear
|
14
|
+
|
15
|
+
console.write_ln 'Example "Spectrum":'
|
16
|
+
|
17
|
+
types.each do |type|
|
18
|
+
|
19
|
+
colors.each do |color|
|
20
|
+
console.write('X', Font.new(type, color))
|
21
|
+
end
|
22
|
+
|
23
|
+
console.write ' '
|
24
|
+
|
25
|
+
colors.each do |color|
|
26
|
+
console.write('X', Font.new(type, :white, color))
|
27
|
+
end
|
28
|
+
|
29
|
+
console.write_ln ' ' + type.inspect
|
30
|
+
end
|
data/lib/bash-visual/builder.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
1
3
|
module Bash_Visual
|
2
4
|
class Builder
|
3
5
|
|
@@ -21,7 +23,7 @@ module Bash_Visual
|
|
21
23
|
"\e[s"
|
22
24
|
end
|
23
25
|
|
24
|
-
def set_position
|
26
|
+
def set_position(x, y)
|
25
27
|
"\e[#{y.to_i};#{x.to_i}H"
|
26
28
|
end
|
27
29
|
|
@@ -40,7 +42,7 @@ module Bash_Visual
|
|
40
42
|
bash
|
41
43
|
end
|
42
44
|
|
43
|
-
def write_to_position
|
45
|
+
def write_to_position(x, y, text, font = @default_font)
|
44
46
|
bash = ''
|
45
47
|
bash << save_position()
|
46
48
|
bash << move_position(x, y)
|
@@ -49,12 +51,12 @@ module Bash_Visual
|
|
49
51
|
bash
|
50
52
|
end
|
51
53
|
|
52
|
-
def write
|
54
|
+
def write(text, font = @default_font)
|
53
55
|
font.to_bash + text + Font::RESET
|
54
56
|
end
|
55
57
|
|
56
|
-
def write_ln
|
57
|
-
font.to_bash + text
|
58
|
+
def write_ln(text, font = @default_font)
|
59
|
+
font.to_bash + text.to_s + $/ + Font::RESET
|
58
60
|
end
|
59
61
|
end
|
60
62
|
end
|
data/lib/bash-visual/console.rb
CHANGED
@@ -23,7 +23,7 @@ module Bash_Visual
|
|
23
23
|
def initialize (font = Font.new, way_outnput = OUTPUT_WITHOUT_BLOCK, builder = Builder.new)
|
24
24
|
@current_x = 0
|
25
25
|
@current_y = 0
|
26
|
-
@
|
26
|
+
@type = font
|
27
27
|
@way_output = way_outnput
|
28
28
|
@builder = builder
|
29
29
|
end
|
@@ -42,15 +42,20 @@ module Bash_Visual
|
|
42
42
|
# Записать что-то в определенной позиции, а потом вернуться на текущую
|
43
43
|
# Если необходимо сохранить позицию после записи - используйте связку
|
44
44
|
# move_position/position= и write
|
45
|
-
def write_to_position (x, y, text, font = @
|
45
|
+
def write_to_position (x, y, text, font = @type)
|
46
46
|
print @builder.write_to_position(x, y, text, font)
|
47
47
|
end
|
48
48
|
|
49
|
-
def write (text, font = @
|
49
|
+
def write (text, font = @type)
|
50
50
|
print @builder.write(text, font)
|
51
51
|
end
|
52
52
|
|
53
|
-
def write_ln (text, font = @
|
53
|
+
def write_ln (text = nil, font = @type)
|
54
|
+
if text.nil?
|
55
|
+
print $/
|
56
|
+
return
|
57
|
+
end
|
58
|
+
|
54
59
|
print @builder.write_ln(text, font)
|
55
60
|
end
|
56
61
|
|
@@ -121,7 +126,15 @@ module Bash_Visual
|
|
121
126
|
end
|
122
127
|
|
123
128
|
def font= font
|
124
|
-
@
|
129
|
+
@type = font
|
130
|
+
end
|
131
|
+
|
132
|
+
def lines
|
133
|
+
`tput lines`
|
134
|
+
end
|
135
|
+
|
136
|
+
def cols
|
137
|
+
`tput cols`
|
125
138
|
end
|
126
139
|
|
127
140
|
private
|
data/lib/bash-visual/font.rb
CHANGED
@@ -1,92 +1,122 @@
|
|
1
1
|
module Bash_Visual
|
2
2
|
class Font
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
end
|
3
|
+
|
4
|
+
COLORS = [:black, :dark_red, :dark_green, :dark_yellow, :dark_blue, :dark_magenta, :dark_cyan, :grey,
|
5
|
+
:dark_grey, :red, :green, :yellow, :blue, :magenta, :cyan, :white]
|
6
|
+
|
7
|
+
TYPES = [:std, :bold, :underline, :blink]
|
8
|
+
|
9
|
+
@@colors_map = {
|
10
|
+
black: 0,
|
11
|
+
dark_red: 1,
|
12
|
+
dark_green: 2,
|
13
|
+
dark_yellow: 3,
|
14
|
+
dark_blue: 4,
|
15
|
+
dark_magenta: 5,
|
16
|
+
dark_cyan: 6,
|
17
|
+
grey: 7,
|
18
|
+
dark_grey: 10,
|
19
|
+
red: 11,
|
20
|
+
green: 12,
|
21
|
+
yellow: 13,
|
22
|
+
blue: 14,
|
23
|
+
magenta: 15,
|
24
|
+
cyan: 16,
|
25
|
+
white: 17
|
26
|
+
}
|
27
|
+
|
28
|
+
@@types_map = {
|
29
|
+
std: 0,
|
30
|
+
bold: 1,
|
31
|
+
underline: 4,
|
32
|
+
blink: 5
|
33
|
+
}
|
34
|
+
|
35
|
+
RESET = "\e[0m"
|
36
|
+
|
37
|
+
attr_reader :types, :foreground, :background
|
38
|
+
|
39
|
+
def initialize(types = :std, foreground = :white, background = nil)
|
40
|
+
|
41
|
+
unless COLORS.include?(foreground)
|
42
|
+
raise "not found color #{foreground}"
|
44
43
|
end
|
45
44
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
45
|
+
@foreground, @background = foreground, background
|
46
|
+
|
47
|
+
@types = prepare_types types
|
48
|
+
|
49
|
+
sequence = []
|
50
|
+
@types.each do |type|
|
51
|
+
sequence << @@types_map[type]
|
52
52
|
end
|
53
53
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
54
|
+
color_index = @@colors_map[@foreground]
|
55
|
+
|
56
|
+
sequence << if color_index < 10
|
57
|
+
"3#{color_index}"
|
58
|
+
else
|
59
|
+
"9#{color_index - 10}"
|
60
|
+
end
|
61
|
+
|
62
|
+
if @background
|
63
|
+
color_index = @@colors_map[@background]
|
64
|
+
sequence << if color_index < 10
|
65
|
+
"4#{color_index}"
|
66
|
+
else
|
67
|
+
"10#{color_index - 10}"
|
68
|
+
end
|
60
69
|
end
|
61
70
|
|
62
|
-
|
63
|
-
|
64
|
-
|
71
|
+
@bash_command = "\e[#{sequence.join(';')}m"
|
72
|
+
end
|
73
|
+
|
74
|
+
|
75
|
+
# @return [Array]
|
76
|
+
def prepare_types(types)
|
77
|
+
case types
|
78
|
+
when Symbol then
|
79
|
+
[types]
|
80
|
+
when Array then
|
81
|
+
if types.size > 2
|
82
|
+
types.delete_if { |type| type == :std }
|
83
|
+
else
|
84
|
+
types
|
85
|
+
end
|
65
86
|
else
|
66
|
-
|
67
|
-
end
|
87
|
+
raise "types must be Array or Symbol"
|
68
88
|
end
|
69
|
-
|
70
89
|
end
|
71
90
|
|
72
|
-
def
|
73
|
-
|
91
|
+
def inspect
|
92
|
+
"<Font types=%s, foreground=%s, background=%s>" %
|
93
|
+
[@types, @foreground, (@background ? @background : 'nil')]
|
74
94
|
end
|
75
95
|
|
76
96
|
def to_s
|
77
|
-
@
|
97
|
+
@bash_command
|
78
98
|
end
|
79
99
|
|
100
|
+
alias to_bash to_s
|
101
|
+
|
80
102
|
class << self
|
103
|
+
|
104
|
+
# @param [Symbol] exclude_color
|
81
105
|
def rand_color (exclude_color = nil)
|
82
|
-
color = rand(
|
83
|
-
color +=
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
106
|
+
color = rand(16)
|
107
|
+
color += 2 if color > 7
|
108
|
+
|
109
|
+
if color == @@colors_map[exclude_color]
|
110
|
+
color += 1
|
111
|
+
color = 0 if color > 17
|
112
|
+
end
|
89
113
|
|
114
|
+
@@colors_map.each do |name, code|
|
115
|
+
return name if code == color
|
116
|
+
end
|
90
117
|
|
118
|
+
end
|
91
119
|
end
|
120
|
+
|
121
|
+
end
|
92
122
|
end
|
data/lib/bash-visual/scroll.rb
CHANGED
@@ -9,6 +9,20 @@ module Bash_Visual
|
|
9
9
|
|
10
10
|
attr_accessor :console
|
11
11
|
|
12
|
+
|
13
|
+
# @param [Hash] options
|
14
|
+
#
|
15
|
+
# options = {
|
16
|
+
# coordinates: [x, y],
|
17
|
+
# window_size: [width, height],
|
18
|
+
# font: Font.new
|
19
|
+
# start: Scroll::ENDING,
|
20
|
+
# adapt_size_message: true,
|
21
|
+
# prefix: -> { '>' }
|
22
|
+
# separator: '-'
|
23
|
+
# }
|
24
|
+
#
|
25
|
+
#
|
12
26
|
def initialize(options)
|
13
27
|
|
14
28
|
@x, @y = options[:coordinates]
|
@@ -32,18 +46,21 @@ module Bash_Visual
|
|
32
46
|
@is_wrap = true
|
33
47
|
@start = options[:start] ? ENDING : BEGINNING
|
34
48
|
@separator = options[:separator] ? options[:separator] : false
|
35
|
-
@
|
49
|
+
@type = options[:type] ? options[:type] : nil
|
36
50
|
|
37
51
|
@stack = []
|
38
|
-
@console = Console.new @
|
52
|
+
@console = Console.new @type, Console::OUTPUT_STRING
|
39
53
|
@mutex = Mutex.new
|
54
|
+
nil
|
40
55
|
end
|
41
56
|
|
42
57
|
def scroll(positions = 1, direction = @direction * positions)
|
43
58
|
|
44
59
|
end
|
45
60
|
|
46
|
-
|
61
|
+
# @param [String] message
|
62
|
+
# @param [Bash_Visual::Font] font
|
63
|
+
def add(message, font = @type)
|
47
64
|
|
48
65
|
if @stack.size.zero?
|
49
66
|
print @console.draw_rectangle(@x + 1, @y + 1, @area_width, @area_height, font)
|
@@ -51,13 +68,16 @@ module Bash_Visual
|
|
51
68
|
|
52
69
|
@stack << {
|
53
70
|
message: prefix() << message.to_s,
|
54
|
-
|
71
|
+
type: font
|
55
72
|
}
|
56
73
|
|
57
74
|
redraw()
|
58
75
|
#@stack.slice!(-index, index)
|
76
|
+
nil
|
59
77
|
end
|
60
78
|
|
79
|
+
|
80
|
+
# @param [Object] prefix
|
61
81
|
def prefix= (prefix)
|
62
82
|
@prefix = prefix
|
63
83
|
end
|
@@ -77,9 +97,9 @@ module Bash_Visual
|
|
77
97
|
@stack.reverse.each do |item|
|
78
98
|
|
79
99
|
message = item[:message].dup.lines.to_a
|
80
|
-
font = item[:
|
100
|
+
font = item[:type]
|
81
101
|
unless font.background
|
82
|
-
font = Font.new font.
|
102
|
+
font = Font.new font.type, font.foreground, @type.background
|
83
103
|
end
|
84
104
|
|
85
105
|
avail_area = print_message(message, font, avail_area)
|
@@ -89,7 +109,9 @@ module Bash_Visual
|
|
89
109
|
end
|
90
110
|
|
91
111
|
# сделать переносы в массиве строк
|
92
|
-
|
112
|
+
# @param [String] arr
|
113
|
+
# @param [Integer] max_len
|
114
|
+
def rows_wrap!(arr, max_len)
|
93
115
|
max_used_len = 1
|
94
116
|
arr.each_with_index do |row, i|
|
95
117
|
len = row.size
|
@@ -101,9 +123,11 @@ module Bash_Visual
|
|
101
123
|
max_used_len
|
102
124
|
end
|
103
125
|
|
104
|
-
|
105
|
-
|
106
|
-
|
126
|
+
# @param [Integer] x
|
127
|
+
# @param [Integer] y
|
128
|
+
# @param [Array] message
|
129
|
+
# @param [Bash_Visual::Font] font
|
130
|
+
def write(x, y, message, font)
|
107
131
|
string = ''
|
108
132
|
message.each_with_index { |text, i|
|
109
133
|
string << @console.write_to_position(x, y + i, text, font)
|
data/lib/bash-visual/version.rb
CHANGED
@@ -32,7 +32,7 @@ module Bash_Visual
|
|
32
32
|
end
|
33
33
|
|
34
34
|
if @separator == true
|
35
|
-
message[message.size-1] = Font.new(
|
35
|
+
message[message.size-1] = Font.new(:underline, font.foreground, font.background).to_bash +
|
36
36
|
message.last.ljust(available_area_width, ' ')
|
37
37
|
end
|
38
38
|
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
$:.unshift(File.dirname(__FILE__))
|
3
|
+
|
4
|
+
require 'helper'
|
5
|
+
|
6
|
+
class BuilderTest < Test::Unit::TestCase
|
7
|
+
|
8
|
+
def test_clear
|
9
|
+
font_mock = Bash_Visual::Font.new
|
10
|
+
font_mock.to_bash {'X'}
|
11
|
+
|
12
|
+
builder = Bash_Visual::Builder.new(font_mock)
|
13
|
+
|
14
|
+
result = builder.clear
|
15
|
+
assert_equal("\e[0;0H\e[2J", result)
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
data/test/font_test.rb
ADDED
@@ -0,0 +1,84 @@
|
|
1
|
+
$:.unshift(File.dirname(__FILE__))
|
2
|
+
|
3
|
+
require 'helper'
|
4
|
+
|
5
|
+
class FontTest < Test::Unit::TestCase
|
6
|
+
|
7
|
+
include Bash_Visual
|
8
|
+
|
9
|
+
def test_inspect
|
10
|
+
|
11
|
+
font = Font.new
|
12
|
+
|
13
|
+
expected = '<Font types=%s, foreground=%s, background=nil>' %
|
14
|
+
[font.types, font.foreground]
|
15
|
+
|
16
|
+
assert_equal(expected, font.inspect)
|
17
|
+
end
|
18
|
+
|
19
|
+
def test_font_all
|
20
|
+
font = Font.new([:underline, :bold, :blink])
|
21
|
+
expected = ["\e[1;4;5;97m", "\e[1;5;4;97m","\e[4;1;5;97m", "\e[4;5;1;97m", "\e[5;1;4;97m", "\e[5;4;1;97m"]
|
22
|
+
|
23
|
+
assert_include expected, font.to_s
|
24
|
+
end
|
25
|
+
|
26
|
+
def test_font_without_blink
|
27
|
+
font = Font.new [:underline, :bold]
|
28
|
+
|
29
|
+
expected = ["\e[4;1;97m", "\e[1;4;97m"]
|
30
|
+
assert_include expected, font.to_s
|
31
|
+
end
|
32
|
+
|
33
|
+
def test_font_underline
|
34
|
+
font = Font.new(:underline)
|
35
|
+
|
36
|
+
assert_equal "\e[4;97m", font.to_s
|
37
|
+
end
|
38
|
+
|
39
|
+
def test_font_bold
|
40
|
+
font = Font.new([:bold])
|
41
|
+
|
42
|
+
assert_equal "\e[1;97m", font.to_s
|
43
|
+
end
|
44
|
+
|
45
|
+
def test_font_foreground
|
46
|
+
font = Font.new(:std, :dark_cyan)
|
47
|
+
assert_equal "\e[0;36m", font.to_s
|
48
|
+
|
49
|
+
font = Font.new(:std, :green)
|
50
|
+
assert_equal "\e[0;92m", font.to_s
|
51
|
+
end
|
52
|
+
|
53
|
+
|
54
|
+
def test_font_background
|
55
|
+
font = Font.new(:std, :white, :dark_cyan)
|
56
|
+
assert_equal "\e[0;97;46m", font.to_s
|
57
|
+
|
58
|
+
font = Font.new(:std, :white, :green)
|
59
|
+
assert_equal "\e[0;97;102m", font.to_s
|
60
|
+
end
|
61
|
+
|
62
|
+
|
63
|
+
def test_rand_color
|
64
|
+
mock_class_method(Font, "def rand (max=0); 3; end")
|
65
|
+
color = Font::rand_color
|
66
|
+
assert_equal :dark_yellow, color
|
67
|
+
|
68
|
+
mock_class_method(Font, "def rand (max=0); 15; end")
|
69
|
+
color = Font::rand_color :white
|
70
|
+
assert_not_equal(color, :white)
|
71
|
+
|
72
|
+
end
|
73
|
+
|
74
|
+
protected
|
75
|
+
|
76
|
+
def mock_class_method(class_name, eval_string)
|
77
|
+
eigenclass = class << class_name
|
78
|
+
self
|
79
|
+
end
|
80
|
+
eigenclass.class_eval eval_string
|
81
|
+
|
82
|
+
end
|
83
|
+
|
84
|
+
end
|
data/test/helper.rb
ADDED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bash-visual
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-07-18 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: Bash visualisation tools
|
15
15
|
email:
|
@@ -20,11 +20,13 @@ extra_rdoc_files: []
|
|
20
20
|
files:
|
21
21
|
- .gitignore
|
22
22
|
- Gemfile
|
23
|
-
- Gemfile.lock
|
24
23
|
- LICENSE
|
25
24
|
- README.md
|
26
25
|
- Rakefile
|
27
26
|
- bash-visual.gemspec
|
27
|
+
- example/hello_world.rb
|
28
|
+
- example/random.rb
|
29
|
+
- example/spectrum.rb
|
28
30
|
- lib/bash-visual.rb
|
29
31
|
- lib/bash-visual/builder.rb
|
30
32
|
- lib/bash-visual/console.rb
|
@@ -33,7 +35,10 @@ files:
|
|
33
35
|
- lib/bash-visual/scroll.rb
|
34
36
|
- lib/bash-visual/version.rb
|
35
37
|
- lib/bash-visual/vertical_scroll.rb
|
36
|
-
|
38
|
+
- test/builder_test.rb
|
39
|
+
- test/font_test.rb
|
40
|
+
- test/helper.rb
|
41
|
+
homepage: https://github.com/AlmazKo/BashVisual
|
37
42
|
licenses:
|
38
43
|
- MIT
|
39
44
|
post_install_message:
|