vedeu 0.5.3 → 0.5.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.
Files changed (66) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +5 -5
  3. data/docs/events.md +4 -0
  4. data/examples/borders_app.rb +43 -39
  5. data/examples/focus_app.rb +4 -0
  6. data/examples/hello_world.rb +10 -3
  7. data/lib/vedeu/all.rb +1 -2
  8. data/lib/vedeu/api.rb +4 -1
  9. data/lib/vedeu/application/application_controller.rb +24 -0
  10. data/lib/vedeu/application/application_view.rb +9 -9
  11. data/lib/vedeu/bindings.rb +2 -0
  12. data/lib/vedeu/bindings/movement.rb +9 -9
  13. data/lib/vedeu/bindings/system.rb +3 -3
  14. data/lib/vedeu/buffers/buffer.rb +4 -9
  15. data/lib/vedeu/buffers/display_buffer.rb +2 -48
  16. data/lib/vedeu/cli/generator/application.rb +6 -0
  17. data/lib/vedeu/cli/generator/templates/application/.ruby-version +1 -0
  18. data/lib/vedeu/cli/generator/templates/application/app/controllers/name.erb +2 -11
  19. data/lib/vedeu/configuration/api.rb +6 -0
  20. data/lib/vedeu/configuration/configuration.rb +6 -0
  21. data/lib/vedeu/cursor/cursor.rb +49 -15
  22. data/lib/vedeu/cursor/move.rb +2 -2
  23. data/lib/vedeu/cursor/refresh_cursor.rb +2 -7
  24. data/lib/vedeu/distributed/server.rb +7 -21
  25. data/lib/vedeu/dsl/view.rb +31 -6
  26. data/lib/vedeu/internal_api.rb +7 -0
  27. data/lib/vedeu/log/log.rb +5 -2
  28. data/lib/vedeu/models/escape.rb +24 -6
  29. data/lib/vedeu/models/interface.rb +2 -14
  30. data/lib/vedeu/null/buffer.rb +7 -21
  31. data/lib/vedeu/null/generic.rb +5 -16
  32. data/lib/vedeu/null/interface.rb +6 -18
  33. data/lib/vedeu/runtime/bootstrap.rb +1 -1
  34. data/lib/vedeu/runtime/flags.rb +57 -0
  35. data/lib/vedeu/runtime/router.rb +2 -2
  36. data/lib/vedeu/version.rb +2 -1
  37. data/test/lib/vedeu/api_test.rb +1 -0
  38. data/test/lib/vedeu/application/application_controller_test.rb +26 -2
  39. data/test/lib/vedeu/application/application_view_test.rb +9 -4
  40. data/test/lib/vedeu/bindings_test.rb +9 -0
  41. data/test/lib/vedeu/borders/border_test.rb +25 -42
  42. data/test/lib/vedeu/buffers/display_buffer_test.rb +0 -10
  43. data/test/lib/vedeu/configuration/api_test.rb +7 -1
  44. data/test/lib/vedeu/configuration/cli_test.rb +0 -1
  45. data/test/lib/vedeu/configuration/configuration_test.rb +16 -0
  46. data/test/lib/vedeu/cursor/cursor_test.rb +122 -4
  47. data/test/lib/vedeu/dsl/view_test.rb +2 -2
  48. data/test/lib/vedeu/internal_api_test.rb +2 -0
  49. data/test/lib/vedeu/models/escape_test.rb +16 -6
  50. data/test/lib/vedeu/models/focus_test.rb +2 -1
  51. data/test/lib/vedeu/models/interface_test.rb +9 -5
  52. data/test/lib/vedeu/null/buffer_test.rb +7 -25
  53. data/test/lib/vedeu/null/generic_test.rb +6 -20
  54. data/test/lib/vedeu/null/interface_test.rb +8 -14
  55. data/test/lib/vedeu/output/compressor_test.rb +4 -4
  56. data/test/lib/vedeu/output/renderers_test.rb +1 -1
  57. data/test/lib/vedeu/runtime/flags_test.rb +47 -0
  58. data/test/lib/vedeu/runtime/router_test.rb +4 -4
  59. data/test/test_helper.rb +2 -0
  60. metadata +6 -10
  61. data/examples/geometry_app.rb +0 -147
  62. data/examples/panel_app.rb +0 -71
  63. data/lib/vedeu/geometry/index_position.rb +0 -85
  64. data/lib/vedeu/geometry/position_validator.rb +0 -69
  65. data/test/lib/vedeu/geometry/index_position_test.rb +0 -130
  66. data/test/lib/vedeu/geometry/position_validator_test.rb +0 -149
