vedeu 0.5.0 → 0.5.1

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 (93) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/all.rb +1 -1
  3. data/lib/vedeu/application/controller.rb +2 -2
  4. data/lib/vedeu/bindings.rb +1 -1
  5. data/lib/vedeu/bindings/application.rb +2 -2
  6. data/lib/vedeu/bindings/drb.rb +8 -8
  7. data/lib/vedeu/bindings/menus.rb +11 -11
  8. data/lib/vedeu/bindings/movement.rb +12 -12
  9. data/lib/vedeu/bindings/system.rb +18 -18
  10. data/lib/vedeu/bindings/visibility.rb +9 -9
  11. data/lib/vedeu/colours/colour.rb +1 -1
  12. data/lib/vedeu/common.rb +1 -1
  13. data/lib/vedeu/dsl/composition.rb +8 -3
  14. data/lib/vedeu/dsl/interface.rb +41 -17
  15. data/lib/vedeu/log/debug.rb +5 -1
  16. data/lib/vedeu/log/log.rb +1 -0
  17. data/lib/vedeu/models/interface.rb +3 -2
  18. data/lib/vedeu/plugins.rb +1 -1
  19. data/lib/vedeu/runtime/bootstrap.rb +0 -3
  20. data/lib/vedeu/runtime/launcher.rb +3 -2
  21. data/lib/vedeu/runtime/router.rb +49 -47
  22. data/lib/vedeu/{traps.rb → runtime/traps.rb} +0 -0
  23. data/lib/vedeu/templating/decoder.rb +4 -2
  24. data/lib/vedeu/templating/encoder.rb +4 -2
  25. data/lib/vedeu/templating/view_template.rb +35 -2
  26. data/lib/vedeu/version.rb +1 -1
  27. data/test/lib/vedeu/application/application_view_test.rb +1 -1
  28. data/test/lib/vedeu/application/controller_test.rb +4 -0
  29. data/test/lib/vedeu/bindings_test.rb +2 -0
  30. data/test/lib/vedeu/borders/border_test.rb +28 -40
  31. data/test/lib/vedeu/borders/borders_test.rb +0 -2
  32. data/test/lib/vedeu/borders/render_border_test.rb +11 -13
  33. data/test/lib/vedeu/buffers/buffer_test.rb +12 -5
  34. data/test/lib/vedeu/buffers/display_buffer_test.rb +2 -2
  35. data/test/lib/vedeu/cli/generator/application_test.rb +9 -9
  36. data/test/lib/vedeu/cli/generator/view_test.rb +10 -7
  37. data/test/lib/vedeu/cli/main_test.rb +4 -4
  38. data/test/lib/vedeu/colours/colour_translator_test.rb +2 -4
  39. data/test/lib/vedeu/common_test.rb +8 -0
  40. data/test/lib/vedeu/configuration/configuration_test.rb +4 -4
  41. data/test/lib/vedeu/cursor/cursors_test.rb +4 -4
  42. data/test/lib/vedeu/cursor/move_test.rb +11 -8
  43. data/test/lib/vedeu/cursor/refresh_cursor_test.rb +12 -12
  44. data/test/lib/vedeu/cursor/reposition_test.rb +7 -11
  45. data/test/lib/vedeu/distributed/client_test.rb +4 -4
  46. data/test/lib/vedeu/distributed/server_test.rb +4 -5
  47. data/test/lib/vedeu/dsl/border_test.rb +2 -2
  48. data/test/lib/vedeu/dsl/composition_test.rb +5 -4
  49. data/test/lib/vedeu/dsl/geometry_test.rb +6 -4
  50. data/test/lib/vedeu/dsl/interface_test.rb +9 -27
  51. data/test/lib/vedeu/dsl/use_test.rb +2 -2
  52. data/test/lib/vedeu/events/trigger_test.rb +2 -2
  53. data/test/lib/vedeu/geometry/coordinate_test.rb +9 -9
  54. data/test/lib/vedeu/geometry/geometry_test.rb +8 -2
  55. data/test/lib/vedeu/geometry/position_validator_test.rb +11 -14
  56. data/test/lib/vedeu/input/input_test.rb +5 -5
  57. data/test/lib/vedeu/input/keymap_test.rb +2 -2
  58. data/test/lib/vedeu/log/timer_test.rb +2 -2
  59. data/test/lib/vedeu/models/focus_test.rb +20 -25
  60. data/test/lib/vedeu/models/interface_test.rb +2 -2
  61. data/test/lib/vedeu/models/interfaces_test.rb +7 -5
  62. data/test/lib/vedeu/models/line_test.rb +0 -5
  63. data/test/lib/vedeu/models/menu_test.rb +0 -2
  64. data/test/lib/vedeu/null/geometry_test.rb +1 -4
  65. data/test/lib/vedeu/output/clear/named_interface_test.rb +2 -2
  66. data/test/lib/vedeu/output/esc_test.rb +7 -4
  67. data/test/lib/vedeu/output/output_test.rb +3 -6
  68. data/test/lib/vedeu/output/refresh_test.rb +2 -2
  69. data/test/lib/vedeu/output/renderers/file_test.rb +1 -3
  70. data/test/lib/vedeu/output/renderers/html_test.rb +1 -3
  71. data/test/lib/vedeu/output/renderers/json_test.rb +1 -3
  72. data/test/lib/vedeu/output/renderers_test.rb +2 -2
  73. data/test/lib/vedeu/output/viewport_test.rb +70 -71
  74. data/test/lib/vedeu/repositories/model_test.rb +0 -19
  75. data/test/lib/vedeu/repositories/repository_test.rb +8 -8
  76. data/test/lib/vedeu/runtime/application_test.rb +2 -2
  77. data/test/lib/vedeu/runtime/launcher_test.rb +7 -7
  78. data/test/lib/vedeu/runtime/router_test.rb +33 -33
  79. data/test/lib/vedeu/{traps_test.rb → runtime/traps_test.rb} +2 -2
  80. data/test/lib/vedeu/templating/decoder_test.rb +1 -0
  81. data/test/lib/vedeu/templating/encoder_test.rb +1 -0
  82. data/test/lib/vedeu/templating/template_test.rb +8 -1
  83. data/test/lib/vedeu/templating/view_template_test.rb +108 -22
  84. data/test/lib/vedeu/terminal_mode_test.rb +2 -2
  85. data/test/lib/vedeu/terminal_test.rb +6 -6
  86. data/test/support/helpers/model_test_class.rb +19 -0
  87. metadata +5 -17
  88. data/test/support/templates/background.erb +0 -1
  89. data/test/support/templates/colour.erb +0 -1
  90. data/test/support/templates/foreground.erb +0 -1
  91. data/test/support/templates/multiple.erb +0 -2
  92. data/test/support/templates/plain.erb +0 -1
  93. data/test/support/templates/style.erb +0 -1
