vedeu 0.3.1 → 0.3.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.
- checksums.yaml +4 -4
- data/examples/borders_app.rb +15 -14
- data/examples/colours_app.rb +1 -2
- data/examples/cursor_app.rb +2 -5
- data/examples/geometry_app.rb +141 -0
- data/lib/vedeu.rb +0 -17
- data/lib/vedeu/api.rb +18 -3
- data/lib/vedeu/buffers/all.rb +0 -6
- data/lib/vedeu/buffers/buffer.rb +5 -2
- data/lib/vedeu/cursor/all.rb +0 -13
- data/lib/vedeu/cursor/cursor.rb +1 -1
- data/lib/vedeu/dsl/components/border.rb +94 -12
- data/lib/vedeu/dsl/components/geometry.rb +40 -48
- data/lib/vedeu/dsl/components/keymap.rb +36 -0
- data/lib/vedeu/dsl/interface.rb +20 -5
- data/lib/vedeu/dsl/stream.rb +2 -0
- data/lib/vedeu/events/all.rb +0 -5
- data/lib/vedeu/events/event.rb +2 -1
- data/lib/vedeu/events/trigger.rb +1 -3
- data/lib/vedeu/input/all.rb +7 -12
- data/lib/vedeu/input/keymap.rb +10 -34
- data/lib/vedeu/input/keys.rb +1 -0
- data/lib/vedeu/input/mapper.rb +1 -5
- data/lib/vedeu/models/collection.rb +4 -0
- data/lib/vedeu/models/geometry.rb +2 -1
- data/lib/vedeu/models/model.rb +4 -0
- data/lib/vedeu/models/view/char.rb +10 -0
- data/lib/vedeu/models/view/chars.rb +3 -2
- data/lib/vedeu/models/view/interface.rb +18 -28
- data/lib/vedeu/models/view/interfaces.rb +3 -2
- data/lib/vedeu/models/view/lines.rb +3 -2
- data/lib/vedeu/models/view/stream.rb +1 -1
- data/lib/vedeu/models/view/streams.rb +3 -2
- data/lib/vedeu/output/border.rb +29 -21
- data/lib/vedeu/output/compositor.rb +2 -3
- data/lib/vedeu/output/output.rb +5 -1
- data/lib/vedeu/output/viewport.rb +45 -24
- data/lib/vedeu/output/wordwrap.rb +7 -1
- data/lib/vedeu/output/writer.rb +3 -0
- data/lib/vedeu/presentation/presentation.rb +2 -0
- data/lib/vedeu/repositories/all.rb +107 -1
- data/lib/vedeu/repositories/repository.rb +4 -0
- data/lib/vedeu/support/bounding_area.rb +1 -1
- data/lib/vedeu/support/position_validator.rb +18 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +8 -8
- data/test/lib/vedeu/cursor/move_cursor_test.rb +3 -6
- data/test/lib/vedeu/dsl/components/border_test.rb +53 -4
- data/test/lib/vedeu/dsl/components/geometry_test.rb +0 -24
- data/test/lib/vedeu/dsl/interface_test.rb +11 -3
- data/test/lib/vedeu/events/event_test.rb +2 -2
- data/test/lib/vedeu/models/view/interface_test.rb +1 -25
- data/test/lib/vedeu/models/view/stream_test.rb +8 -0
- data/test/lib/vedeu/output/border_test.rb +159 -81
- data/test/lib/vedeu/output/output_test.rb +1 -2
- data/test/lib/vedeu/output/viewport_test.rb +3 -10
- data/test/lib/vedeu/repositories/all_test.rb +128 -0
- data/test/lib/vedeu/support/content_geometry_test.rb +1 -2
- data/vedeu.gemspec +1 -1
- metadata +3 -13
- data/lib/vedeu/repositories/menus.rb +0 -13
- data/test/lib/vedeu/buffers/all_test.rb +0 -11
- data/test/lib/vedeu/cursor/all_test.rb +0 -33
- data/test/lib/vedeu/events/all_test.rb +0 -11
- data/test/lib/vedeu/input/all_test.rb +0 -11
- data/test/lib/vedeu/repositories/menus_test.rb +0 -15
@@ -74,30 +74,6 @@ module Vedeu
|
|
74
74
|
end
|
75
75
|
end
|
76
76
|
|
77
|
-
describe '#name' do
|
78
|
-
subject { Vedeu::Geometry.build({}) { name 'chlorine' } }
|
79
|
-
|
80
|
-
it 'sets the attribute to the value' do
|
81
|
-
subject.name.must_equal('chlorine')
|
82
|
-
end
|
83
|
-
|
84
|
-
context 'DSL #name' do
|
85
|
-
subject {
|
86
|
-
Vedeu.interface 'geometry' do
|
87
|
-
geometry do
|
88
|
-
name 'other_name'
|
89
|
-
end
|
90
|
-
end
|
91
|
-
}
|
92
|
-
|
93
|
-
it { subject.must_be_instance_of(Vedeu::Interface) }
|
94
|
-
|
95
|
-
it 'allows the use of name within geometry' do
|
96
|
-
subject.geometry.name.must_equal('other_name')
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
77
|
describe '#width' do
|
102
78
|
subject { Vedeu::Geometry.build({}) { width 25 } }
|
103
79
|
|
@@ -9,8 +9,8 @@ module Vedeu
|
|
9
9
|
let(:described) { Vedeu::DSL::Interface }
|
10
10
|
let(:instance) { described.new(model) }
|
11
11
|
let(:model) {
|
12
|
-
Vedeu
|
13
|
-
|
12
|
+
Vedeu.interface 'actinium' do
|
13
|
+
# ...
|
14
14
|
end
|
15
15
|
}
|
16
16
|
let(:client) {}
|
@@ -301,9 +301,17 @@ module Vedeu
|
|
301
301
|
end
|
302
302
|
|
303
303
|
describe '#group' do
|
304
|
-
|
304
|
+
let(:value) { 'elements' }
|
305
|
+
|
306
|
+
subject { instance.group(value) }
|
305
307
|
|
306
308
|
it { subject.must_be_instance_of(String) }
|
309
|
+
|
310
|
+
context 'when the value is empty or nil' do
|
311
|
+
let(:value) { '' }
|
312
|
+
|
313
|
+
it { subject.must_equal(false) }
|
314
|
+
end
|
307
315
|
end
|
308
316
|
|
309
317
|
describe '#keys' do
|
@@ -45,11 +45,11 @@ module Vedeu
|
|
45
45
|
|
46
46
|
describe '#trigger' do
|
47
47
|
it 'returns the result of calling the closure when debouncing' do
|
48
|
-
event = Event.new(event_name, { debounce: 0.
|
48
|
+
event = Event.new(event_name, { debounce: 0.002 }, closure)
|
49
49
|
event.trigger.must_equal(nil)
|
50
50
|
sleep 0.001
|
51
51
|
event.trigger.must_equal(nil)
|
52
|
-
sleep 0.
|
52
|
+
sleep 0.0015
|
53
53
|
event.trigger.must_equal(:event_triggered)
|
54
54
|
sleep 0.001
|
55
55
|
event.trigger.must_equal(nil)
|
@@ -31,7 +31,7 @@ module Vedeu
|
|
31
31
|
subject { instance.border? }
|
32
32
|
|
33
33
|
context 'when the interface has a border' do
|
34
|
-
before {
|
34
|
+
before { Vedeu.borders.stubs(:registered?).with(_name).returns(true) }
|
35
35
|
|
36
36
|
it { subject.must_equal(true) }
|
37
37
|
end
|
@@ -61,23 +61,6 @@ module Vedeu
|
|
61
61
|
it { subject.must_be_instance_of(Vedeu::Cursor) }
|
62
62
|
end
|
63
63
|
|
64
|
-
# TODO: when the interface does not have any geometry defined?
|
65
|
-
# describe '#render' do
|
66
|
-
# subject { instance.render }
|
67
|
-
|
68
|
-
# context 'when the interface has a border' do
|
69
|
-
# let(:border) { Vedeu::Border.new(instance, { enabled: true }) }
|
70
|
-
|
71
|
-
# before { instance.stubs(:border).returns(border) }
|
72
|
-
|
73
|
-
# it { skip }
|
74
|
-
# end
|
75
|
-
|
76
|
-
# context 'when the interface does not have a border' do
|
77
|
-
# it { skip }
|
78
|
-
# end
|
79
|
-
# end
|
80
|
-
|
81
64
|
describe '#inspect' do
|
82
65
|
subject { instance.inspect }
|
83
66
|
|
@@ -116,13 +99,6 @@ module Vedeu
|
|
116
99
|
# end
|
117
100
|
end
|
118
101
|
|
119
|
-
# TODO: when the interface does not have any geometry defined?
|
120
|
-
describe '#viewport' do
|
121
|
-
subject { instance.viewport }
|
122
|
-
|
123
|
-
# it { skip }
|
124
|
-
end
|
125
|
-
|
126
102
|
end # Interface
|
127
103
|
|
128
104
|
end # Vedeu
|
@@ -29,6 +29,14 @@ module Vedeu
|
|
29
29
|
it { subject.instance_variable_get('@style').must_equal(style) }
|
30
30
|
end
|
31
31
|
|
32
|
+
describe '#add' do
|
33
|
+
let(:child) { instance }
|
34
|
+
|
35
|
+
subject { instance.add(child) }
|
36
|
+
|
37
|
+
it { subject.must_be_instance_of(Vedeu::Streams) }
|
38
|
+
end
|
39
|
+
|
32
40
|
describe '#chars' do
|
33
41
|
subject { instance.chars }
|
34
42
|
|
@@ -5,28 +5,29 @@ module Vedeu
|
|
5
5
|
describe Border do
|
6
6
|
|
7
7
|
let(:described) { Vedeu::Border }
|
8
|
-
let(:instance) { described.new(
|
9
|
-
|
10
|
-
|
11
|
-
|
8
|
+
let(:instance) { described.new(attributes) }
|
9
|
+
let(:attributes) {
|
10
|
+
{
|
11
|
+
name: 'borders'
|
12
|
+
}
|
13
|
+
}
|
14
|
+
|
15
|
+
before do
|
16
|
+
Vedeu.interfaces.reset
|
17
|
+
Vedeu.interface 'borders' do
|
12
18
|
geometry do
|
13
19
|
height 5
|
14
20
|
width 8
|
15
21
|
end
|
16
|
-
|
22
|
+
lines do
|
23
|
+
line 'Beryllium'
|
24
|
+
line 'Magnesium'
|
25
|
+
line 'Plutonium'
|
26
|
+
line 'Potassium'
|
27
|
+
line 'Lanthanum'
|
28
|
+
line 'Strontium'
|
29
|
+
end
|
17
30
|
end
|
18
|
-
}
|
19
|
-
let(:attributes) { {} }
|
20
|
-
|
21
|
-
before do
|
22
|
-
interface.lines = [
|
23
|
-
Line.new([Stream.new('Beryllium')]),
|
24
|
-
Line.new([Stream.new('Magnesium')]),
|
25
|
-
Line.new([Stream.new('Plutonium')]),
|
26
|
-
Line.new([Stream.new('Potassium')]),
|
27
|
-
Line.new([Stream.new('Lanthanum')]),
|
28
|
-
Line.new([Stream.new('Strontium')])
|
29
|
-
]
|
30
31
|
end
|
31
32
|
|
32
33
|
describe '.build' do
|
@@ -42,26 +43,29 @@ module Vedeu
|
|
42
43
|
describe '#initialize' do
|
43
44
|
subject { instance }
|
44
45
|
|
45
|
-
it { subject.must_be_instance_of(
|
46
|
-
it { subject.instance_variable_get('@interface').must_equal(interface) }
|
46
|
+
it { subject.must_be_instance_of(described) }
|
47
47
|
it { subject.instance_variable_get('@attributes').must_equal(
|
48
48
|
{
|
49
|
+
bottom_left: 'm',
|
50
|
+
bottom_right: 'j',
|
51
|
+
colour: {},
|
49
52
|
enabled: false,
|
53
|
+
horizontal: 'q',
|
54
|
+
name: 'borders',
|
50
55
|
show_bottom: true,
|
51
56
|
show_left: true,
|
52
57
|
show_right: true,
|
53
58
|
show_top: true,
|
54
|
-
bottom_right: 'j',
|
55
|
-
top_right: 'k',
|
56
|
-
top_left: 'l',
|
57
|
-
bottom_left: 'm',
|
58
|
-
horizontal: 'q',
|
59
|
-
colour: {},
|
60
59
|
style: [],
|
60
|
+
top_left: 'l',
|
61
|
+
top_right: 'k',
|
61
62
|
vertical: 'x',
|
62
|
-
interface: nil,
|
63
63
|
})
|
64
64
|
}
|
65
|
+
it { subject.instance_variable_get('@colour').must_be_instance_of(Vedeu::Colour) }
|
66
|
+
it { subject.instance_variable_get('@name').must_equal('borders') }
|
67
|
+
it { subject.instance_variable_get('@repository').must_be_instance_of(Vedeu::Borders) }
|
68
|
+
it { subject.instance_variable_get('@style').must_be_instance_of(Vedeu::Style) }
|
65
69
|
end
|
66
70
|
|
67
71
|
describe '#width' do
|
@@ -75,19 +79,37 @@ module Vedeu
|
|
75
79
|
|
76
80
|
context 'when the border is enabled' do
|
77
81
|
context 'when both left and right borders are shown' do
|
78
|
-
let(:attributes) {
|
82
|
+
let(:attributes) {
|
83
|
+
{
|
84
|
+
enabled: true,
|
85
|
+
name: 'borders',
|
86
|
+
}
|
87
|
+
}
|
79
88
|
|
80
89
|
it { subject.must_equal(6) }
|
81
90
|
end
|
82
91
|
|
83
92
|
context 'when either the left or right border is shown' do
|
84
|
-
let(:attributes) {
|
93
|
+
let(:attributes) {
|
94
|
+
{
|
95
|
+
enabled: true,
|
96
|
+
name: 'borders',
|
97
|
+
show_left: false
|
98
|
+
}
|
99
|
+
}
|
85
100
|
|
86
101
|
it { subject.must_equal(7) }
|
87
102
|
end
|
88
103
|
|
89
104
|
context 'when neither left nor right borders are shown' do
|
90
|
-
let(:attributes) {
|
105
|
+
let(:attributes) {
|
106
|
+
{
|
107
|
+
enabled: true,
|
108
|
+
name: 'borders',
|
109
|
+
show_left: false,
|
110
|
+
show_right: false
|
111
|
+
}
|
112
|
+
}
|
91
113
|
|
92
114
|
it { subject.must_equal(8) }
|
93
115
|
end
|
@@ -105,19 +127,37 @@ module Vedeu
|
|
105
127
|
|
106
128
|
context 'when the border is enabled' do
|
107
129
|
context 'when both top and bottom borders are shown' do
|
108
|
-
let(:attributes) {
|
130
|
+
let(:attributes) {
|
131
|
+
{
|
132
|
+
enabled: true,
|
133
|
+
name: 'borders',
|
134
|
+
}
|
135
|
+
}
|
109
136
|
|
110
137
|
it { subject.must_equal(3) }
|
111
138
|
end
|
112
139
|
|
113
140
|
context 'when either the top or bottom border is shown' do
|
114
|
-
let(:attributes) {
|
141
|
+
let(:attributes) {
|
142
|
+
{
|
143
|
+
enabled: true,
|
144
|
+
name: 'borders',
|
145
|
+
show_top: false
|
146
|
+
}
|
147
|
+
}
|
115
148
|
|
116
149
|
it { subject.must_equal(4) }
|
117
150
|
end
|
118
151
|
|
119
152
|
context 'when neither top nor bottom borders are shown' do
|
120
|
-
let(:attributes) {
|
153
|
+
let(:attributes) {
|
154
|
+
{
|
155
|
+
enabled: true,
|
156
|
+
name: 'borders',
|
157
|
+
show_top: false,
|
158
|
+
show_bottom: false
|
159
|
+
}
|
160
|
+
}
|
121
161
|
|
122
162
|
it { subject.must_equal(5) }
|
123
163
|
end
|
@@ -146,7 +186,12 @@ module Vedeu
|
|
146
186
|
it { subject.must_be_instance_of(FalseClass) }
|
147
187
|
|
148
188
|
context 'when true' do
|
149
|
-
let(:attributes) {
|
189
|
+
let(:attributes) {
|
190
|
+
{
|
191
|
+
enabled: true,
|
192
|
+
name: 'borders',
|
193
|
+
}
|
194
|
+
}
|
150
195
|
|
151
196
|
it { subject.must_be_instance_of(TrueClass) }
|
152
197
|
end
|
@@ -158,7 +203,13 @@ module Vedeu
|
|
158
203
|
it { subject.must_be_instance_of(TrueClass) }
|
159
204
|
|
160
205
|
context 'when false' do
|
161
|
-
let(:attributes) {
|
206
|
+
let(:attributes) {
|
207
|
+
{
|
208
|
+
enabled: true,
|
209
|
+
name: 'borders',
|
210
|
+
show_bottom: false,
|
211
|
+
}
|
212
|
+
}
|
162
213
|
|
163
214
|
it { subject.must_be_instance_of(FalseClass) }
|
164
215
|
end
|
@@ -170,7 +221,13 @@ module Vedeu
|
|
170
221
|
it { subject.must_be_instance_of(TrueClass) }
|
171
222
|
|
172
223
|
context 'when false' do
|
173
|
-
let(:attributes) {
|
224
|
+
let(:attributes) {
|
225
|
+
{
|
226
|
+
enabled: true,
|
227
|
+
name: 'borders',
|
228
|
+
show_left: false,
|
229
|
+
}
|
230
|
+
}
|
174
231
|
|
175
232
|
it { subject.must_be_instance_of(FalseClass) }
|
176
233
|
end
|
@@ -182,7 +239,13 @@ module Vedeu
|
|
182
239
|
it { subject.must_be_instance_of(TrueClass) }
|
183
240
|
|
184
241
|
context 'when false' do
|
185
|
-
let(:attributes) {
|
242
|
+
let(:attributes) {
|
243
|
+
{
|
244
|
+
enabled: true,
|
245
|
+
name: 'borders',
|
246
|
+
show_right: false,
|
247
|
+
}
|
248
|
+
}
|
186
249
|
|
187
250
|
it { subject.must_be_instance_of(FalseClass) }
|
188
251
|
end
|
@@ -194,7 +257,13 @@ module Vedeu
|
|
194
257
|
it { subject.must_be_instance_of(TrueClass) }
|
195
258
|
|
196
259
|
context 'when false' do
|
197
|
-
let(:attributes) {
|
260
|
+
let(:attributes) {
|
261
|
+
{
|
262
|
+
enabled: true,
|
263
|
+
name: 'borders',
|
264
|
+
show_top: false,
|
265
|
+
}
|
266
|
+
}
|
198
267
|
|
199
268
|
it { subject.must_be_instance_of(FalseClass) }
|
200
269
|
end
|
@@ -204,9 +273,11 @@ module Vedeu
|
|
204
273
|
subject { instance.to_s }
|
205
274
|
|
206
275
|
context 'when all borders should be shown' do
|
207
|
-
|
208
|
-
|
209
|
-
|
276
|
+
before do
|
277
|
+
Vedeu.border 'borders' do
|
278
|
+
# ...
|
279
|
+
end
|
280
|
+
end
|
210
281
|
|
211
282
|
it 'returns the escape sequences to draw a border' do
|
212
283
|
subject.must_equal(
|
@@ -220,13 +291,14 @@ module Vedeu
|
|
220
291
|
end
|
221
292
|
|
222
293
|
context 'when no borders are shown' do
|
223
|
-
|
224
|
-
|
225
|
-
show_bottom
|
226
|
-
show_left
|
227
|
-
show_right
|
228
|
-
show_top
|
229
|
-
|
294
|
+
before do
|
295
|
+
Vedeu.border 'borders' do
|
296
|
+
show_bottom false
|
297
|
+
show_left false
|
298
|
+
show_right false
|
299
|
+
show_top false
|
300
|
+
end
|
301
|
+
end
|
230
302
|
|
231
303
|
it 'returns the escape sequences to draw a border' do
|
232
304
|
subject.must_equal(
|
@@ -240,11 +312,12 @@ module Vedeu
|
|
240
312
|
end
|
241
313
|
|
242
314
|
context 'when the left and right border is not shown' do
|
243
|
-
|
244
|
-
|
245
|
-
show_left
|
246
|
-
show_right
|
247
|
-
|
315
|
+
before do
|
316
|
+
Vedeu.border 'borders' do
|
317
|
+
show_left false
|
318
|
+
show_right false
|
319
|
+
end
|
320
|
+
end
|
248
321
|
|
249
322
|
it 'returns the escape sequences to draw a border' do
|
250
323
|
subject.must_equal(
|
@@ -258,11 +331,12 @@ module Vedeu
|
|
258
331
|
end
|
259
332
|
|
260
333
|
context 'when the top and bottom border is not shown' do
|
261
|
-
|
262
|
-
|
263
|
-
show_bottom
|
264
|
-
show_top
|
265
|
-
|
334
|
+
before do
|
335
|
+
Vedeu.border 'borders' do
|
336
|
+
show_bottom false
|
337
|
+
show_top false
|
338
|
+
end
|
339
|
+
end
|
266
340
|
|
267
341
|
it 'returns the escape sequences to draw a border' do
|
268
342
|
subject.must_equal(
|
@@ -276,12 +350,13 @@ module Vedeu
|
|
276
350
|
end
|
277
351
|
|
278
352
|
context 'when the left border is shown, all others not shown' do
|
279
|
-
|
280
|
-
|
281
|
-
show_bottom
|
282
|
-
show_right
|
283
|
-
show_top
|
284
|
-
|
353
|
+
before do
|
354
|
+
Vedeu.border 'borders' do
|
355
|
+
show_bottom false
|
356
|
+
show_right false
|
357
|
+
show_top false
|
358
|
+
end
|
359
|
+
end
|
285
360
|
|
286
361
|
it 'returns the escape sequences to draw a border' do
|
287
362
|
subject.must_equal(
|
@@ -295,12 +370,13 @@ module Vedeu
|
|
295
370
|
end
|
296
371
|
|
297
372
|
context 'when the right border is shown, all others not shown' do
|
298
|
-
|
299
|
-
|
300
|
-
show_bottom
|
301
|
-
show_left
|
302
|
-
show_top
|
303
|
-
|
373
|
+
before do
|
374
|
+
Vedeu.border 'borders' do
|
375
|
+
show_bottom false
|
376
|
+
show_left false
|
377
|
+
show_top false
|
378
|
+
end
|
379
|
+
end
|
304
380
|
|
305
381
|
it 'returns the escape sequences to draw a border' do
|
306
382
|
subject.must_equal(
|
@@ -314,12 +390,13 @@ module Vedeu
|
|
314
390
|
end
|
315
391
|
|
316
392
|
context 'when the top border is shown, all others not shown' do
|
317
|
-
|
318
|
-
|
319
|
-
show_bottom
|
320
|
-
show_left
|
321
|
-
show_right
|
322
|
-
|
393
|
+
before do
|
394
|
+
Vedeu.border 'borders' do
|
395
|
+
show_bottom false
|
396
|
+
show_left false
|
397
|
+
show_right false
|
398
|
+
end
|
399
|
+
end
|
323
400
|
|
324
401
|
it 'returns the escape sequences to draw a border' do
|
325
402
|
subject.must_equal(
|
@@ -333,12 +410,13 @@ module Vedeu
|
|
333
410
|
end
|
334
411
|
|
335
412
|
context 'when the bottom border is shown, all others not shown' do
|
336
|
-
|
337
|
-
|
338
|
-
show_left
|
339
|
-
show_right
|
340
|
-
show_top
|
341
|
-
|
413
|
+
before do
|
414
|
+
Vedeu.border 'borders' do
|
415
|
+
show_left false
|
416
|
+
show_right false
|
417
|
+
show_top false
|
418
|
+
end
|
419
|
+
end
|
342
420
|
|
343
421
|
it 'returns the escape sequences to draw a border' do
|
344
422
|
subject.must_equal(
|