@@ -131,8 +131,8 @@ module Vedeu
131
131
  # @param args [Symbol]
132
132
  # @return [void]
133
133
  def route(controller, action, **args)
134
- klass = Object.const_get(klass_for(controller)).new
135
- klass.send(action, args)
134
+ klass = Object.const_get(klass_for(controller)).new(**args)
135
+ klass.send(action)
136
136
  end
137
137
 
138
138
  # Fetch the class for the controller by name.
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.5.3'
4
+ VERSION = '0.5.4'
5
5
 
6
6
  end
7
+
@@ -19,6 +19,7 @@ module Vedeu
19
19
  it { Vedeu.must_respond_to(:renders) }
20
20
  it { Vedeu.must_respond_to(:render) }
21
21
  it { Vedeu.must_respond_to(:views) }
22
+ it { Vedeu.must_respond_to(:view) }
22
23
  it { Vedeu.must_respond_to(:bind) }
23
24
  it { Vedeu.must_respond_to(:bind_alias) }
24
25
  it { Vedeu.must_respond_to(:bound?) }
@@ -5,9 +5,33 @@ module Vedeu
5
5
  describe ApplicationController do
6
6
 
7
7
  let(:described) { Vedeu::ApplicationController }
8
- let(:instance) { described.new }
8
+ let(:instance) { described.new(params) }
9
+ let(:params) { {} }
9
10
 
10
- # @todo Add more tests.
11
+ describe '#initialize' do
12
+ subject { instance }
13
+
14
+ it { subject.must_be_instance_of(described) }
15
+ it { subject.instance_variable_get('@params').must_equal(params) }
16
+ end
17
+
18
+ describe '#redirect_to' do
19
+ let(:controller) {}
20
+ let(:action) {}
21
+ let(:params) { {} }
22
+
23
+ before { Vedeu.stubs(:trigger) }
24
+
25
+ subject { instance.redirect_to(controller, action, params) }
26
+
27
+ it {
28
+ Vedeu.expects(:trigger).with(:_goto_, controller, action, params)
29
+ subject
30
+ }
31
+
32
+ it { instance.must_respond_to(:redirect) }
33
+ it { instance.must_respond_to(:goto) }
34
+ end
11
35
 
12
36
  end # ApplicationController
13
37
 
@@ -5,16 +5,21 @@ module Vedeu
5
5
  describe ApplicationView do
6
6
 
7
7
  let(:described) { Vedeu::ApplicationView }
8
- let(:instance) { described.new(object) }
9
- let(:object) {}
8
+ let(:instance) { described.new(params) }
9
+ let(:params) { {} }
10
10
 
11
11
  describe '#initialize' do
12
12
  it { instance.must_be_instance_of(described) }
13
- it { instance.instance_variable_get('@object').must_equal(object) }
13
+ it { instance.instance_variable_get('@params').must_equal(params) }
14
14
  end
15
15
 
16
+ # describe 'accessors' do
17
+ # it { instance.must_respond_to(:params) }
18
+ # it { instance.must_respond_to(:params=) }
19
+ # end
20
+
16
21
  describe '.render' do
17
- subject { described.render(object) }
22
+ subject { described.render(params) }
18
23
 
19
24
  it { proc { subject }.must_raise(Vedeu::NotImplemented) }
20
25
  end