@@ -15,7 +15,7 @@ module Vedeu
15
15
  let(:described) { Vedeu::DSL::Use }
16
16
  let(:model_instance) { Vedeu::DSL::TestUseClass }
17
17
 
18
- # before do
18
+ # before {
19
19
  # Vedeu.interfaces.reset
20
20
  # Vedeu.interface('hydrogen') do
21
21
  # delay 0.75
@@ -23,7 +23,7 @@ module Vedeu
23
23
  # Vedeu.interface('helium') do
24
24
  # duplicate('hydrogen')
25
25
  # end
26
- # end
26
+ # }
27
27
 
28
28
  describe '#duplicate' do
29
29
  subject { model_instance.duplicate(_name) }
@@ -40,10 +40,10 @@ module Vedeu
40
40
  context 'when multiple results occur from triggering an event' do
41
41
  let(:event_name) { :_multiple_results_ }
42
42
 
43
- before do
43
+ before {
44
44
  Vedeu::Event.register(event_name) { :_result_one_ }
45
45
  Vedeu::Event.register(event_name) { :_result_two_ }
46
- end
46
+ }
47
47
 
48
48
  it { subject.must_equal([:_result_one_, :_result_two_]) }
49
49
  end
@@ -13,19 +13,19 @@ module Vedeu
13
13
  let(:width) { 6 }
14
14
  let(:x) { 7 }
15
15
  let(:y) { 5 }
16
-
17
- before do
18
- Vedeu::Border.new(name: _name, enabled: true).store
16
+ let(:border) { Vedeu::Border.new(name: _name, enabled: true) }
17
+ let(:geometry) {
19
18
  Vedeu::Geometry.new(name: _name,
20
19
  height: height,
21
20
  width: width,
22
21
  x: x,
23
- y: y).store
24
- end
25
- after do
26
- Vedeu.borders.reset
27
- Vedeu.geometries.reset
28
- end
22
+ y: y)
23
+ }
24
+
25
+ before {
26
+ Vedeu.borders.stubs(:by_name).returns(border)
27
+ Vedeu.geometries.stubs(:by_name).returns(geometry)
28
+ }
29
29
 
30
30
  describe '#initialize' do
31
31
  it { instance.must_be_instance_of(described) }
@@ -30,8 +30,6 @@ module Vedeu
30
30
  let(:y) {}
