vedeu 0.4.16 → 0.4.17

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 (75) hide show
  1. checksums.yaml +4 -4
  2. data/lib/vedeu/api.rb +7 -21
  3. data/lib/vedeu/bindings.rb +2 -6
  4. data/lib/vedeu/buffers/buffer.rb +29 -34
  5. data/lib/vedeu/cursor/cursor.rb +5 -2
  6. data/lib/vedeu/distributed/all.rb +5 -5
  7. data/lib/vedeu/distributed/server.rb +1 -1
  8. data/lib/vedeu/dsl/components/border.rb +1 -2
  9. data/lib/vedeu/dsl/components/geometry.rb +0 -47
  10. data/lib/vedeu/dsl/interface.rb +4 -11
  11. data/lib/vedeu/dsl/line.rb +1 -2
  12. data/lib/vedeu/dsl/shared/all.rb +1 -2
  13. data/lib/vedeu/dsl/shared/{colour.rb → presentation.rb} +27 -4
  14. data/lib/vedeu/dsl/shared/use.rb +50 -29
  15. data/lib/vedeu/dsl/stream.rb +1 -2
  16. data/lib/vedeu/geometry/geometry.rb +22 -11
  17. data/lib/vedeu/geometry/index_position.rb +0 -19
  18. data/lib/vedeu/geometry/position_validator.rb +8 -8
  19. data/lib/vedeu/models/interface.rb +34 -76
  20. data/lib/vedeu/models/null_interface.rb +5 -0
  21. data/lib/vedeu/models/stream.rb +1 -1
  22. data/lib/vedeu/output/border.rb +25 -41
  23. data/lib/vedeu/output/clear.rb +1 -7
  24. data/lib/vedeu/output/esc.rb +10 -10
  25. data/lib/vedeu/output/presentation.rb +2 -0
  26. data/lib/vedeu/output/renderers/escape_sequence_renderer.rb +3 -0
  27. data/lib/vedeu/repositories/model.rb +6 -0
  28. data/lib/vedeu/repositories/repositories/groups.rb +12 -0
  29. data/lib/vedeu/repositories/repository.rb +11 -8
  30. data/lib/vedeu/storage/all.rb +4 -4
  31. data/lib/vedeu/support/visibility.rb +8 -0
  32. data/test/lib/vedeu/buffers/buffer_test.rb +0 -2
  33. data/test/lib/vedeu/cursor/cursor_test.rb +14 -0
  34. data/test/lib/vedeu/dsl/components/border_test.rb +2 -2
  35. data/test/lib/vedeu/dsl/components/geometry_test.rb +63 -82
  36. data/test/lib/vedeu/dsl/components/keymap_test.rb +3 -3
  37. data/test/lib/vedeu/dsl/components/menu_test.rb +8 -8
  38. data/test/lib/vedeu/dsl/interface_test.rb +14 -22
  39. data/test/lib/vedeu/dsl/line_test.rb +4 -4
  40. data/test/lib/vedeu/dsl/shared/{colour_test.rb → presentation_test.rb} +19 -11
  41. data/test/lib/vedeu/dsl/shared/text_test.rb +15 -15
  42. data/test/lib/vedeu/dsl/shared/use_test.rb +24 -7
  43. data/test/lib/vedeu/geometry/geometry_test.rb +22 -19
  44. data/test/lib/vedeu/geometry/grid_test.rb +3 -3
  45. data/test/lib/vedeu/geometry/index_position_test.rb +0 -45
  46. data/test/lib/vedeu/geometry/position_test.rb +5 -5
  47. data/test/lib/vedeu/models/cell_test.rb +3 -3
  48. data/test/lib/vedeu/models/char_test.rb +5 -5
  49. data/test/lib/vedeu/models/interface_test.rb +7 -53
  50. data/test/lib/vedeu/models/null_test.rb +2 -2
  51. data/test/lib/vedeu/models/stream_test.rb +5 -5
  52. data/test/lib/vedeu/output/border_test.rb +1 -0
  53. data/test/lib/vedeu/output/colour_test.rb +16 -16
  54. data/test/lib/vedeu/output/esc_test.rb +15 -1
  55. data/test/lib/vedeu/output/html_char_test.rb +4 -4
  56. data/test/lib/vedeu/output/style_test.rb +15 -13
  57. data/test/lib/vedeu/output/text_test.rb +3 -3
  58. data/test/lib/vedeu/repositories/collection_test.rb +2 -2
  59. data/test/lib/vedeu/repositories/model_test.rb +19 -0
  60. data/test/lib/vedeu/repositories/repositories/groups_test.rb +22 -0
  61. data/test/lib/vedeu/repositories/repository_test.rb +50 -16
  62. data/test/lib/vedeu/support/common_test.rb +5 -5
  63. data/test/lib/vedeu/support/terminal_test.rb +3 -3
  64. data/test/lib/vedeu/support/visibility_test.rb +8 -0
  65. data/test/support/helpers/model_test_class.rb +18 -0
  66. data/test/test_helper.rb +1 -1
  67. data/vedeu.gemspec +2 -2
  68. metadata +7 -20
  69. data/lib/vedeu/dsl/shared/style.rb +0 -39
  70. data/test/lib/vedeu/dsl/shared/style_test.rb +0 -25
  71. data/test/support/helpers/all.rb +0 -5
  72. data/test/support/helpers/dsl_model_test_class.rb +0 -25
  73. data/test/support/helpers/helpers.rb +0 -17
  74. data/test/support/helpers/repositories.rb +0 -26
  75. data/test/support/helpers/repository_test_module.rb +0 -21
