vedeu 0.0.38 → 0.0.39
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/deps.md +24 -11
- data/lib/vedeu/input/input.rb +2 -2
- data/lib/vedeu/launcher.rb +2 -0
- data/lib/vedeu/models/builders/builder.rb +41 -0
- data/lib/vedeu/models/builders/command_builder.rb +4 -25
- data/lib/vedeu/models/builders/interface_builder.rb +6 -26
- data/lib/vedeu/models/interface.rb +2 -2
- data/lib/vedeu/output/clear_interface.rb +10 -2
- data/lib/vedeu/parsing/text_adaptor.rb +7 -3
- data/lib/vedeu/repository/command_repository.rb +6 -6
- data/lib/vedeu/repository/interface_repository.rb +2 -18
- data/lib/vedeu/repository/repository.rb +25 -9
- data/lib/vedeu/repository/storage.rb +15 -20
- data/lib/vedeu/support/events.rb +58 -0
- data/lib/vedeu/support/exit.rb +2 -2
- data/lib/vedeu/support/{coordinate.rb → geometry.rb} +1 -1
- data/lib/vedeu/support/menu.rb +34 -6
- data/lib/vedeu/support/terminal.rb +1 -1
- data/lib/vedeu/support/translator.rb +2 -1
- data/lib/vedeu.rb +21 -7
- data/test/lib/vedeu/models/builders/builder_test.rb +11 -0
- data/test/lib/vedeu/models/interface_test.rb +3 -3
- data/test/lib/vedeu/parsing/text_adaptor_test.rb +24 -0
- data/test/lib/vedeu/repository/command_repository_test.rb +3 -11
- data/test/lib/vedeu/repository/interface_repository_test.rb +0 -23
- data/test/lib/vedeu/repository/repository_test.rb +45 -22
- data/test/lib/vedeu/repository/storage_test.rb +44 -19
- data/test/lib/vedeu/support/compositor_test.rb +2 -2
- data/test/lib/vedeu/support/events_test.rb +28 -0
- data/test/lib/vedeu/support/{coordinate_test.rb → geometry_test.rb} +110 -110
- data/test/lib/vedeu/support/menu_test.rb +69 -31
- data/vedeu.gemspec +1 -1
- metadata +11 -8
- data/lib/vedeu/repository/event_repository.rb +0 -35
- data/test/lib/vedeu/repository/event_repository_test.rb +0 -31
|
@@ -6,6 +6,12 @@ module Vedeu
|
|
|
6
6
|
let(:collection) { ['hydrogen', 'carbon', 'nitrogen', 'oxygen'] }
|
|
7
7
|
let(:menu) { Menu.new(collection) }
|
|
8
8
|
|
|
9
|
+
describe '#events' do
|
|
10
|
+
it 'returns the events defined for menus' do
|
|
11
|
+
menu.events.must_be_instance_of(Array)
|
|
12
|
+
end
|
|
13
|
+
end
|
|
14
|
+
|
|
9
15
|
describe '#current' do
|
|
10
16
|
it 'returns the current index' do
|
|
11
17
|
menu.current.must_equal(0)
|
|
@@ -18,7 +24,7 @@ module Vedeu
|
|
|
18
24
|
end
|
|
19
25
|
|
|
20
26
|
it 'returns the selected index when an item is selected' do
|
|
21
|
-
menu.
|
|
27
|
+
menu.next_item.select_item
|
|
22
28
|
menu.selected.must_equal(1)
|
|
23
29
|
end
|
|
24
30
|
end
|
|
@@ -29,7 +35,7 @@ module Vedeu
|
|
|
29
35
|
end
|
|
30
36
|
|
|
31
37
|
it 'when the current item has changed, the tuple will change' do
|
|
32
|
-
menu.
|
|
38
|
+
menu.next_item.next_item
|
|
33
39
|
menu.current_item.must_equal([2, 'nitrogen'])
|
|
34
40
|
end
|
|
35
41
|
end
|
|
@@ -40,7 +46,7 @@ module Vedeu
|
|
|
40
46
|
end
|
|
41
47
|
|
|
42
48
|
it 'returns a tuple containing the selected index and item' do
|
|
43
|
-
menu.
|
|
49
|
+
menu.next_item.select_item
|
|
44
50
|
menu.selected_item.must_equal([1, 'carbon'])
|
|
45
51
|
end
|
|
46
52
|
end
|
|
@@ -58,7 +64,7 @@ module Vedeu
|
|
|
58
64
|
end
|
|
59
65
|
|
|
60
66
|
it 'returns a tuple when the current has changed' do
|
|
61
|
-
menu.
|
|
67
|
+
menu.next_item.items.must_equal(
|
|
62
68
|
[
|
|
63
69
|
[false, false, 'hydrogen'],
|
|
64
70
|
[false, true, 'carbon'],
|
|
@@ -69,7 +75,7 @@ module Vedeu
|
|
|
69
75
|
end
|
|
70
76
|
|
|
71
77
|
it 'returns a tuple when an item is selected' do
|
|
72
|
-
menu.
|
|
78
|
+
menu.next_item.select_item
|
|
73
79
|
menu.items.must_equal(
|
|
74
80
|
[
|
|
75
81
|
[false, false, 'hydrogen'],
|
|
@@ -82,8 +88,8 @@ module Vedeu
|
|
|
82
88
|
|
|
83
89
|
it 'returns a tuple when the current has changed and an item ' \
|
|
84
90
|
'is selected' do
|
|
85
|
-
menu.
|
|
86
|
-
menu.
|
|
91
|
+
menu.next_item.select_item
|
|
92
|
+
menu.next_item.next_item
|
|
87
93
|
menu.items.must_equal(
|
|
88
94
|
[
|
|
89
95
|
[false, false, 'hydrogen'],
|
|
@@ -103,13 +109,13 @@ module Vedeu
|
|
|
103
109
|
end
|
|
104
110
|
|
|
105
111
|
it 'returns a tuple when the current has changed' do
|
|
106
|
-
menu.
|
|
112
|
+
menu.next_item.render.must_equal(
|
|
107
113
|
[' hydrogen', ' > carbon', ' nitrogen', ' oxygen']
|
|
108
114
|
)
|
|
109
115
|
end
|
|
110
116
|
|
|
111
117
|
it 'returns a tuple when an item is selected' do
|
|
112
|
-
menu.
|
|
118
|
+
menu.next_item.select_item
|
|
113
119
|
menu.render.must_equal(
|
|
114
120
|
[' hydrogen', '*> carbon', ' nitrogen', ' oxygen']
|
|
115
121
|
)
|
|
@@ -117,73 +123,105 @@ module Vedeu
|
|
|
117
123
|
|
|
118
124
|
it 'returns a tuple when the current has changed and an item ' \
|
|
119
125
|
'is selected' do
|
|
120
|
-
menu.
|
|
121
|
-
menu.
|
|
126
|
+
menu.next_item.select_item
|
|
127
|
+
menu.next_item.next_item
|
|
122
128
|
menu.render.must_equal(
|
|
123
129
|
[' hydrogen', '* carbon', ' nitrogen', ' > oxygen']
|
|
124
130
|
)
|
|
125
131
|
end
|
|
126
132
|
end
|
|
127
133
|
|
|
128
|
-
describe '#
|
|
134
|
+
describe '#top_item' do
|
|
129
135
|
it 'sets current to the index of the first item' do
|
|
130
|
-
menu.
|
|
131
|
-
menu.
|
|
136
|
+
menu.next_item
|
|
137
|
+
menu.top_item.current.must_equal(0)
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it 'returns the instance' do
|
|
141
|
+
menu.top_item.must_equal(menu)
|
|
142
|
+
end
|
|
143
|
+
|
|
144
|
+
it 'is chainable' do
|
|
145
|
+
menu.top_item.current.must_equal(0)
|
|
132
146
|
end
|
|
133
147
|
end
|
|
134
148
|
|
|
135
|
-
describe '#
|
|
149
|
+
describe '#bottom_item' do
|
|
136
150
|
it 'sets current to the index of the last item' do
|
|
137
|
-
menu.
|
|
151
|
+
menu.bottom_item.current.must_equal(3)
|
|
152
|
+
end
|
|
153
|
+
|
|
154
|
+
it 'returns the instance' do
|
|
155
|
+
menu.top_item.must_equal(menu)
|
|
156
|
+
end
|
|
157
|
+
|
|
158
|
+
it 'is chainable' do
|
|
159
|
+
menu.bottom_item.current.must_equal(3)
|
|
138
160
|
end
|
|
139
161
|
end
|
|
140
162
|
|
|
141
|
-
describe '#
|
|
163
|
+
describe '#next_item' do
|
|
142
164
|
it 'sets the current to the index of the next item' do
|
|
143
|
-
menu.
|
|
165
|
+
menu.next_item.current.must_equal(1)
|
|
144
166
|
end
|
|
145
167
|
|
|
146
168
|
it 'returns the instance' do
|
|
147
|
-
menu.
|
|
169
|
+
menu.next_item.must_equal(menu)
|
|
148
170
|
end
|
|
149
171
|
|
|
150
172
|
it 'is chainable but does not loop' do
|
|
151
|
-
menu.
|
|
173
|
+
menu.next_item.next_item.next_item.next_item.next_item.current.must_equal(3)
|
|
152
174
|
end
|
|
153
175
|
end
|
|
154
176
|
|
|
155
|
-
describe '#
|
|
177
|
+
describe '#prev_item' do
|
|
156
178
|
it 'does not loop' do
|
|
157
|
-
menu.
|
|
179
|
+
menu.prev_item.current.must_equal(0)
|
|
158
180
|
end
|
|
159
181
|
|
|
160
182
|
it 'sets the current to the index of the previous item' do
|
|
161
|
-
menu.
|
|
183
|
+
menu.next_item.next_item.prev_item.current.must_equal(1)
|
|
162
184
|
end
|
|
163
185
|
|
|
164
186
|
it 'returns the instance' do
|
|
165
|
-
menu.
|
|
187
|
+
menu.prev_item.must_equal(menu)
|
|
166
188
|
end
|
|
167
189
|
|
|
168
190
|
it 'is chainable' do
|
|
169
|
-
menu.
|
|
191
|
+
menu.next_item.next_item.next_item.prev_item.prev_item.current.must_equal(1)
|
|
170
192
|
end
|
|
171
193
|
end
|
|
172
194
|
|
|
173
|
-
describe '#
|
|
195
|
+
describe '#select_item' do
|
|
174
196
|
it 'sets the selected index to the current index' do
|
|
175
|
-
menu.
|
|
197
|
+
menu.select_item.selected.must_equal(0)
|
|
176
198
|
end
|
|
177
199
|
|
|
178
200
|
it 'sets the selected index to the current index' do
|
|
179
|
-
menu.
|
|
201
|
+
menu.next_item.select_item.selected.must_equal(1)
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it 'returns the instance' do
|
|
205
|
+
menu.select_item.must_equal(menu)
|
|
206
|
+
end
|
|
207
|
+
|
|
208
|
+
it 'is chainable' do
|
|
209
|
+
menu.select_item.selected.must_equal(0)
|
|
180
210
|
end
|
|
181
211
|
end
|
|
182
212
|
|
|
183
|
-
describe '#
|
|
213
|
+
describe '#deselect_item' do
|
|
184
214
|
it 'sets the selected index to nil' do
|
|
185
|
-
menu.
|
|
186
|
-
menu.
|
|
215
|
+
menu.next_item.next_item.select_item
|
|
216
|
+
menu.deselect_item.selected.must_equal(nil)
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
it 'returns the instance' do
|
|
220
|
+
menu.deselect_item.must_equal(menu)
|
|
221
|
+
end
|
|
222
|
+
|
|
223
|
+
it 'is chainable' do
|
|
224
|
+
menu.deselect_item.selected.must_equal(nil)
|
|
187
225
|
end
|
|
188
226
|
end
|
|
189
227
|
|
data/vedeu.gemspec
CHANGED
|
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
|
4
4
|
|
|
5
5
|
Gem::Specification.new do |spec|
|
|
6
6
|
spec.name = 'vedeu'
|
|
7
|
-
spec.version = '0.0.
|
|
7
|
+
spec.version = '0.0.39'
|
|
8
8
|
spec.authors = ['Gavin Laking']
|
|
9
9
|
spec.email = ['gavinlaking@gmail.com']
|
|
10
10
|
spec.summary = %q{A terminal case of wonderland.}
|
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.39
|
|
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-07-
|
|
11
|
+
date: 2014-07-23 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -177,6 +177,7 @@ files:
|
|
|
177
177
|
- lib/vedeu/models/attributes/interface_collection.rb
|
|
178
178
|
- lib/vedeu/models/attributes/line_collection.rb
|
|
179
179
|
- lib/vedeu/models/attributes/stream_collection.rb
|
|
180
|
+
- lib/vedeu/models/builders/builder.rb
|
|
180
181
|
- lib/vedeu/models/builders/command_builder.rb
|
|
181
182
|
- lib/vedeu/models/builders/interface_builder.rb
|
|
182
183
|
- lib/vedeu/models/colour.rb
|
|
@@ -197,14 +198,14 @@ files:
|
|
|
197
198
|
- lib/vedeu/parsing/text_adaptor.rb
|
|
198
199
|
- lib/vedeu/process/process.rb
|
|
199
200
|
- lib/vedeu/repository/command_repository.rb
|
|
200
|
-
- lib/vedeu/repository/event_repository.rb
|
|
201
201
|
- lib/vedeu/repository/interface_repository.rb
|
|
202
202
|
- lib/vedeu/repository/repository.rb
|
|
203
203
|
- lib/vedeu/repository/storage.rb
|
|
204
204
|
- lib/vedeu/support/compositor.rb
|
|
205
|
-
- lib/vedeu/support/coordinate.rb
|
|
206
205
|
- lib/vedeu/support/esc.rb
|
|
206
|
+
- lib/vedeu/support/events.rb
|
|
207
207
|
- lib/vedeu/support/exit.rb
|
|
208
|
+
- lib/vedeu/support/geometry.rb
|
|
208
209
|
- lib/vedeu/support/menu.rb
|
|
209
210
|
- lib/vedeu/support/queue.rb
|
|
210
211
|
- lib/vedeu/support/terminal.rb
|
|
@@ -221,6 +222,7 @@ files:
|
|
|
221
222
|
- test/lib/vedeu/models/attributes/interface_collection_test.rb
|
|
222
223
|
- test/lib/vedeu/models/attributes/line_collection_test.rb
|
|
223
224
|
- test/lib/vedeu/models/attributes/stream_collection_test.rb
|
|
225
|
+
- test/lib/vedeu/models/builders/builder_test.rb
|
|
224
226
|
- test/lib/vedeu/models/builders/command_builder_test.rb
|
|
225
227
|
- test/lib/vedeu/models/builders/interface_builder_test.rb
|
|
226
228
|
- test/lib/vedeu/models/colour_test.rb
|
|
@@ -241,14 +243,14 @@ files:
|
|
|
241
243
|
- test/lib/vedeu/parsing/text_adaptor_test.rb
|
|
242
244
|
- test/lib/vedeu/process/process_test.rb
|
|
243
245
|
- test/lib/vedeu/repository/command_repository_test.rb
|
|
244
|
-
- test/lib/vedeu/repository/event_repository_test.rb
|
|
245
246
|
- test/lib/vedeu/repository/interface_repository_test.rb
|
|
246
247
|
- test/lib/vedeu/repository/repository_test.rb
|
|
247
248
|
- test/lib/vedeu/repository/storage_test.rb
|
|
248
249
|
- test/lib/vedeu/support/compositor_test.rb
|
|
249
|
-
- test/lib/vedeu/support/coordinate_test.rb
|
|
250
250
|
- test/lib/vedeu/support/esc_test.rb
|
|
251
|
+
- test/lib/vedeu/support/events_test.rb
|
|
251
252
|
- test/lib/vedeu/support/exit_test.rb
|
|
253
|
+
- test/lib/vedeu/support/geometry_test.rb
|
|
252
254
|
- test/lib/vedeu/support/menu_test.rb
|
|
253
255
|
- test/lib/vedeu/support/queue_test.rb
|
|
254
256
|
- test/lib/vedeu/support/terminal_test.rb
|
|
@@ -307,6 +309,7 @@ test_files:
|
|
|
307
309
|
- test/lib/vedeu/models/attributes/interface_collection_test.rb
|
|
308
310
|
- test/lib/vedeu/models/attributes/line_collection_test.rb
|
|
309
311
|
- test/lib/vedeu/models/attributes/stream_collection_test.rb
|
|
312
|
+
- test/lib/vedeu/models/builders/builder_test.rb
|
|
310
313
|
- test/lib/vedeu/models/builders/command_builder_test.rb
|
|
311
314
|
- test/lib/vedeu/models/builders/interface_builder_test.rb
|
|
312
315
|
- test/lib/vedeu/models/colour_test.rb
|
|
@@ -327,14 +330,14 @@ test_files:
|
|
|
327
330
|
- test/lib/vedeu/parsing/text_adaptor_test.rb
|
|
328
331
|
- test/lib/vedeu/process/process_test.rb
|
|
329
332
|
- test/lib/vedeu/repository/command_repository_test.rb
|
|
330
|
-
- test/lib/vedeu/repository/event_repository_test.rb
|
|
331
333
|
- test/lib/vedeu/repository/interface_repository_test.rb
|
|
332
334
|
- test/lib/vedeu/repository/repository_test.rb
|
|
333
335
|
- test/lib/vedeu/repository/storage_test.rb
|
|
334
336
|
- test/lib/vedeu/support/compositor_test.rb
|
|
335
|
-
- test/lib/vedeu/support/coordinate_test.rb
|
|
336
337
|
- test/lib/vedeu/support/esc_test.rb
|
|
338
|
+
- test/lib/vedeu/support/events_test.rb
|
|
337
339
|
- test/lib/vedeu/support/exit_test.rb
|
|
340
|
+
- test/lib/vedeu/support/geometry_test.rb
|
|
338
341
|
- test/lib/vedeu/support/menu_test.rb
|
|
339
342
|
- test/lib/vedeu/support/queue_test.rb
|
|
340
343
|
- test/lib/vedeu/support/terminal_test.rb
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
module Vedeu
|
|
2
|
-
module EventRepository
|
|
3
|
-
extend self
|
|
4
|
-
|
|
5
|
-
def handlers
|
|
6
|
-
@handlers ||= Hash.new { |h, k| h[k] = [] }.merge(defaults)
|
|
7
|
-
end
|
|
8
|
-
|
|
9
|
-
def register(event, &block)
|
|
10
|
-
handlers[event] << block
|
|
11
|
-
end
|
|
12
|
-
|
|
13
|
-
def trigger(event, *args)
|
|
14
|
-
handlers[event].each do |handler|
|
|
15
|
-
handler.call(*args)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
private
|
|
20
|
-
|
|
21
|
-
def defaults
|
|
22
|
-
{
|
|
23
|
-
:_exit_ => [ proc { fail StopIteration } ],
|
|
24
|
-
:_keypress_ => [ proc { |key| keypress(key) } ],
|
|
25
|
-
:_mode_switch_ => [ proc { fail ModeSwitch } ],
|
|
26
|
-
}
|
|
27
|
-
end
|
|
28
|
-
|
|
29
|
-
def keypress(key)
|
|
30
|
-
trigger(:key, key)
|
|
31
|
-
|
|
32
|
-
trigger(:_mode_switch_) if key == :escape
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
require_relative '../../../test_helper'
|
|
2
|
-
require_relative '../../../../lib/vedeu/repository/event_repository'
|
|
3
|
-
|
|
4
|
-
module Vedeu
|
|
5
|
-
describe EventRepository do
|
|
6
|
-
describe '#handlers' do
|
|
7
|
-
it 'returns a Hash' do
|
|
8
|
-
EventRepository.handlers.must_be_instance_of(Hash)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
|
-
describe '#register' do
|
|
13
|
-
it 'returns an Array' do
|
|
14
|
-
EventRepository.register(:some_event) { proc { |x| x } }
|
|
15
|
-
.must_be_instance_of(Array)
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
describe '#trigger' do
|
|
20
|
-
it 'returns a collection containing the event when the event is pre-registered' do
|
|
21
|
-
EventRepository.register(:some_event) { proc { |x| x } }
|
|
22
|
-
proc { EventRepository.trigger(:_exit_, []).first.call }
|
|
23
|
-
.must_raise(StopIteration)
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
it 'returns an empty collection when the event has not been registered' do
|
|
27
|
-
EventRepository.trigger(:_not_found_, []).must_be_empty
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
end
|