31
31
  let(:yn) {}
32
32
 
33
- before { Terminal.stubs(:size).returns([12, 40]) }
34
-
35
33
  describe '#initialize' do
36
34
  it { instance.must_be_instance_of(described) }
37
35
  it {
@@ -70,6 +68,8 @@ module Vedeu
70
68
  end
71
69
 
72
70
  describe '#inspect' do
71
+ before { Terminal.stubs(:size).returns([12, 40]) }
72
+
73
73
  subject { instance.inspect }
74
74
 
75
75
  it { subject.must_be_instance_of(String) }
@@ -119,6 +119,8 @@ module Vedeu
119
119
  end
120
120
 
121
121
  describe '#top, #right, #bottom, #left' do
122
+ before { Terminal.stubs(:size).returns([12, 40]) }
123
+
122
124
  context 'maximised is true' do
123
125
  let(:attributes) { { maximised: true } }
124
126
 
@@ -195,6 +197,8 @@ module Vedeu
195
197
  describe '#maximise' do
196
198
  let(:attributes) { { maximised: true } }
197
199
 
200
+ before { Terminal.stubs(:size).returns([12, 40]) }
201
+
198
202
  subject { instance.maximise }
199
203
 
200
204
  it { instance.top.must_equal(1) }
@@ -206,6 +210,8 @@ module Vedeu
206
210
  describe '#unmaximise' do
207
211
  let(:attributes) { { maximised: false } }
208
212
 
213
+ before { Terminal.stubs(:size).returns([12, 40]) }
214
+
209
215
  subject { instance.unmaximise }
210
216
 
211
217
  it { instance.top.must_equal(1) }
@@ -10,25 +10,22 @@ module Vedeu
10
10
  let(:x) { 1 }
11
11
  let(:y) { 1 }
12
12
  let(:enabled) { true }
13
-
14
- before do
15
- IO.console.stubs(:size).returns([15, 40])
16
- Vedeu::Border.new({
17
- name: _name,
18
- enabled: enabled,
19
- }).store
20
- Vedeu::Geometry.new({
13
+ let(:border) { Vedeu::Border.new(name: _name, enabled: enabled) }
14
+ let(:geometry) {
15
+ Vedeu::Geometry.new(
21
16
  name: _name,
22
17
  x: 5,
23
18
  xn: 35,
24
19
  y: 5,
25
20
  yn: 10
26
- }).store
27
- end
28
- after do
29
- Vedeu.borders.reset
30
- Vedeu.geometries.reset
31
- end
21
+ )
22
+ }
23
+
24
+ before {
25
+ IO.console.stubs(:size).returns([15, 40])
26
+ Vedeu.borders.stubs(:by_name).returns(border)
27
+ Vedeu.geometries.stubs(:by_name).returns(geometry)
28
+ }
32
29
 
33
30
  describe '#initialize' do
34
31
  it { instance.must_be_instance_of(described) }
@@ -10,17 +10,17 @@ module Vedeu
10
10
  let(:instance) { described.new(reader) }
11
11
  let(:raw_mode) { true }
12
12
 
13
- before do
14
- reader.stubs(:raw_mode?).returns(raw_mode)
15
- Vedeu.stubs(:trigger).returns([false])
16
- end
17
-
18
13
  describe '#initialize' do
19
14
  it { instance.must_be_instance_of(described) }
20
15
  it { instance.instance_variable_get('@reader').must_equal(reader) }
21
16
  end
22
17
 
23
18
  describe '.capture' do
19
+ before {
20
+ reader.stubs(:raw_mode?).returns(raw_mode)
21
+ Vedeu.stubs(:trigger).returns([false])
22
+ }
23
+
24
24
  subject { described.capture(reader) }
25
25
 
26
26
  context 'when in cooked mode' do
@@ -29,10 +29,10 @@ module Vedeu
29
29
  subject { instance.add(key) }
30
30
 
31
31
  context 'when the key is already defined' do
32
- before do
32
+ before {
33
33
  Vedeu.keymaps.reset
34
34
  instance.add(key)
35
- end
35
+ }
36
36
 
37
37
  it { subject.must_equal(false) }
38
38
  end
@@ -10,10 +10,10 @@ module Vedeu
10
10
  let(:_time) { mock('Time') }
11
11
  let(:started) { 1434492219.5238185 }
12
12
 
13
- before do
13
+ before {
14
14
  Time.stubs(:now).returns(_time)
15
15
  _time.stubs(:to_f).returns(started)
16
- end
16
+ }
17
17
 
18
18
  describe '#initialize' do
19
19
  it { instance.must_be_instance_of(described) }
@@ -6,21 +6,16 @@ module Vedeu
6
6
 
7
7
  let(:described) { Vedeu::Focus }
8
8
 
9
- before do
9
+ before {
10
10
  Focus.reset
11
11
  Vedeu.interfaces.reset
12
- end
13
- after do
12
+ }
13
+ after {
14
14
  Vedeu::Focus.reset
15
15
  Vedeu.interfaces.reset
16
- end
16
+ }
17
17
 
18
18
  describe '#add' do
19
- before do
20
- Focus.reset
21
- Vedeu.interfaces.reset
22
- end
23
-
24
19
  context 'adds an interface to storage' do
25
20
  it {
26
21
  Focus.add('thallium').must_equal(['thallium'])
@@ -28,9 +23,9 @@ module Vedeu
28
23
  end
29
24
 
30
25
  context 'does not add it again if already exists' do
31
- before do
26
+ before {
32
27
  Vedeu.interface('thallium') {}
33
- end
28
+ }
34
29
 
35
30
  it {
36
31
  Focus.add('thallium')
@@ -47,9 +42,9 @@ module Vedeu
47
42
  end
48
43
 
49
44
  context 'adds the interface to storage focussed' do
50
- before do
45
+ before {
51
46
  Vedeu.interface('thallium') {}
52
- end
47
+ }
53
48
 
54
49
  it {
55
50
  Focus.add('thallium')
@@ -59,9 +54,9 @@ module Vedeu
59
54
  end
60
55
 
61
56
  context 'adds the interface to storage unfocussed' do
62
- before do
57
+ before {
63
58
  Vedeu.interface('thallium') {}
64
- end
59
+ }
65
60
 
66
61
  it {
67
62
  Focus.add('thallium')
@@ -161,23 +156,23 @@ module Vedeu
161
156
  end
162
157
 
163
158
  describe '#next_visible_item' do
164
- before do
159
+ before {
165
160
  Vedeu.stubs(:trigger)
166
161
  Vedeu.interface('gold') { visible true }
167
162
  Vedeu.interface('silver') { visible true }
168
163
  Vedeu.interface('platinum') { visible false }
169
- end
164
+ }
170
165
 
171
166
  it 'the next visible interface is focussed when the method is called' do
172
167
  Focus.next_visible_item.must_equal('silver')
173
168
  end
174
169
 
175
170
  context 'when there are no visible interfaces' do
176
- before do
171
+ before {
177
172
  Vedeu.interface('gold') { visible false }
178
173
  Vedeu.interface('silver') { visible false }
179
174
  Vedeu.interface('platinum') { visible false }
180
- end
175
+ }
181
176
 
182
177
  it 'puts the first interface defined in focus' do
183
178
  Focus.next_visible_item.must_equal('gold')
@@ -208,23 +203,23 @@ module Vedeu
208
203
  end
209
204
 
210
205
  describe '#prev_visible_item' do
211
- before do
206
+ before {
212
207
  Vedeu.stubs(:trigger)
213
208
  Vedeu.interface('gold') { visible true }
214
209
  Vedeu.interface('silver') { visible true }
215
210
  Vedeu.interface('platinum') { visible false }
216
- end
211
+ }
217
212
 
218
213
  it 'the previous visible interface is focussed when the method is called' do
219
214
  Focus.prev_visible_item.must_equal('silver')
220
215
  end
221
216
 
222
217
  context 'when there are no visible interfaces' do
223
- before do
218
+ before {
224
219
  Vedeu.interface('gold') { visible false }
225
220
  Vedeu.interface('silver') { visible false }
226
221
  Vedeu.interface('platinum') { visible false }
227
- end
222
+ }
228
223
 
229
224
  it 'puts the first interface defined in focus' do
230
225
  Focus.prev_visible_item.must_equal('gold')
@@ -239,10 +234,10 @@ module Vedeu
239
234
  end
240
235
 
241
236
  describe '#refresh' do
242
- before do
237
+ before {
243
238
  Focus.add('thallium')
244
239
  Vedeu.stubs(:trigger).returns([])
245
- end
240
+ }
246
241
 
247
242
  it 'triggers the event to refresh the interface current in focus' do
248
243
  Focus.refresh.must_equal([])
@@ -137,14 +137,14 @@ module Vedeu
137
137
  let(:border) { mock('Vedeu::Border') }
138
138
  let(:view) { mock('Vedeu::Viewport') }
139
139
 
140
- before do
140
+ before {
141
141
  Vedeu::Clear::NamedInterface.stubs(:render).returns(:clear)
142
142
 
143
143
  Vedeu.borders.stubs(:by_name).returns(border)
144
144
  border.stubs(:render).returns(:border)
145
145
  Vedeu::Viewport.stubs(:new).returns(view)
146
146
  view.stubs(:render).returns(:view)
147
- end
147
+ }
148
148
 
149
149
  subject { instance.render }
150
150
 
@@ -9,17 +9,19 @@ module Vedeu
9
9
  it { described.must_respond_to(:interfaces) }
10
10
 
11
11
  describe '#zindexed' do
12
- before do
13
- @hydrogen = Vedeu.interface 'hydrogen' do
12
+ before {
13
+ Vedeu.interfaces.reset
14
+
15
+ @hydrogen = Vedeu.interface('hydrogen') do
14
16
  zindex 2
15
17
  end
16
- @helium = Vedeu.interface 'helium' do
18
+ @helium = Vedeu.interface('helium') do
17
19
  zindex 3
18
20
  end
19
- @lithium = Vedeu.interface 'lithium' do
21
+ @lithium = Vedeu.interface('lithium') do
20
22
  zindex 1
21
23
  end
22
- end
24
+ }
23
25
  after { Vedeu.interfaces.reset }
24
26
 
25
27
  subject { Vedeu.interfaces.zindexed }
@@ -39,11 +39,6 @@ module Vedeu
39
39
  let(:colour) { Colour.new(foreground: '#ff0000', background: '#000000') }
40
40
  let(:style) { Style.new('normal') }
41
41
 
42
- before do
43
- parent.stubs(:colour)
44
- parent.stubs(:style)
45
- end
46
-
47
42
  describe '#initialize' do
48
43
  it { instance.must_be_instance_of(described) }
49
44
  it { instance.instance_variable_get('@streams').must_equal(streams) }
@@ -19,8 +19,6 @@ module Vedeu
19
19
  let(:current) { 0 }
20
20
  let(:selected) {}
21
21
 
22
- before { Vedeu.menus.reset }
23
-
24
22
  describe '.menu' do
25
23
  subject {
26
24
  described.menu('elements') do
@@ -15,10 +15,7 @@ module Vedeu
15
15
  }
16
16
  let(:_name) { 'null_geometry' }
17
17
 
18
- before do
19
- Vedeu::Terminal.stubs(:height).returns(25)
20
- Vedeu::Terminal.stubs(:width).returns(40)
21
- end
18
+ before { Vedeu::Terminal.stubs(:size).returns([25, 40]) }
22
19
 
23
20
  describe '#initialize' do
24
21
  it { instance.must_be_instance_of(described) }
@@ -28,10 +28,10 @@ module Vedeu
28
28
  Vedeu::Geometry.new(name: _name, x: 1, y: 1, xn: 2, yn: 2)
29
29
  }
30
30
 
31
- before do
31
+ before {
32
32
  Vedeu.interfaces.stubs(:by_name).returns(interface)
33
33
  Vedeu.geometries.stubs(:by_name).returns(geometry)
34
- end
34
+ }
35
35
 
36
36
  subject { instance.render }
37
37
 
@@ -6,8 +6,6 @@ module Vedeu
6
6
 
7
7
  let(:described) { Vedeu::Esc }
8
8
 
9
- before { Vedeu::Terminal.stubs(:size).returns([80, 25]) }
10
-
11
9
  describe '.escape' do
12
10
  let(:stream) { "\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l" }
13
11
 
@@ -54,8 +52,6 @@ module Vedeu
54
52
  it { described.string('hide_cursor').must_equal("\e[?25l") }
55
53
  it { described.string('screen_init').
56
54
  must_equal("\e[0m\e[39m\e[49m\e[2J\e[?25l") }
57
- it { described.string('screen_exit').
58
- must_equal("\e[?25h\e[39m\e[49m\e[0m\e[80;25H\n") }
59
55
  it { described.string('negative').must_equal("\e[7m") }
60
56
  it { described.string('positive').must_equal("\e[27m") }
61
57
  it { described.string('reset').must_equal("\e[0m") }
@@ -66,6 +62,13 @@ module Vedeu
66
62
  it { described.string('underline_off').must_equal("\e[24m") }
67
63
  it { described.string('cursor_position').must_equal("\e[6n") }
68
64
  end
65
+
66
+ context 'screen_exit' do
67
+ before { Vedeu::Terminal.stubs(:size).returns([80, 25]) }
68
+
69
+ it { described.string('screen_exit').
70
+ must_equal("\e[?25h\e[39m\e[49m\e[0m\e[80;25H\n") }
71
+ end
69
72
  end
70
73
 
71
74
  end # Esc