@@ -55,13 +55,13 @@ module Vedeu
55
55
  end
56
56
 
57
57
  describe '#name' do
58
- let(:value) { 'gold' }
58
+ let(:_value) { 'gold' }
59
59
 
60
- subject { instance.name(value) }
60
+ subject { instance.name(_value) }
61
61
 
62
62
  it 'defines the name of the keymap' do
63
63
  subject
64
- model.name.must_equal(value)
64
+ model.name.must_equal(_value)
65
65
  end
66
66
  end
67
67
 
@@ -24,9 +24,9 @@ module Vedeu
24
24
  end
25
25
 
26
26
  describe '#item' do
27
- let(:value) { :platinum }
27
+ let(:_value) { :platinum }
28
28
 
29
- subject { instance.item(value) }
29
+ subject { instance.item(_value) }
30
30
 
31
31
  context 'when items are provided' do
32
32
  it { subject.must_equal([:sodium,
@@ -38,25 +38,25 @@ module Vedeu
38
38
  end
39
39
 
40
40
  describe '#items' do
41
- let(:value) { [] }
41
+ let(:_value) { [] }
42
42
 
43
- subject { instance.items(value) }
43
+ subject { instance.items(_value) }
44
44
 
45
45
  context 'when no items are provided' do
46
46
  it { subject.must_equal([]) }
47
47
  end
48
48
 
49
49
  context 'when items are provided' do
50
- let(:value) { [:gold, :silver, :tin] }
50
+ let(:_value) { [:gold, :silver, :tin] }
51
51
 
52
- it { subject.must_equal(value)}
52
+ it { subject.must_equal(_value)}
53
53
  end
54
54
  end
55
55
 
56
56
  describe '#name' do
57
- let(:value) { 'metals' }
57
+ let(:_value) { 'metals' }
58
58
 
59
- subject { instance.name(value) }
59
+ subject { instance.name(_value) }
60
60
 
61
61
  it 'returns the name of the menu' do
62
62
  subject
@@ -69,11 +69,11 @@ module Vedeu
69
69
  end
70
70
 
71
71
  describe '#cursor' do
72
- let(:value) {}
72
+ let(:_value) {}
73
73
 
74
74
  before { Vedeu.cursors.reset }
75
75
 
76
- subject { instance.cursor(value) }
76
+ subject { instance.cursor(_value) }
77
77
 
78
78
  it {
79
79
  subject
@@ -81,7 +81,7 @@ module Vedeu
81
81
  }
82
82
 
83
83
  context 'when the value is false' do
84
- let(:value) { false }
84
+ let(:_value) { false }
85
85
 
86
86
  it {
87
87
  subject
@@ -90,7 +90,7 @@ module Vedeu
90
90
  end
91
91
 
92
92
  context 'when the value is nil' do
93
- let(:value) {}
93
+ let(:_value) {}
94
94
 
95
95
  it {
96
96
  subject
@@ -99,7 +99,7 @@ module Vedeu
99
99
  end
100
100
 
101
101
  context 'when the value is :show' do
102
- let(:value) { :show }
102
+ let(:_value) { :show }
103
103
 
104
104
  it {
105
105
  subject
@@ -108,7 +108,7 @@ module Vedeu
108
108
  end
109
109
 
110
110
  context 'when the value is true' do
111
- let(:value) { true }
111
+ let(:_value) { true }
112
112
 
113
113
  it {
114
114
  subject
@@ -117,7 +117,7 @@ module Vedeu
117
117
  end
118
118
 
119
119
  context 'when the value is :yes' do
120
- let(:value) { :yes }
120
+ let(:_value) { :yes }
121
121
 
122
122
  it {
123
123
  subject
@@ -136,13 +136,9 @@ module Vedeu
136
136
  end
137
137
 
138
138
  describe '#delay' do
139
- it 'sets the delay attribute' do
140
- Vedeu.interface 'cobalt' do
141
- delay 0.25
142
- end
139
+ subject { instance.delay(0.25) }
143
140
 
144
- Vedeu.use('cobalt').delay.must_equal(0.25)
145
- end
141
+ it { subject; model.delay.must_equal(0.25) }
146
142
  end
147
143
 
148
144
  describe '#focus!' do
@@ -205,16 +201,16 @@ module Vedeu
205
201
  end
206
202
 
207
203
  describe '#group' do
208
- let(:value) { 'elements' }
204
+ let(:_value) { 'elements' }
209
205
 
210
206
  before { Vedeu.groups.reset }
211
207
 
212
- subject { instance.group(value) }
208
+ subject { instance.group(_value) }
213
209
 
214
210
  it { subject.must_be_instance_of(Vedeu::Group) }
215
211
 
216
212
  context 'when the value is empty or nil' do
217
- let(:value) { '' }
213
+ let(:_value) { '' }
218
214
 
219
215
  it { subject.must_equal(false) }
220
216
  end
@@ -267,13 +263,9 @@ module Vedeu
267
263
  end
268
264
 
269
265
  describe '#name' do
270
- it 'sets the name attribute' do
271
- Vedeu.interface do
272
- name 'nickel'
273
- end
266
+ subject { instance.name('nickel') }
274
267
 
275
- Vedeu.use('nickel').name.must_equal('nickel')
276
- end
268
+ it { subject; model.name.must_equal('nickel') }
277
269
  end
278
270
 
279
271
  describe '#show!' do
@@ -34,7 +34,7 @@ module Vedeu
34
34
  end
35
35
 
36
36
  describe '#line' do
37
- let(:value) { '' }
37
+ let(:_value) { '' }
38
38
 
39
39
  subject {
40
40
  instance.line do
@@ -50,13 +50,13 @@ module Vedeu
50
50
 
51
51
  context 'when the block is not given' do
52
52
  context 'when the value is given' do
53
- subject { instance.line(value) }
53
+ subject { instance.line(_value) }
54
54
  end
55
55
 
56
56
  context 'when the value is not given' do
57
- let(:value) {}
57
+ let(:_value) {}
58
58
 
59
- subject { instance.line(value) }
59
+ subject { instance.line(_value) }
60
60
 
61
61
  it { proc { subject }.must_raise(InvalidSyntax) }
62
62
  end
@@ -4,23 +4,23 @@ module Vedeu
4
4
 
5
5
  module DSL
6
6
 
7
- describe Colour do
7
+ describe Presentation do
8
8
 
9
- let(:described) { Vedeu::DSL::Colour }
10
- let(:dsl_klass) { Vedeu::DSL::Interface.new(model) }
9
+ let(:described) { Vedeu::DSL::Presentation }
10
+ let(:instance) { Vedeu::DSL::Interface.new(model) }
11
11
  let(:model) { Vedeu::Interface.new }
12
12
  let(:background) { '#00ff00' }
13
13
  let(:foreground) { '#ff00ff' }
14
14
 
15
15
  describe 'alias methods' do
16
- it { dsl_klass.must_respond_to(:bg) }
17
- it { dsl_klass.must_respond_to(:bgcolor) }
18
- it { dsl_klass.must_respond_to(:fg) }
19
- it { dsl_klass.must_respond_to(:fgcolor) }
16
+ it { instance.must_respond_to(:bg) }
17
+ it { instance.must_respond_to(:bgcolor) }
18
+ it { instance.must_respond_to(:fg) }
19
+ it { instance.must_respond_to(:fgcolor) }
20
20
  end
21
21
 
22
22
  describe '#background' do
23
- subject { dsl_klass.background(background) }
23
+ subject { instance.background(background) }
24
24
 
25
25
  it { subject.must_be_instance_of(Vedeu::Colour) }
26
26
 
@@ -32,7 +32,7 @@ module Vedeu
32
32
  end
33
33
 
34
34
  describe '#foreground' do
35
- subject { dsl_klass.foreground(foreground) }
35
+ subject { instance.foreground(foreground) }
36
36
 
37
37
  it { subject.must_be_instance_of(Vedeu::Colour) }
38
38
 
@@ -46,7 +46,7 @@ module Vedeu
46
46
  describe '#colour' do
47
47
  let(:attributes) { { background: background, foreground: foreground } }
48
48
 
49
- subject { dsl_klass.colour(attributes) }
49
+ subject { instance.colour(attributes) }
50
50
 
51
51
  it { subject.must_be_instance_of(Vedeu::Colour) }
52
52
 
@@ -71,7 +71,15 @@ module Vedeu
71
71
  end
72
72
  end
73
73
 
74
- end # Colour
74
+ describe '#style' do
75
+ let(:args) { :bold }
76
+
77
+ subject { instance.style(args) }
78
+
79
+ it { subject.must_be_instance_of(Vedeu::Style) }
80
+ end
81
+
82
+ end # Presentation
75
83
 
76
84
  end # DSL
77
85
 
@@ -7,7 +7,7 @@ module Vedeu
7
7
  describe Text do
8
8
 
9
9
  describe '#text' do
10
- let(:value) {}
10
+ let(:_value) {}
11
11
  let(:options) { {} }
12
12
  let(:modified_options) {
13
13
  {
@@ -19,7 +19,7 @@ module Vedeu
19
19
  let(:model) { Vedeu::Line.new }
20
20
  let(:instance) { Vedeu::DSL::Line.new(model) }
21
21
 
22
- subject { instance.text(value, options) }
22
+ subject { instance.text(_value, options) }
23
23
 
24
24
  context 'when the model is a Vedeu::Interface' do
25
25
  let(:model) { Vedeu::Interface.new }
@@ -28,7 +28,7 @@ module Vedeu
28
28
  it { subject.must_be_instance_of(Vedeu::Lines) }
29
29
 
30
30
  it 'adds the text to the model' do
31
- Vedeu::Text.expects(:add).with(value, modified_options)
31
+ Vedeu::Text.expects(:add).with(_value, modified_options)
32
32
  subject
33
33
  end
34
34
  end
@@ -40,7 +40,7 @@ module Vedeu
40
40
  it { subject.must_be_instance_of(Vedeu::Streams) }
41
41
 
42
42
  it 'adds the text to the model' do
43
- Vedeu::Text.expects(:add).with(value, modified_options)
43
+ Vedeu::Text.expects(:add).with(_value, modified_options)
44
44
  subject
45
45
  end
46
46
  end
@@ -53,7 +53,7 @@ module Vedeu
53
53
  it { subject.must_be_instance_of(Vedeu::Streams) }
54
54
 
55
55
  it 'adds the text to the model' do
56
- Vedeu::Text.expects(:add).with(value, modified_options)
56
+ Vedeu::Text.expects(:add).with(_value, modified_options)
57
57
  subject
58
58
  end
59
59
  end
@@ -63,8 +63,8 @@ module Vedeu
63
63
  let(:anchor) { :align }
64
64
 
65
65
  it 'adds the text to the model' do
66
- Vedeu::Text.expects(:add).with(value, modified_options)
67
- instance.align(value, options)
66
+ Vedeu::Text.expects(:add).with(_value, modified_options)
67
+ instance.align(_value, options)
68
68
  end
69
69
  end
70
70
 
@@ -72,8 +72,8 @@ module Vedeu
72
72
  let(:anchor) { :center }
73
73
 
74
74
  it 'adds the text to the model' do
75
- Vedeu::Text.expects(:add).with(value, modified_options)
76
- instance.center(value, options)
75
+ Vedeu::Text.expects(:add).with(_value, modified_options)
76
+ instance.center(_value, options)
77
77
  end
78
78
  end
79
79
 
@@ -81,8 +81,8 @@ module Vedeu
81
81
  let(:anchor) { :centre }
82
82
 
83
83
  it 'adds the text to the model' do
84
- Vedeu::Text.expects(:add).with(value, modified_options)
85
- instance.centre(value, options)
84
+ Vedeu::Text.expects(:add).with(_value, modified_options)
85
+ instance.centre(_value, options)
86
86
  end
87
87
  end
88
88
 
@@ -90,8 +90,8 @@ module Vedeu
90
90
  let(:anchor) { :left }
91
91
 
92
92
  it 'adds the text to the model' do
93
- Vedeu::Text.expects(:add).with(value, modified_options)
94
- instance.left(value, options)
93
+ Vedeu::Text.expects(:add).with(_value, modified_options)
94
+ instance.left(_value, options)
95
95
  end
96
96
  end
97
97
 
@@ -99,8 +99,8 @@ module Vedeu
99
99
  let(:anchor) { :right }
100
100
 
101
101
  it 'adds the text to the model' do
102
- Vedeu::Text.expects(:add).with(value, modified_options)
103
- instance.right(value, options)
102
+ Vedeu::Text.expects(:add).with(_value, modified_options)
103
+ instance.right(_value, options)
104
104
  end
105
105
  end
106
106
  end
@@ -6,17 +6,34 @@ module Vedeu
6
6
 
7
7
  describe Use do
8
8
 
9
- describe '.use' do
10
- context 'when an interface has not been defined' do
11
- it { proc { Vedeu.use('unknown') }.must_raise(ModelNotFound) }
9
+ # before do
10
+ # Vedeu.interfaces.reset
11
+ # Vedeu.interface('hydrogen') do
12
+ # delay 0.75
13
+ # end
14
+ # Vedeu.interface('helium') do
15
+ # duplicate('hydrogen')
16
+ # end
17
+ # end
18
+
19
+ describe '#duplicate' do
20
+ context 'when the model exists' do
21
+ end
22
+
23
+ context 'when the model does not exist' do
12
24
  end
25
+ end
13
26
 
14
- it 'returns an instance of the named interface' do
15
- Vedeu.interface('aluminium') do
16
- # ...
27
+ describe '.use' do
28
+ context 'when the model exists' do
29
+ context 'and the attribute exists' do
30
+ end
31
+
32
+ context 'but the attribute does not exist' do
17
33
  end
34
+ end
18
35
 
19
- Vedeu.use('aluminium').must_be_instance_of(Vedeu::Interface)
36
+ context 'when the model does not exist' do
20
37
  end
21
38
  end
22
39
 
@@ -8,14 +8,15 @@ module Vedeu
8
8
  let(:instance) { described.new(attributes) }
9
9
  let(:attributes) {
10
10
  {
11
- centred: centred,
12
- height: height,
13
- name: _name,
14
- width: width,
15
- x: x,
16
- xn: xn,
17
- y: y,
18
- yn: yn,
11
+ centred: centred,
12
+ height: height,
13
+ name: _name,
14
+ repository: Vedeu.geometries,
15
+ width: width,
16
+ x: x,
17
+ xn: xn,
18
+ y: y,
19
+ yn: yn,
19
20
  }
20
21
  }
21
22
  let(:centred) {}
@@ -30,18 +31,20 @@ module Vedeu
30
31
  before { Terminal.stubs(:size).returns([12, 40]) }
31
32
 
32
33
  describe '#initialize' do
33
- it { instance.must_be_instance_of(Geometry) }
34
- it { instance.instance_variable_get('@attributes').must_equal(attributes) }
35
- it { instance.instance_variable_get('@centred').must_equal(centred) }
36
- it { instance.instance_variable_get('@height').must_equal(height) }
37
- it { instance.instance_variable_get('@name').must_equal(_name) }
38
- it { instance.instance_variable_get('@width').must_equal(width) }
39
- it { instance.instance_variable_get('@x').must_equal(x) }
40
- it { instance.instance_variable_get('@xn').must_equal(xn) }
41
- it { instance.instance_variable_get('@y').must_equal(y) }
42
- it { instance.instance_variable_get('@yn').must_equal(yn) }
34
+ subject { instance }
35
+
36
+ it { subject.must_be_instance_of(Geometry) }
37
+ it { subject.instance_variable_get('@attributes').must_equal(attributes) }
38
+ it { subject.instance_variable_get('@centred').must_equal(centred) }
39
+ it { subject.instance_variable_get('@height').must_equal(height) }
40
+ it { subject.instance_variable_get('@name').must_equal(_name) }
41
+ it { subject.instance_variable_get('@width').must_equal(width) }
42
+ it { subject.instance_variable_get('@x').must_equal(x) }
43
+ it { subject.instance_variable_get('@xn').must_equal(xn) }
44
+ it { subject.instance_variable_get('@y').must_equal(y) }
45
+ it { subject.instance_variable_get('@yn').must_equal(yn) }
43
46
  it do
44
- instance.instance_variable_get('@repository').must_equal(Vedeu.geometries)
47
+ subject.instance_variable_get('@repository').must_equal(Vedeu.geometries)
45
48
  end
46
49
  end
47
50