@@ -7,6 +7,15 @@ module Vedeu
7
7
  let(:described) { Vedeu::Bindings }
8
8
 
9
9
  describe '.setup!' do
10
+ before {
11
+ Vedeu::Bindings::Application.stubs(:setup!)
12
+ Vedeu::Bindings::Visibility.stubs(:setup!)
13
+ Vedeu::Bindings::Movement.stubs(:setup!)
14
+ Vedeu::Bindings::Menus.stubs(:setup!)
15
+ Vedeu::Bindings::DRB.stubs(:setup!)
16
+ Vedeu::Bindings::System.stubs(:setup!)
17
+ }
18
+
10
19
  subject { described.setup! }
11
20
 
12
21
  it {
@@ -8,9 +8,30 @@ module Vedeu
8
8
  let(:instance) { described.new(attributes) }
9
9
  let(:attributes) {
10
10
  {
11
- name: 'borders'
11
+ bottom_left: 'm',
12
+ bottom_right: 'j',
13
+ client: nil,
14
+ colour: nil,
15
+ enabled: false,
16
+ horizontal: 'q',
17
+ name: 'borders',
18
+ repository: Vedeu.borders,
19
+ show_bottom: true,
20
+ show_left: true,
21
+ show_right: true,
22
+ show_top: true,
23
+ style: nil,
24
+ title: '',
25
+ top_left: 'l',
26
+ top_right: 'k',
27
+ vertical: 'x',
12
28
  }
13
29
  }
30
+ let(:geometry) {}
31
+
32
+ before {
33
+ Vedeu.geometries.stubs(:by_name).returns(geometry)
34
+ }
14
35
 
15
36
  describe '.build' do
16
37
  subject {
@@ -23,36 +44,10 @@ module Vedeu
23
44
  end
24
45
 
25
46
  describe '#initialize' do
26
- let(:default_attributes) {
27
- {
28
- bottom_left: 'm',
29
- bottom_right: 'j',
30
- client: nil,
31
- colour: nil,
32
- enabled: false,
33
- horizontal: 'q',
34
- name: 'borders',
35
- repository: Vedeu.borders,
36
- show_bottom: true,
37
- show_left: true,
38
- show_right: true,
39
- show_top: true,
40
- style: nil,
41
- title: '',
42
- top_left: 'l',
43
- top_right: 'k',
44
- vertical: 'x',
45
- }
46
- }
47
47
  it { instance.must_be_instance_of(described) }
48
48
  it do
49
49
  instance.instance_variable_get('@attributes').
50
- must_equal(default_attributes)
51
- end
52
- it { instance.instance_variable_get('@name').must_equal('borders') }
53
- it do
54
- instance.instance_variable_get('@repository').
55
- must_be_instance_of(Vedeu::Borders)
50
+ must_equal(attributes)
56
51
  end
57
52
  end
58
53
 
@@ -117,10 +112,6 @@ module Vedeu
117
112
  Vedeu::Geometry.new(name: 'Border#bxbxnbybyn', x: 2, xn: 6, y: 2, yn: 6)
118
113
  }
119
114
 
120
- before {
121
- Vedeu.geometries.stubs(:by_name).returns(geometry)
122
- }
123
-
124
115
  describe '#bx' do
125
116
  subject { instance.bx }
126
117
 
@@ -214,9 +205,6 @@ module Vedeu
214
205
  let(:geometry) {
215
206
  Vedeu::Geometry.new(name: 'borders', width: 8)
216
207
  }
217
- before {
218
- Vedeu.geometries.stubs(:by_name).returns(geometry)
219
- }
220
208
 
221
209
  subject { instance.width }
222
210
 
@@ -269,9 +257,6 @@ module Vedeu
269
257
  let(:geometry) {
270
258
  Vedeu::Geometry.new(name: 'borders', height: 5)
271
259
  }
272
- before {
273
- Vedeu.geometries.stubs(:by_name).returns(geometry)
274
- }
275
260
 
276
261
  subject { instance.height }
277
262
 
@@ -435,12 +420,10 @@ module Vedeu
435
420
  let(:geometry) {
436
421
  Vedeu::Geometry.new(name: 'Border#render', x: 1, xn: 4, y: 1, yn: 4)
437
422
  }
438
- let(:interface) {
439
- Vedeu::Interface.new(visible: visibility)
440
- }
423
+ let(:interface) { Vedeu::Interface.new(visible: visibility) }
424
+
441
425
  before {
442
426
  Vedeu.interfaces.stubs(:by_name).returns(interface)
443
- Vedeu.geometries.stubs(:by_name).returns(geometry)
444
427
  }
445
428
 
446
429
  subject { instance.render }
@@ -54,16 +54,6 @@ module Vedeu
54
54
 
55
55
  it { proc { subject }.must_raise(InvalidSyntax) }
56
56
  end
57
-
58
- context 'when the buffer is not already registered' do
59
- # @todo Add more tests.
60
- # it { skip }
61
- end
62
-
63
- context 'when the buffer is already registered' do
64
- # @todo Add more tests.
65
- # it { skip }
66
- end
67
57
  end
68
58
 
69
59
  end # DisplayBuffer
@@ -16,7 +16,6 @@ module Vedeu
16
16
  let(:described) { Vedeu::Config::API }
17
17
  let(:instance) { described.new }
18
18
 
19
- before { Configuration.reset! }
20
19
  after { test_configuration }
21
20
 
22
21
  describe '#base_path' do
@@ -228,6 +227,13 @@ module Vedeu
228
227
  end
229
228
  end
230
229
 
230
+ describe '#log_only' do
231
+ it 'sets the options to the desired value' do
232
+ configuration = Vedeu.configure { log_only :debug, :store }
233
+ configuration.log_only.must_equal([:debug, :store])
234
+ end
235
+ end
236
+
231
237
  describe '#renderer' do
232
238
  it { instance.must_respond_to(:renderers) }
233
239
  end
@@ -18,7 +18,6 @@ module Vedeu
18
18
  let(:instance) { described.new(args) }
19
19
  let(:args) { [] }
20
20
 
21
- before { Configuration.reset! }
22
21
  after { test_configuration }
23
22
 
24
23
  describe '#initialize' do
@@ -81,6 +81,22 @@ module Vedeu
81
81
  end
82
82
  end
83
83
 
84
+ describe '.log_only' do
85
+ context 'when log_only is not configured' do
86
+ it { described.log_only.must_equal([]) }
87
+ end
88
+
89
+ context 'when log_only is configured' do
90
+ before {
91
+ Vedeu.configure do
92
+ log_only :timer, :event
93
+ end
94
+ }
95
+
96
+ it { described.log_only.must_equal([:timer, :event]) }
97
+ end
98
+ end
99
+
84
100
  describe '.once?' do
85
101
  it { described.must_respond_to(:once) }
86
102
 
@@ -24,6 +24,22 @@ module Vedeu
24
24
  let(:visible) { true }
25
25
  let(:x) { 19 }
26
26
  let(:y) { 8 }
27
+ let(:border) { Vedeu::Border.new(name: _name, enabled: enabled) }
28
+ let(:geometry) {
29
+ Vedeu::Geometry.new(
30
+ name: _name,
31
+ x: 5,
32
+ xn: 35,
33
+ y: 5,
34
+ yn: 10
35
+ )
36
+ }
37
+ let(:enabled) { true }
38
+
39
+ before {
40
+ Vedeu.borders.stubs(:by_name).returns(border)
41
+ Vedeu.geometries.stubs(:by_name).returns(geometry)
42
+ }
27
43
 
28
44
  describe '#initialize' do
29
45
  subject { instance }
@@ -46,15 +62,13 @@ module Vedeu
46
62
  it { instance.must_respond_to(:oy) }
47
63
  it { instance.must_respond_to(:oy=) }
48
64
  it { instance.must_respond_to(:state) }
49
- it { instance.must_respond_to(:x) }
50
65
  it { instance.must_respond_to(:x=) }
51
- it { instance.must_respond_to(:y) }
52
66
  it { instance.must_respond_to(:y=) }
53
67
  end
54
68
 
55
69
  describe '#hide' do
56
70
  let(:visible) { true }
57
- let(:hide_cursor) { Vedeu::Escape.new(Vedeu::Esc.hide_cursor) }
71
+ let(:hide_cursor) { Vedeu::Escape.new(value: Vedeu::Esc.hide_cursor) }
58
72
 
59
73
  before {
60
74
  Vedeu::Output.stubs(:render).
@@ -83,7 +97,7 @@ module Vedeu
83
97
 
84
98
  describe '#show' do
85
99
  let(:visible) { false }
86
- let(:show_cursor) { Vedeu::Escape.new(Vedeu::Esc.show_cursor) }
100
+ let(:show_cursor) { Vedeu::Escape.new(value: Vedeu::Esc.show_cursor) }
87
101
 
88
102
  before {
89
103
  Vedeu::Output.stubs(:render).
@@ -132,6 +146,110 @@ module Vedeu
132
146
  end
133
147
  end
134
148
 
149
+ describe '#x' do
150
+ subject { instance.x }
151
+
152
+ context 'when x is less than tx' do
153
+ let(:x) { -2 }
154
+
155
+ it { subject.must_equal(6) }
156
+ end
157
+
158
+ context 'when x is less than left' do
159
+ let(:x) { 2 }
160
+
161
+ it { subject.must_equal(6) }
162
+ end
163
+
164
+ context 'when x is less than bx' do
165
+ let(:x) { 5 }
166
+
167
+ it { subject.must_equal(6) }
168
+
169
+ context 'when border is not enabled' do
170
+ let(:enabled) { false }
171
+
172
+ it { subject.must_equal(5) }
173
+ end
174
+ end
175
+
176
+ context 'when x is more than txn' do
177
+ let(:x) { 47 }
178
+
179
+ it { subject.must_equal(34) }
180
+ end
181
+
182
+ context 'when x is more than right' do
183
+ let(:x) { 37 }
184
+
185
+ it { subject.must_equal(34) }
186
+ end
187
+
188
+ context 'when x is more than bxn' do
189
+ let(:x) { 35 }
190
+
191
+ it { subject.must_equal(34) }
192
+
193
+ context 'when border is not enabled' do
194
+ let(:enabled) { false }
195
+
196
+ it { subject.must_equal(35) }
197
+ end
198
+ end
199
+ end
200
+
201
+ describe '#y' do
202
+ subject { instance.y }
203
+
204
+ context 'when y is less than ty' do
205
+ let(:y) { -2 }
206
+
207
+ it { subject.must_equal(6) }
208
+ end
209
+
210
+ context 'when y is less than top' do
211
+ let(:y) { 2 }
212
+
213
+ it { subject.must_equal(6) }
214
+ end
215
+
216
+ context 'when y is less than by' do
217
+ let(:y) { 5 }
218
+
219
+ it { subject.must_equal(6) }
220
+
221
+ context 'when border is not enabled' do
222
+ let(:enabled) { false }
223
+
224
+ it { subject.must_equal(5) }
225
+ end
226
+ end
227
+
228
+ context 'when y is more than tyn' do
229
+ let(:y) { 17 }
230
+
231
+ it { subject.must_equal(9) }
232
+ end
233
+
234
+ context 'when y is more than bottom' do
235
+ let(:y) { 12 }
236
+
237
+ it { subject.must_equal(9) }
238
+ end
239
+
240
+ context 'when y is more than byn' do
241
+ let(:y) { 10 }
242
+
243
+ it { subject.must_equal(9) }
244
+
245
+ context 'when border is not enabled' do
246
+ let(:enabled) { false }
247
+
248
+ it { subject.must_equal(10) }
249
+ end
250
+ end
251
+ end
252
+
135
253
  end # Cursor
136
254
 
137
255
  end # Vedeu