vedeu 0.0.3 → 0.0.4
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.
- checksums.yaml +4 -4
- data/.gitignore +2 -1
- data/Gemfile +0 -1
- data/Guardfile +0 -8
- data/README.md +33 -1
- data/Rakefile +0 -8
- data/bin/vedeu +9 -0
- data/lib/vedeu.rb +23 -6
- data/lib/vedeu/application.rb +47 -0
- data/lib/vedeu/interface/interface.rb +37 -0
- data/lib/vedeu/interface/interfaces.rb +49 -0
- data/lib/vedeu/output/background.rb +23 -0
- data/lib/vedeu/output/base.rb +49 -0
- data/lib/vedeu/output/colour.rb +30 -0
- data/lib/vedeu/output/compositor.rb +60 -0
- data/lib/vedeu/output/directive.rb +34 -0
- data/lib/vedeu/output/esc.rb +37 -0
- data/lib/vedeu/output/foreground.rb +23 -0
- data/lib/vedeu/output/position.rb +22 -0
- data/lib/vedeu/output/style.rb +32 -0
- data/lib/vedeu/output/translator.rb +62 -0
- data/lib/vedeu/process/command.rb +51 -0
- data/lib/vedeu/process/commands.rb +58 -0
- data/lib/vedeu/process/process.rb +31 -0
- data/lib/vedeu/support/terminal.rb +139 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/application_test.rb +18 -0
- data/test/lib/vedeu/interface/interface_test.rb +76 -0
- data/test/lib/vedeu/interface/interfaces_test.rb +63 -0
- data/test/lib/vedeu/output/background_test.rb +10 -0
- data/test/lib/vedeu/output/base_test.rb +10 -0
- data/test/lib/vedeu/output/colour_test.rb +67 -0
- data/test/lib/vedeu/output/compositor_test.rb +106 -0
- data/test/lib/vedeu/output/directive_test.rb +55 -0
- data/test/lib/vedeu/output/esc_test.rb +71 -0
- data/test/lib/vedeu/output/foreground_test.rb +10 -0
- data/test/lib/vedeu/output/position_test.rb +33 -0
- data/test/lib/vedeu/output/style_test.rb +59 -0
- data/test/lib/vedeu/output/translator_test.rb +52 -0
- data/test/lib/vedeu/process/command_test.rb +54 -0
- data/test/lib/vedeu/process/commands_test.rb +62 -0
- data/test/lib/vedeu/process/process_test.rb +11 -0
- data/test/lib/vedeu/support/terminal_test.rb +140 -0
- data/test/lib/vedeu/version_test.rb +9 -0
- data/test/support/test_app/bin/testapp +32 -0
- data/test/test_helper.rb +4 -0
- data/vedeu.gemspec +0 -6
- metadata +60 -99
- data/.rubocop.yml +0 -2
- data/features/.gitkeep +0 -0
- data/lib/vedeu/buffer.rb +0 -106
- data/lib/vedeu/colour.rb +0 -98
- data/lib/vedeu/terminal.rb +0 -25
- data/test/lib/vedeu/buffer_test.rb +0 -114
- data/test/lib/vedeu/colour_test.rb +0 -57
- data/test/lib/vedeu/terminal_test.rb +0 -30
data/lib/vedeu/terminal.rb
DELETED
@@ -1,25 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
class Terminal
|
3
|
-
def width
|
4
|
-
size[1]
|
5
|
-
end
|
6
|
-
|
7
|
-
def height
|
8
|
-
size[0]
|
9
|
-
end
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def size
|
14
|
-
IO.console.winsize
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def self.test_Vedue__Terminal(klass = Vedeu::Terminal)
|
19
|
-
terminal = klass.new
|
20
|
-
|
21
|
-
puts "Width: #{terminal.width}"
|
22
|
-
puts "Height: #{terminal.height}"
|
23
|
-
puts
|
24
|
-
end
|
25
|
-
end
|
@@ -1,114 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe Buffer do
|
5
|
-
let(:klass) { Buffer }
|
6
|
-
let(:options) { { width: 4, height: 3 } }
|
7
|
-
let(:instance){ klass.new(options) }
|
8
|
-
|
9
|
-
it 'returns an instance of self' do
|
10
|
-
instance.must_be_instance_of(Vedeu::Buffer)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '#contents' do
|
14
|
-
subject { capture_io { instance.contents }.join }
|
15
|
-
|
16
|
-
it 'returns the contents of the buffer' do
|
17
|
-
subject.must_equal("
|
18
|
-
' '' '' '' '
|
19
|
-
' '' '' '' '
|
20
|
-
' '' '' '' '
|
21
|
-
")
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
describe '#cell' do
|
26
|
-
let(:y) { 1 }
|
27
|
-
let(:x) { 2 }
|
28
|
-
|
29
|
-
subject { instance.cell(y, x) }
|
30
|
-
|
31
|
-
context 'when the reference is in range' do
|
32
|
-
it 'returns the value at that location' do
|
33
|
-
subject.must_equal(' ')
|
34
|
-
end
|
35
|
-
end
|
36
|
-
|
37
|
-
context 'when the reference is out of range' do
|
38
|
-
let(:y) { 4 }
|
39
|
-
|
40
|
-
it 'raises an exception' do
|
41
|
-
proc { subject }.must_raise(OutOfRangeError)
|
42
|
-
end
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
describe '#set_cell' do
|
47
|
-
let(:y) { 1 }
|
48
|
-
let(:x) { 2 }
|
49
|
-
let(:v) { '*' }
|
50
|
-
|
51
|
-
subject { instance.set_cell(y, x, v) }
|
52
|
-
|
53
|
-
context 'when the reference is in range' do
|
54
|
-
it 'returns the value at that location' do
|
55
|
-
subject.must_equal('*')
|
56
|
-
end
|
57
|
-
|
58
|
-
it 'updates just that cell' do
|
59
|
-
subject
|
60
|
-
capture_io { instance.contents }.join.must_equal("
|
61
|
-
' '' '' '' '
|
62
|
-
' '' ''*'' '
|
63
|
-
' '' '' '' '
|
64
|
-
")
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
|
-
context 'when the reference is out of range' do
|
69
|
-
end
|
70
|
-
end
|
71
|
-
|
72
|
-
describe '#set_row' do
|
73
|
-
let(:y) { 1 }
|
74
|
-
let(:v) { '****' }
|
75
|
-
let(:instance) { klass.new(options) }
|
76
|
-
|
77
|
-
subject { instance.set_row(y, v) }
|
78
|
-
|
79
|
-
it 'sets the row' do
|
80
|
-
subject.must_equal(['*', '*', '*', '*'])
|
81
|
-
end
|
82
|
-
|
83
|
-
it 'updates just that row' do
|
84
|
-
subject
|
85
|
-
capture_io { instance.contents }.join.must_equal("
|
86
|
-
' '' '' '' '
|
87
|
-
'*''*''*''*'
|
88
|
-
' '' '' '' '
|
89
|
-
")
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
describe '#set_column' do
|
94
|
-
let(:x) { 2 }
|
95
|
-
let(:v) { '***' }
|
96
|
-
let(:instance) { klass.new(options) }
|
97
|
-
|
98
|
-
subject { instance.set_column(x, v) }
|
99
|
-
|
100
|
-
it 'sets the row' do
|
101
|
-
subject.must_equal(['*', '*', '*'])
|
102
|
-
end
|
103
|
-
|
104
|
-
it 'updates just that column' do
|
105
|
-
subject
|
106
|
-
capture_io { instance.contents }.join.must_equal("
|
107
|
-
' '' ''*'' '
|
108
|
-
' '' ''*'' '
|
109
|
-
' '' ''*'' '
|
110
|
-
")
|
111
|
-
end
|
112
|
-
end
|
113
|
-
end
|
114
|
-
end
|
@@ -1,57 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe Colour do
|
5
|
-
let(:klass) { Colour }
|
6
|
-
let(:instance) { klass.new }
|
7
|
-
let(:pair) { [] }
|
8
|
-
|
9
|
-
it 'returns an instance of self' do
|
10
|
-
instance.must_be_instance_of(Vedeu::Colour)
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '.set' do
|
14
|
-
subject { klass.set(pair) }
|
15
|
-
|
16
|
-
context 'when both the foreground and background is specified' do
|
17
|
-
let(:pair) { [:red, :yellow] }
|
18
|
-
|
19
|
-
it 'returns the code for red on yellow' do
|
20
|
-
subject.must_equal("\e[31;43m")
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
context 'when a foreground is specified' do
|
25
|
-
let(:pair) { [:blue] }
|
26
|
-
|
27
|
-
it 'returns the code for blue on default' do
|
28
|
-
subject.must_equal("\e[34;49m")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
context 'when a background is specified' do
|
33
|
-
let(:pair) { [nil, :cyan] }
|
34
|
-
|
35
|
-
it 'returns the code for default with cyan background' do
|
36
|
-
subject.must_equal("\e[39;46m")
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
context 'when an invalid foreground/background is specified' do
|
41
|
-
let(:pair) { [:melon, :raspberry] }
|
42
|
-
|
43
|
-
it 'returns the default code' do
|
44
|
-
subject.must_equal("\e[39;49m")
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
context 'when no foreground/background is specified' do
|
49
|
-
let(:pair) { [] }
|
50
|
-
|
51
|
-
it 'returns the reset code' do
|
52
|
-
subject.must_equal("\e[0m")
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|
56
|
-
end
|
57
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
require_relative '../../test_helper'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
describe Terminal do
|
5
|
-
let(:klass) { Terminal }
|
6
|
-
let(:instance) { klass.new }
|
7
|
-
let(:console) { stub }
|
8
|
-
|
9
|
-
before do
|
10
|
-
IO.stubs(:console).returns(console)
|
11
|
-
console.stubs(:winsize).returns([25, 80])
|
12
|
-
end
|
13
|
-
|
14
|
-
it 'returns an instance of self' do
|
15
|
-
instance.must_be_instance_of(Vedeu::Terminal)
|
16
|
-
end
|
17
|
-
|
18
|
-
describe '#width' do
|
19
|
-
it 'returns the width of the terminal' do
|
20
|
-
instance.width.must_equal(80)
|
21
|
-
end
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '#height' do
|
25
|
-
it 'returns the height of the terminal' do
|
26
|
-
instance.height.must_equal(25)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|