vedeu 0.0.19 → 0.0.20
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/lib/vedeu.rb +4 -0
- data/lib/vedeu/output/compositor.rb +18 -23
- data/lib/vedeu/output/esc.rb +19 -2
- data/lib/vedeu/output/output.rb +1 -1
- data/lib/vedeu/output/style.rb +6 -0
- data/lib/vedeu/repository/command.rb +2 -0
- data/lib/vedeu/repository/interface.rb +7 -3
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/output/compositor_test.rb +128 -90
- data/test/lib/vedeu/output/esc_test.rb +48 -0
- data/test/lib/vedeu/output/output_test.rb +1 -5
- data/test/lib/vedeu/output/style_test.rb +40 -0
- data/test/lib/vedeu/repository/interface_repository_test.rb +4 -4
- data/test/lib/vedeu/repository/interface_test.rb +6 -5
- data/test/lib/vedeu/support/queue_test.rb +2 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 66de5c561798d7f28dc0aa984dd6e3017bf724ca
|
4
|
+
data.tar.gz: 5b1c164ab6fb207d0443b7d309563654c99132e8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 018e9a0652410c0f0fb70e35ee06ba1d4a76557270fd3407a95b90bb4635658d7c739fe62a09950f4b955297b0eb804dc70a60619c8a2772885774925613e892
|
7
|
+
data.tar.gz: 601298baf82a2205887b9e78dcb997270ca502697768c96d7b975cbc607ac703984c0323949156fecf048678a0a24d8df3a9a940de83f098048c861a5f2e9a35
|
data/lib/vedeu.rb
CHANGED
@@ -40,6 +40,7 @@ require_relative 'vedeu/launcher'
|
|
40
40
|
require_relative 'vedeu/version'
|
41
41
|
|
42
42
|
module Vedeu
|
43
|
+
# :nocov:
|
43
44
|
def self.logger
|
44
45
|
@logger ||= Logger.new(root_path + '/logs/vedeu.log').tap do |log|
|
45
46
|
log.formatter = proc do |_, time, _, msg|
|
@@ -47,10 +48,13 @@ module Vedeu
|
|
47
48
|
end
|
48
49
|
end
|
49
50
|
end
|
51
|
+
# :nocov:
|
50
52
|
|
51
53
|
private
|
52
54
|
|
55
|
+
# :nocov:
|
53
56
|
def self.root_path
|
54
57
|
File.expand_path('../..', __FILE__)
|
55
58
|
end
|
59
|
+
# :nocov:
|
56
60
|
end
|
@@ -3,20 +3,17 @@ module Vedeu
|
|
3
3
|
|
4
4
|
class Compositor
|
5
5
|
class << self
|
6
|
-
def arrange(output =
|
7
|
-
|
8
|
-
|
9
|
-
if output.is_a?(Array)
|
10
|
-
new(output, interface).arrange
|
11
|
-
elsif output.is_a?(Hash)
|
12
|
-
output.map { |i, o| new(o, i).arrange }
|
6
|
+
def arrange(output = {})
|
7
|
+
output.map do |interface, stream|
|
8
|
+
new({ interface: interface, stream: stream }).arrange
|
13
9
|
end
|
14
10
|
end
|
15
11
|
end
|
16
12
|
|
17
|
-
def initialize(
|
18
|
-
@
|
19
|
-
@interface
|
13
|
+
def initialize(attributes = {})
|
14
|
+
@attributes = attributes || {}
|
15
|
+
@interface = attributes[:interface]
|
16
|
+
@stream = attributes[:stream]
|
20
17
|
end
|
21
18
|
|
22
19
|
def arrange
|
@@ -25,21 +22,24 @@ module Vedeu
|
|
25
22
|
|
26
23
|
private
|
27
24
|
|
25
|
+
attr_reader :attributes, :stream
|
26
|
+
|
28
27
|
def composition
|
29
28
|
container = []
|
30
29
|
streams = []
|
31
30
|
|
32
31
|
container << colour.set
|
33
32
|
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
33
|
+
if stream.size < height
|
34
|
+
remaining = height - stream.size
|
35
|
+
remaining.times { |i| stream << [''] }
|
36
|
+
end
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
stream.each_with_index do |lines, index|
|
39
|
+
streams << clear(index)
|
40
|
+
|
41
|
+
lines.each do |data|
|
42
|
+
streams << Directive.enact(interface, data)
|
43
43
|
end
|
44
44
|
|
45
45
|
container << streams.join
|
@@ -80,11 +80,6 @@ module Vedeu
|
|
80
80
|
interface.cursor
|
81
81
|
end
|
82
82
|
|
83
|
-
def output
|
84
|
-
return @output.split if @output.is_a?(String)
|
85
|
-
@output
|
86
|
-
end
|
87
|
-
|
88
83
|
def interface
|
89
84
|
@_interface ||= InterfaceRepository.find_by_name(@interface)
|
90
85
|
end
|
data/lib/vedeu/output/esc.rb
CHANGED
@@ -6,11 +6,19 @@ module Vedeu
|
|
6
6
|
[esc, '5m'].join
|
7
7
|
end
|
8
8
|
|
9
|
+
def blink_off
|
10
|
+
[esc, '25m'].join
|
11
|
+
end
|
12
|
+
|
9
13
|
def bold
|
10
14
|
[esc, '1m'].join
|
11
15
|
end
|
12
16
|
alias_method :bright, :bold
|
13
17
|
|
18
|
+
def bold_off
|
19
|
+
[esc, '21m'].join
|
20
|
+
end
|
21
|
+
|
14
22
|
def clear
|
15
23
|
[esc, '2J'].join
|
16
24
|
end
|
@@ -23,10 +31,15 @@ module Vedeu
|
|
23
31
|
[27.chr, '['].join
|
24
32
|
end
|
25
33
|
|
26
|
-
def
|
34
|
+
def negative
|
27
35
|
[esc, '7m'].join
|
28
36
|
end
|
29
|
-
alias_method :reverse, :
|
37
|
+
alias_method :reverse, :negative
|
38
|
+
alias_method :inverse, :negative
|
39
|
+
|
40
|
+
def positive
|
41
|
+
[esc, '27m'].join
|
42
|
+
end
|
30
43
|
|
31
44
|
def normal
|
32
45
|
[esc, '2m'].join
|
@@ -40,5 +53,9 @@ module Vedeu
|
|
40
53
|
def underline
|
41
54
|
[esc, '4m'].join
|
42
55
|
end
|
56
|
+
|
57
|
+
def underline_off
|
58
|
+
[esc, '24m'].join
|
59
|
+
end
|
43
60
|
end
|
44
61
|
end
|
data/lib/vedeu/output/output.rb
CHANGED
data/lib/vedeu/output/style.rb
CHANGED
@@ -12,14 +12,20 @@ module Vedeu
|
|
12
12
|
|
13
13
|
def set
|
14
14
|
case style
|
15
|
+
when :blink then Esc.blink
|
16
|
+
when :blink_off then Esc.blink_off
|
15
17
|
when :bold then Esc.bold
|
18
|
+
when :bold_off then Esc.bold_off
|
16
19
|
when :clear then Esc.clear
|
17
20
|
when :hide_cursor then Cursor.hide
|
18
21
|
when :inverse then Esc.inverse
|
22
|
+
when :negative then Esc.negative
|
23
|
+
when :positive then Esc.positive
|
19
24
|
when :reset then Esc.reset
|
20
25
|
when :normal then Esc.reset
|
21
26
|
when :show_cursor then Cursor.show
|
22
27
|
when :underline then Esc.underline
|
28
|
+
when :underline_off then Esc.underline_off
|
23
29
|
else
|
24
30
|
''
|
25
31
|
end
|
@@ -30,6 +30,7 @@ module Vedeu
|
|
30
30
|
end
|
31
31
|
end
|
32
32
|
|
33
|
+
# :nocov:
|
33
34
|
module ClassMethods
|
34
35
|
def command(name, klass, options = {})
|
35
36
|
command_name = name.is_a?(Symbol) ? name.to_s : name
|
@@ -41,4 +42,5 @@ module Vedeu
|
|
41
42
|
def self.included(receiver)
|
42
43
|
receiver.extend(ClassMethods)
|
43
44
|
end
|
45
|
+
# :nocov:
|
44
46
|
end
|
@@ -22,13 +22,15 @@ module Vedeu
|
|
22
22
|
def create
|
23
23
|
InterfaceRepository.create(self)
|
24
24
|
|
25
|
-
Compositor.arrange(initial_state)
|
26
|
-
|
27
25
|
self
|
28
26
|
end
|
29
27
|
|
30
28
|
def update
|
31
29
|
if enqueued?
|
30
|
+
@current = dequeue
|
31
|
+
elsif @current.empty?
|
32
|
+
Compositor.arrange(initial_state)
|
33
|
+
|
32
34
|
@current = dequeue
|
33
35
|
else
|
34
36
|
@current
|
@@ -50,7 +52,7 @@ module Vedeu
|
|
50
52
|
private
|
51
53
|
|
52
54
|
def initial_state
|
53
|
-
{ name =>
|
55
|
+
{ name => Array.new(geometry.height) { [""] } }
|
54
56
|
end
|
55
57
|
|
56
58
|
def foreground
|
@@ -62,6 +64,7 @@ module Vedeu
|
|
62
64
|
end
|
63
65
|
end
|
64
66
|
|
67
|
+
# :nocov:
|
65
68
|
module ClassMethods
|
66
69
|
def interface(name, options = {})
|
67
70
|
interface_name = name.is_a?(Symbol) ? name.to_s : name
|
@@ -73,4 +76,5 @@ module Vedeu
|
|
73
76
|
def self.included(receiver)
|
74
77
|
receiver.extend(ClassMethods)
|
75
78
|
end
|
79
|
+
# :nocov:
|
76
80
|
end
|
data/lib/vedeu/version.rb
CHANGED
@@ -3,15 +3,14 @@ require_relative '../../../test_helper'
|
|
3
3
|
module Vedeu
|
4
4
|
describe Compositor do
|
5
5
|
let(:described_class) { Compositor }
|
6
|
-
let(:described_instance) { described_class.new(
|
6
|
+
let(:described_instance) { described_class.new(attributes) }
|
7
7
|
let(:subject) { described_instance }
|
8
|
-
let(:
|
9
|
-
let(:stream) { [] }
|
10
|
-
let(:
|
8
|
+
let(:attributes) { { interface: 'dummy', stream: stream } }
|
9
|
+
let(:stream) { [[]] }
|
10
|
+
let(:composition) {}
|
11
11
|
|
12
12
|
before do
|
13
13
|
Interface.create({ name: 'dummy', width: 15, height: 2 })
|
14
|
-
Interface.create({ name: 'test_interface', width: 15, height: 2 })
|
15
14
|
end
|
16
15
|
|
17
16
|
after do
|
@@ -23,34 +22,37 @@ module Vedeu
|
|
23
22
|
end
|
24
23
|
|
25
24
|
it 'sets an instance variable' do
|
26
|
-
subject.instance_variable_get('@
|
25
|
+
subject.instance_variable_get('@attributes').must_equal(attributes)
|
27
26
|
end
|
28
27
|
|
29
28
|
it 'sets an instance variable' do
|
30
|
-
subject.instance_variable_get('@interface').must_equal(
|
29
|
+
subject.instance_variable_get('@interface').must_equal(attributes[:interface])
|
31
30
|
end
|
32
31
|
|
33
|
-
|
34
|
-
|
32
|
+
it 'sets an instance variable' do
|
33
|
+
subject.instance_variable_get('@stream').must_equal(attributes[:stream])
|
34
|
+
end
|
35
35
|
|
36
|
-
|
37
|
-
|
36
|
+
describe '#arrange' do
|
37
|
+
let(:subject) { described_class.new(attributes).arrange }
|
38
38
|
|
39
|
-
|
40
|
-
|
39
|
+
context 'when empty' do
|
40
|
+
let(:stream) { [[]] }
|
41
|
+
let(:composition) {
|
42
|
+
[
|
43
|
+
[
|
44
|
+
"\e[38;2;39m\e[48;2;49m",
|
45
|
+
"\e[1;1H \e[1;1H",
|
46
|
+
"\e[2;1H \e[2;1H",
|
47
|
+
"\e[38;2;39m\e[48;2;49m",
|
48
|
+
"\e[?25h"
|
49
|
+
]
|
50
|
+
]
|
51
|
+
}
|
52
|
+
|
53
|
+
it 'returns the initial state of the interface' do
|
54
|
+
subject.must_equal(composition)
|
41
55
|
end
|
42
|
-
end
|
43
|
-
|
44
|
-
context 'when an array (single interface)' do
|
45
|
-
let(:output) { [[]] }
|
46
|
-
|
47
|
-
it 'returns an Array' do
|
48
|
-
subject.must_be_instance_of(Array)
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context 'when a hash (multiple interfaces)' do
|
53
|
-
let(:output) { { 'test_interface' => [] } }
|
54
56
|
|
55
57
|
it 'returns an Array' do
|
56
58
|
subject.must_be_instance_of(Array)
|
@@ -59,31 +61,45 @@ module Vedeu
|
|
59
61
|
|
60
62
|
context 'when unstyled' do
|
61
63
|
context 'and a single line' do
|
62
|
-
let(:
|
63
|
-
let(:
|
64
|
-
[
|
64
|
+
let(:stream) { [['Some text...']] }
|
65
|
+
let(:composition) {
|
66
|
+
[
|
67
|
+
[
|
68
|
+
"\e[38;2;39m\e[48;2;49m",
|
69
|
+
"\e[1;1H \e[1;1HSome text...",
|
70
|
+
"\e[2;1H \e[2;1H",
|
71
|
+
"\e[38;2;39m\e[48;2;49m",
|
72
|
+
"\e[?25h"
|
73
|
+
]
|
74
|
+
]
|
65
75
|
}
|
66
76
|
|
67
|
-
it 'returns the
|
68
|
-
subject.must_equal(
|
77
|
+
it 'returns the enqueued composition' do
|
78
|
+
subject.must_equal(composition)
|
69
79
|
end
|
70
80
|
end
|
71
81
|
|
72
82
|
context 'and multi-line' do
|
73
|
-
let(:output) {
|
74
|
-
{
|
75
|
-
'dummy' => [
|
76
|
-
['Some text...'],
|
77
|
-
['Some more text...']
|
78
|
-
]
|
79
|
-
}
|
80
|
-
}
|
81
83
|
let(:stream) {
|
82
|
-
[
|
84
|
+
[
|
85
|
+
['Some text...'],
|
86
|
+
['Some more text...']
|
87
|
+
]
|
88
|
+
}
|
89
|
+
let(:composition) {
|
90
|
+
[
|
91
|
+
[
|
92
|
+
"\e[38;2;39m\e[48;2;49m",
|
93
|
+
"\e[1;1H \e[1;1HSome text...",
|
94
|
+
"\e[2;1H \e[2;1HSome more tex...\e[0m",
|
95
|
+
"\e[38;2;39m\e[48;2;49m",
|
96
|
+
"\e[?25h"
|
97
|
+
]
|
98
|
+
]
|
83
99
|
}
|
84
100
|
|
85
|
-
it 'returns
|
86
|
-
subject.must_equal(
|
101
|
+
it 'returns the enqueued composition' do
|
102
|
+
subject.must_equal(composition)
|
87
103
|
end
|
88
104
|
end
|
89
105
|
end
|
@@ -91,92 +107,114 @@ module Vedeu
|
|
91
107
|
context 'when styled' do
|
92
108
|
context 'with colour pair' do
|
93
109
|
context 'and a single line' do
|
94
|
-
let(:output) {
|
95
|
-
{
|
96
|
-
'dummy' => [
|
97
|
-
[{ colour: [:red, :white] }, 'Some text...']
|
98
|
-
]
|
99
|
-
}
|
100
|
-
}
|
101
110
|
let(:stream) {
|
102
|
-
[
|
111
|
+
[
|
112
|
+
[{ colour: [:red, :white] }, 'Some text...', { colour: :default }]
|
113
|
+
]
|
114
|
+
}
|
115
|
+
let(:composition) {
|
116
|
+
[
|
117
|
+
[
|
118
|
+
"\e[38;2;39m\e[48;2;49m",
|
119
|
+
"\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47mSome text...\e[38;5;39m\e[48;5;49m",
|
120
|
+
"\e[2;1H \e[2;1H",
|
121
|
+
"\e[38;2;39m\e[48;2;49m",
|
122
|
+
"\e[?25h"
|
123
|
+
]
|
124
|
+
]
|
103
125
|
}
|
104
126
|
|
105
|
-
it 'returns
|
106
|
-
subject.must_equal(
|
127
|
+
it 'returns the enqueued composition' do
|
128
|
+
subject.must_equal(composition)
|
107
129
|
end
|
108
130
|
end
|
109
131
|
|
110
132
|
context 'and multi-line' do
|
111
|
-
let(:output) {
|
112
|
-
{
|
113
|
-
'dummy' => [
|
114
|
-
[{ colour: [:red, :white] }, 'Some text...'],
|
115
|
-
[{ colour: [:blue, :yellow] }, 'Some more text...']
|
116
|
-
]
|
117
|
-
}
|
118
|
-
}
|
119
133
|
let(:stream) {
|
120
|
-
[
|
134
|
+
[
|
135
|
+
[{ colour: [:red, :white] }, 'Some text...'],
|
136
|
+
[{ colour: [:blue, :yellow] }, 'Some more text...']
|
137
|
+
]
|
138
|
+
}
|
139
|
+
let(:composition) {
|
140
|
+
[
|
141
|
+
[
|
142
|
+
"\e[38;2;39m\e[48;2;49m",
|
143
|
+
"\e[1;1H \e[1;1H\e[38;2;31m\e[48;2;47mSome text...",
|
144
|
+
"\e[2;1H \e[2;1H\e[38;2;34m\e[48;2;43mSome more tex...\e[0m",
|
145
|
+
"\e[38;2;39m\e[48;2;49m",
|
146
|
+
"\e[?25h"
|
147
|
+
]
|
148
|
+
]
|
121
149
|
}
|
122
150
|
|
123
|
-
it 'returns
|
124
|
-
subject.must_equal(
|
151
|
+
it 'returns the enqueued composition' do
|
152
|
+
subject.must_equal(composition)
|
125
153
|
end
|
126
154
|
end
|
127
155
|
end
|
128
156
|
|
129
157
|
context 'with a style' do
|
130
158
|
context 'and a single line' do
|
131
|
-
let(:
|
132
|
-
|
133
|
-
|
134
|
-
|
159
|
+
let(:stream) { [[{ style: :bold }, 'Some text...', { style: :bold_off }]] }
|
160
|
+
let(:composition) {
|
161
|
+
[
|
162
|
+
[
|
163
|
+
"\e[38;2;39m\e[48;2;49m",
|
164
|
+
"\e[1;1H \e[1;1H\e[1mSome text...\e[21m",
|
165
|
+
"\e[2;1H \e[2;1H",
|
166
|
+
"\e[38;2;39m\e[48;2;49m",
|
167
|
+
"\e[?25h"
|
135
168
|
]
|
136
|
-
|
137
|
-
}
|
138
|
-
let(:stream) {
|
139
|
-
[[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[1m\e[2;1H \e[2;1HSome text...", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
|
169
|
+
]
|
140
170
|
}
|
141
171
|
|
142
|
-
it 'returns
|
143
|
-
subject.must_equal(
|
172
|
+
it 'returns the enqueued composition' do
|
173
|
+
subject.must_equal(composition)
|
144
174
|
end
|
145
175
|
end
|
146
176
|
|
147
177
|
context 'and multi-line' do
|
148
|
-
let(:
|
149
|
-
|
150
|
-
'dummy' => [
|
178
|
+
let(:stream) {
|
179
|
+
[
|
151
180
|
[{ style: :inverse }, 'Some text...'],
|
152
181
|
[{ style: :underline }, 'Some more text...']
|
153
182
|
]
|
154
|
-
}
|
155
183
|
}
|
156
|
-
let(:
|
157
|
-
[
|
184
|
+
let(:composition) {
|
185
|
+
[
|
186
|
+
[
|
187
|
+
"\e[38;2;39m\e[48;2;49m",
|
188
|
+
"\e[1;1H \e[1;1H\e[7mSome text...",
|
189
|
+
"\e[2;1H \e[2;1H\e[4mSome more tex...\e[0m",
|
190
|
+
"\e[38;2;39m\e[48;2;49m",
|
191
|
+
"\e[?25h"
|
192
|
+
]
|
193
|
+
]
|
158
194
|
}
|
159
195
|
|
160
|
-
it 'returns
|
161
|
-
subject.must_equal(
|
196
|
+
it 'returns the enqueued composition' do
|
197
|
+
subject.must_equal(composition)
|
162
198
|
end
|
163
199
|
end
|
164
200
|
end
|
165
201
|
|
166
202
|
context 'with an unknown style' do
|
167
|
-
let(:
|
168
|
-
|
169
|
-
|
170
|
-
|
203
|
+
let(:stream) { [[{ style: :unknown }, 'Some text...']] }
|
204
|
+
let(:composition) {
|
205
|
+
[
|
206
|
+
[
|
207
|
+
"\e[38;2;39m\e[48;2;49m",
|
208
|
+
"\e[1;1H \e[1;1HSome text...",
|
209
|
+
"\e[2;1H \e[2;1H",
|
210
|
+
"\e[38;2;39m\e[48;2;49m",
|
211
|
+
"\e[?25h"
|
171
212
|
]
|
172
|
-
|
173
|
-
}
|
174
|
-
let(:stream) {
|
175
|
-
[[["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1HSome text...", "\e[38;2;39m\e[48;2;49m", "\e[?25h"], ["\e[38;2;39m\e[48;2;49m", "\e[1;1H \e[1;1H\e[2;1H \e[2;1H", "\e[38;2;39m\e[48;2;49m", "\e[?25h"]]]
|
213
|
+
]
|
176
214
|
}
|
177
215
|
|
178
|
-
it '
|
179
|
-
subject.must_equal(
|
216
|
+
it 'returns the enqueued composition' do
|
217
|
+
subject.must_equal(composition)
|
180
218
|
end
|
181
219
|
end
|
182
220
|
end
|
@@ -16,6 +16,18 @@ module Vedeu
|
|
16
16
|
end
|
17
17
|
end
|
18
18
|
|
19
|
+
describe '.blink_off' do
|
20
|
+
let(:subject) { described_class.blink_off }
|
21
|
+
|
22
|
+
it 'returns a String' do
|
23
|
+
subject.must_be_instance_of(String)
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'returns an escape sequence' do
|
27
|
+
subject.must_equal("\e[25m")
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
19
31
|
describe '.bold' do
|
20
32
|
let(:subject) { described_class.bold }
|
21
33
|
|
@@ -28,6 +40,18 @@ module Vedeu
|
|
28
40
|
end
|
29
41
|
end
|
30
42
|
|
43
|
+
describe '.bold_off' do
|
44
|
+
let(:subject) { described_class.bold_off }
|
45
|
+
|
46
|
+
it 'returns a String' do
|
47
|
+
subject.must_be_instance_of(String)
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'returns an escape sequence' do
|
51
|
+
subject.must_equal("\e[21m")
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
31
55
|
describe '.clear' do
|
32
56
|
let(:subject) { described_class.clear }
|
33
57
|
|
@@ -76,6 +100,18 @@ module Vedeu
|
|
76
100
|
end
|
77
101
|
end
|
78
102
|
|
103
|
+
describe '.positive' do
|
104
|
+
let(:subject) { described_class.positive }
|
105
|
+
|
106
|
+
it 'returns a String' do
|
107
|
+
subject.must_be_instance_of(String)
|
108
|
+
end
|
109
|
+
|
110
|
+
it 'returns an escape sequence' do
|
111
|
+
subject.must_equal("\e[27m")
|
112
|
+
end
|
113
|
+
end
|
114
|
+
|
79
115
|
describe '.normal' do
|
80
116
|
let(:subject) { described_class.normal }
|
81
117
|
|
@@ -111,5 +147,17 @@ module Vedeu
|
|
111
147
|
subject.must_equal("\e[4m")
|
112
148
|
end
|
113
149
|
end
|
150
|
+
|
151
|
+
describe '.underline_off' do
|
152
|
+
let(:subject) { described_class.underline_off }
|
153
|
+
|
154
|
+
it 'returns a String' do
|
155
|
+
subject.must_be_instance_of(String)
|
156
|
+
end
|
157
|
+
|
158
|
+
it 'returns an escape sequence' do
|
159
|
+
subject.must_equal("\e[24m")
|
160
|
+
end
|
161
|
+
end
|
114
162
|
end
|
115
163
|
end
|
@@ -4,16 +4,12 @@ module Vedeu
|
|
4
4
|
describe Output do
|
5
5
|
let(:described_class) { Output }
|
6
6
|
let(:subject) { described_class.new }
|
7
|
-
let(:result) {}
|
8
|
-
let(:queued_result) { { 'dummy' => [['queued...']] } }
|
9
7
|
|
10
8
|
before do
|
11
9
|
Interface.create({ name: 'dummy', width: 10, height: 2, cursor: true })
|
12
10
|
end
|
13
11
|
|
14
|
-
after
|
15
|
-
InterfaceRepository.reset
|
16
|
-
end
|
12
|
+
after { InterfaceRepository.reset }
|
17
13
|
|
18
14
|
it 'returns an Output instance' do
|
19
15
|
subject.must_be_instance_of(Output)
|
@@ -16,6 +16,22 @@ module Vedeu
|
|
16
16
|
subject.must_equal('')
|
17
17
|
end
|
18
18
|
|
19
|
+
context 'when the style is blink' do
|
20
|
+
let(:style) { :blink }
|
21
|
+
|
22
|
+
it 'returns an escape sequence' do
|
23
|
+
subject.must_equal("\e[5m")
|
24
|
+
end
|
25
|
+
end
|
26
|
+
|
27
|
+
context 'when the style is blink off' do
|
28
|
+
let(:style) { :blink_off }
|
29
|
+
|
30
|
+
it 'returns an escape sequence' do
|
31
|
+
subject.must_equal("\e[25m")
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
19
35
|
context 'when the style is bold' do
|
20
36
|
let(:style) { :bold }
|
21
37
|
|
@@ -24,6 +40,14 @@ module Vedeu
|
|
24
40
|
end
|
25
41
|
end
|
26
42
|
|
43
|
+
context 'when the style is bold off' do
|
44
|
+
let(:style) { :bold_off }
|
45
|
+
|
46
|
+
it 'returns an escape sequence' do
|
47
|
+
subject.must_equal("\e[21m")
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
27
51
|
context 'when the style is clear' do
|
28
52
|
let(:style) { :clear }
|
29
53
|
|
@@ -48,6 +72,14 @@ module Vedeu
|
|
48
72
|
end
|
49
73
|
end
|
50
74
|
|
75
|
+
context 'when the style is positive' do
|
76
|
+
let(:style) { :positive }
|
77
|
+
|
78
|
+
it 'returns an escape sequence' do
|
79
|
+
subject.must_equal("\e[27m")
|
80
|
+
end
|
81
|
+
end
|
82
|
+
|
51
83
|
context 'when the style is reset' do
|
52
84
|
let(:style) { :reset }
|
53
85
|
|
@@ -79,6 +111,14 @@ module Vedeu
|
|
79
111
|
subject.must_equal("\e[4m")
|
80
112
|
end
|
81
113
|
end
|
114
|
+
|
115
|
+
context 'when the style is underline off' do
|
116
|
+
let(:style) { :underline_off }
|
117
|
+
|
118
|
+
it 'returns an escape sequence' do
|
119
|
+
subject.must_equal("\e[24m")
|
120
|
+
end
|
121
|
+
end
|
82
122
|
end
|
83
123
|
end
|
84
124
|
end
|
@@ -3,15 +3,14 @@ require_relative '../../../test_helper'
|
|
3
3
|
module Vedeu
|
4
4
|
describe InterfaceRepository do
|
5
5
|
let(:described_class) { InterfaceRepository }
|
6
|
-
let(:interface) { 'dummy' }
|
7
|
-
let(:value) { 'dummy' }
|
8
6
|
|
9
7
|
before { Interface.create({ name: 'dummy' }) }
|
10
8
|
|
11
|
-
after
|
9
|
+
after { InterfaceRepository.reset }
|
12
10
|
|
13
11
|
describe '.activate' do
|
14
|
-
let(:subject)
|
12
|
+
let(:subject) { described_class.activate(interface) }
|
13
|
+
let(:interface) { 'dummy' }
|
15
14
|
|
16
15
|
it 'returns an Array' do
|
17
16
|
subject.must_be_instance_of(Array)
|
@@ -36,6 +35,7 @@ module Vedeu
|
|
36
35
|
|
37
36
|
describe '.find_by_name' do
|
38
37
|
let(:subject) { described_class.find_by_name(value) }
|
38
|
+
let(:value) { 'dummy' }
|
39
39
|
|
40
40
|
it 'returns an Interface' do
|
41
41
|
subject.must_be_instance_of(Interface)
|
@@ -8,7 +8,7 @@ module Vedeu
|
|
8
8
|
let(:attributes) {
|
9
9
|
{
|
10
10
|
name: 'dummy',
|
11
|
-
width:
|
11
|
+
width: 10,
|
12
12
|
height: 5,
|
13
13
|
x: 1,
|
14
14
|
y: 1,
|
@@ -19,7 +19,8 @@ module Vedeu
|
|
19
19
|
}
|
20
20
|
let(:result) {}
|
21
21
|
|
22
|
-
|
22
|
+
before { Interface.create(attributes) }
|
23
|
+
after { InterfaceRepository.reset }
|
23
24
|
|
24
25
|
it 'returns an Interface instance' do
|
25
26
|
subject.must_be_instance_of(Interface)
|
@@ -48,9 +49,9 @@ module Vedeu
|
|
48
49
|
describe '#update' do
|
49
50
|
let(:subject) { described_instance.update }
|
50
51
|
|
51
|
-
it 'returns a Array' do
|
52
|
-
|
53
|
-
end
|
52
|
+
# it 'returns a Array' do
|
53
|
+
# subject.must_be_instance_of(Array)
|
54
|
+
# end
|
54
55
|
end
|
55
56
|
|
56
57
|
describe '#geometry' do
|
@@ -26,7 +26,8 @@ module Vedeu
|
|
26
26
|
describe '.enqueue' do
|
27
27
|
let(:subject) { described_class.enqueue(:result) }
|
28
28
|
|
29
|
-
|
29
|
+
before { described_class.clear }
|
30
|
+
after { described_class.clear }
|
30
31
|
|
31
32
|
it 'returns an Array' do
|
32
33
|
subject.must_be_instance_of(Array)
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vedeu
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.20
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-06-
|
11
|
+
date: 2014-06-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aruba
|