vedeu 0.0.25 → 0.0.26

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +10 -9
  3. data/Rakefile +0 -10
  4. data/bin/composition +1 -1
  5. data/examples/single_interface_app.rb +7 -4
  6. data/lib/vedeu.rb +19 -48
  7. data/lib/vedeu/application.rb +8 -7
  8. data/lib/vedeu/configuration.rb +4 -4
  9. data/lib/vedeu/input/input.rb +3 -0
  10. data/lib/vedeu/launcher.rb +3 -0
  11. data/lib/vedeu/models/background.rb +13 -0
  12. data/lib/vedeu/models/coercions.rb +21 -0
  13. data/lib/vedeu/models/colour.rb +22 -0
  14. data/lib/vedeu/{repository → models}/command.rb +2 -0
  15. data/lib/vedeu/models/composition.rb +30 -0
  16. data/lib/vedeu/models/foreground.rb +13 -0
  17. data/lib/vedeu/models/interface.rb +62 -0
  18. data/lib/vedeu/models/interface_collection.rb +24 -0
  19. data/lib/vedeu/models/line.rb +22 -0
  20. data/lib/vedeu/models/line_collection.rb +27 -0
  21. data/lib/vedeu/models/presentation.rb +13 -0
  22. data/lib/vedeu/models/stream.rb +21 -0
  23. data/lib/vedeu/models/stream_collection.rb +27 -0
  24. data/lib/vedeu/models/style_collection.rb +23 -0
  25. data/lib/vedeu/output/interface_renderer.rb +62 -0
  26. data/lib/vedeu/output/output.rb +6 -5
  27. data/lib/vedeu/process/process.rb +15 -31
  28. data/lib/vedeu/repository/command_repository.rb +13 -14
  29. data/lib/vedeu/repository/interface_repository.rb +12 -13
  30. data/lib/vedeu/repository/repository.rb +2 -0
  31. data/lib/vedeu/{output → support}/cursor.rb +2 -0
  32. data/lib/vedeu/support/esc.rb +112 -0
  33. data/lib/vedeu/support/events.rb +21 -0
  34. data/lib/vedeu/support/geometry.rb +66 -0
  35. data/lib/vedeu/support/parser.rb +27 -0
  36. data/lib/vedeu/support/terminal.rb +31 -134
  37. data/lib/vedeu/{output → support}/translator.rb +12 -8
  38. data/lib/vedeu/{output → support}/wordwrap.rb +2 -4
  39. data/lib/vedeu/version.rb +1 -1
  40. data/test/lib/vedeu/application_test.rb +7 -2
  41. data/test/lib/vedeu/configuration_test.rb +13 -8
  42. data/test/lib/vedeu/input/input_test.rb +2 -1
  43. data/test/lib/vedeu/launcher_test.rb +7 -2
  44. data/test/lib/vedeu/models/background_test.rb +35 -0
  45. data/test/lib/vedeu/models/colour_test.rb +71 -0
  46. data/test/lib/vedeu/models/command_test.rb +109 -0
  47. data/test/lib/vedeu/models/composition_test.rb +187 -0
  48. data/test/lib/vedeu/models/foreground_test.rb +35 -0
  49. data/test/lib/vedeu/models/interface_collection_test.rb +57 -0
  50. data/test/lib/vedeu/models/interface_test.rb +220 -0
  51. data/test/lib/vedeu/models/line_collection_test.rb +69 -0
  52. data/test/lib/vedeu/models/line_test.rb +76 -0
  53. data/test/lib/vedeu/models/presentation_test.rb +8 -0
  54. data/test/lib/vedeu/models/stream_collection_test.rb +57 -0
  55. data/test/lib/vedeu/models/stream_test.rb +76 -0
  56. data/test/lib/vedeu/models/style_collection_test.rb +22 -0
  57. data/test/lib/vedeu/output/interface_renderer_test.rb +12 -0
  58. data/test/lib/vedeu/output/output_test.rb +15 -30
  59. data/test/lib/vedeu/process/process_test.rb +22 -44
  60. data/test/lib/vedeu/repository/command_repository_test.rb +22 -16
  61. data/test/lib/vedeu/repository/interface_repository_test.rb +62 -14
  62. data/test/lib/vedeu/repository/repository_test.rb +1 -0
  63. data/test/lib/vedeu/repository/storage_test.rb +13 -6
  64. data/test/lib/vedeu/{output → support}/cursor_test.rb +1 -0
  65. data/test/lib/vedeu/support/esc_test.rb +348 -0
  66. data/test/lib/vedeu/support/events_test.rb +37 -0
  67. data/test/lib/vedeu/support/exit_test.rb +1 -0
  68. data/test/lib/vedeu/support/geometry_test.rb +131 -0
  69. data/test/lib/vedeu/support/parser_test.rb +56 -0
  70. data/test/lib/vedeu/support/queue_test.rb +1 -0
  71. data/test/lib/vedeu/support/terminal_test.rb +1 -119
  72. data/test/lib/vedeu/{output → support}/translator_test.rb +17 -12
  73. data/test/lib/vedeu/{output → support}/wordwrap_test.rb +1 -0
  74. data/test/lib/vedeu/version_test.rb +1 -0
  75. data/test/lib/vedeu_test.rb +1 -0
  76. data/{lib/vedeu/repository → test/support}/dummy_command.rb +0 -0
  77. data/{lib/vedeu/repository → test/support}/dummy_interface.rb +0 -0
  78. data/test/support/json/int1_lin1_str1.json +10 -0
  79. data/test/support/json/int1_lin1_str3.json +18 -0
  80. data/test/support/json/int1_lin2_str1.json +17 -0
  81. data/test/support/json/int1_lin2_str3.json +33 -0
  82. data/test/support/json/int1_lin2_str3_styles.json +43 -0
  83. data/test/support/json/int2_lin1_str1.json +20 -0
  84. data/test/support/json/int2_lin1_str3.json +36 -0
  85. data/test/support/json/int2_lin2_str1.json +34 -0
  86. data/test/support/json/int2_lin2_str3.json +66 -0
  87. data/test/support/json/int2_lin2_str3_styles.json +158 -0
  88. data/test/support/output_1.json +9 -0
  89. data/test/support/output_1.rb +14 -0
  90. data/test/support/output_2.json +1 -0
  91. data/test/support/output_2.rb +19 -0
  92. data/test/test_helper.rb +0 -2
  93. data/vedeu.gemspec +0 -3
  94. metadata +98 -150
  95. data/config/cucumber.yml +0 -8
  96. data/documentation/composition.ebnf +0 -7
  97. data/documentation/diagram/ColourDirective.png +0 -0
  98. data/documentation/diagram/Directive.png +0 -0
  99. data/documentation/diagram/Interface.png +0 -0
  100. data/documentation/diagram/Output.png +0 -0
  101. data/documentation/diagram/PositionDirective.png +0 -0
  102. data/documentation/diagram/Stream.png +0 -0
  103. data/documentation/diagram/StyleDirective.png +0 -0
  104. data/documentation/diagram/rr-1.35.837.png +0 -0
  105. data/documentation/index.html +0 -325
  106. data/features/getting_started.feature +0 -10
  107. data/features/step_definitions/vedeu_steps.rb +0 -11
  108. data/features/support/env.rb +0 -12
  109. data/lib/vedeu/output/background.rb +0 -27
  110. data/lib/vedeu/output/base.rb +0 -57
  111. data/lib/vedeu/output/buffer/composition.rb +0 -24
  112. data/lib/vedeu/output/buffer/formatting.rb +0 -25
  113. data/lib/vedeu/output/buffer/interface.rb +0 -14
  114. data/lib/vedeu/output/buffer/line.rb +0 -14
  115. data/lib/vedeu/output/buffer/stream.rb +0 -14
  116. data/lib/vedeu/output/buffer/style.rb +0 -11
  117. data/lib/vedeu/output/colour.rb +0 -39
  118. data/lib/vedeu/output/compositor.rb +0 -72
  119. data/lib/vedeu/output/directive.rb +0 -63
  120. data/lib/vedeu/output/esc.rb +0 -61
  121. data/lib/vedeu/output/foreground.rb +0 -27
  122. data/lib/vedeu/output/geometry.rb +0 -71
  123. data/lib/vedeu/output/layer.rb +0 -9
  124. data/lib/vedeu/output/menu.rb +0 -26
  125. data/lib/vedeu/output/position.rb +0 -35
  126. data/lib/vedeu/output/style.rb +0 -38
  127. data/lib/vedeu/repository/interface.rb +0 -62
  128. data/lib/vedeu/support/json_parser.rb +0 -25
  129. data/lib/vedeu/support/options.rb +0 -4
  130. data/test/lib/vedeu/output/background_test.rb +0 -67
  131. data/test/lib/vedeu/output/base_test.rb +0 -8
  132. data/test/lib/vedeu/output/buffer/composition_test.rb +0 -57
  133. data/test/lib/vedeu/output/buffer/formatting_test.rb +0 -9
  134. data/test/lib/vedeu/output/buffer/interface_test.rb +0 -38
  135. data/test/lib/vedeu/output/buffer/line_test.rb +0 -64
  136. data/test/lib/vedeu/output/buffer/stream_test.rb +0 -61
  137. data/test/lib/vedeu/output/buffer/style_test.rb +0 -8
  138. data/test/lib/vedeu/output/colour_test.rb +0 -104
  139. data/test/lib/vedeu/output/compositor_test.rb +0 -247
  140. data/test/lib/vedeu/output/directive_test.rb +0 -82
  141. data/test/lib/vedeu/output/esc_test.rb +0 -175
  142. data/test/lib/vedeu/output/foreground_test.rb +0 -67
  143. data/test/lib/vedeu/output/geometry_test.rb +0 -190
  144. data/test/lib/vedeu/output/layer_test.rb +0 -35
  145. data/test/lib/vedeu/output/menu_test.rb +0 -13
  146. data/test/lib/vedeu/output/position_test.rb +0 -48
  147. data/test/lib/vedeu/output/style_test.rb +0 -132
  148. data/test/lib/vedeu/repository/command_test.rb +0 -73
  149. data/test/lib/vedeu/repository/dummy_command_test.rb +0 -27
  150. data/test/lib/vedeu/repository/dummy_interface_test.rb +0 -7
  151. data/test/lib/vedeu/repository/interface_test.rb +0 -79
  152. data/test/lib/vedeu/support/json_parser_test.rb +0 -45
  153. data/test/support/composition.json +0 -47
  154. data/test/support/composition.rb +0 -5
  155. data/test/support/composition.xml +0 -36
  156. data/test/support/multi_interface.json +0 -34
  157. data/test/support/single_interface.json +0 -19
@@ -0,0 +1,37 @@
1
+ require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/events'
3
+
4
+ module Vedeu
5
+ describe Events do
6
+ let(:described_class) { Events }
7
+ let(:described_instance) { described_class.new }
8
+
9
+ describe '#initialize' do
10
+ let(:subject) { described_instance }
11
+
12
+ it 'returns an Events instance' do
13
+ subject.must_be_instance_of(Events)
14
+ end
15
+
16
+ it 'sets an instance variable' do
17
+ subject.instance_variable_get('@handlers')
18
+ .must_be_instance_of(Hash)
19
+ end
20
+ end
21
+
22
+ describe '#on' do
23
+ let(:subject) { described_instance.on(event) { :do_something } }
24
+ let(:event) { :some_event }
25
+
26
+ it 'returns the handlers value' do
27
+ subject.must_be_instance_of(Array)
28
+ end
29
+ end
30
+
31
+ describe '#trigger' do
32
+ let(:subject) { described_instance.trigger(event, args) }
33
+ let(:event) { :some_event }
34
+ let(:args) {}
35
+ end
36
+ end
37
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/exit'
2
3
 
3
4
  module Vedeu
4
5
  describe Exit do
@@ -0,0 +1,131 @@
1
+ require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/geometry'
3
+ require_relative '../../../../lib/vedeu/models/interface'
4
+
5
+ module Vedeu
6
+ describe Geometry do
7
+ let(:described_class) { Geometry }
8
+ let(:described_instance) { described_class.new(interface, index) }
9
+ let(:interface) { Interface.new(attributes) }
10
+ let(:attributes) {
11
+ {
12
+ name: 'dummy',
13
+ lines: [],
14
+ colour: {
15
+ foreground: '#ff0000',
16
+ background: '#000000'
17
+ },
18
+ width: 7,
19
+ height: 3
20
+ }
21
+ }
22
+ let(:index) { 0 }
23
+
24
+ before do
25
+ Terminal.stubs(:width).returns(40)
26
+ Terminal.stubs(:height).returns(25)
27
+ end
28
+
29
+ describe '#origin' do
30
+ it 'returns a String' do
31
+ described_instance.origin.must_be_instance_of(String)
32
+ end
33
+
34
+ it 'returns the origin for the interface' do
35
+ described_instance.origin.must_equal("\e[1;1H")
36
+ end
37
+
38
+ context 'when the index is provided' do
39
+ let(:index) { 3 }
40
+
41
+ it 'returns the line position relative to the origin' do
42
+ described_instance.origin.must_equal("\e[4;1H")
43
+ end
44
+ end
45
+
46
+ context 'when the interface is at a custom position' do
47
+ let(:attributes) { { y: 6, x: 3 }}
48
+
49
+ it 'returns the origin for the interface' do
50
+ described_instance.origin.must_equal("\e[6;3H")
51
+ end
52
+
53
+ context 'when the index is provided' do
54
+ let(:index) { 3 }
55
+
56
+ it 'returns the line position relative to the origin' do
57
+ described_instance.origin.must_equal("\e[9;3H")
58
+ end
59
+ end
60
+ end
61
+ end
62
+
63
+ describe '#max_y' do
64
+ let(:subject) { described_instance.max_y }
65
+
66
+ it 'returns a Fixnum' do
67
+ subject.must_be_instance_of(Fixnum)
68
+ end
69
+
70
+ context 'when the value is greater than the available terminal size' do
71
+ it 'clips the value to the terminal size' do
72
+ subject.must_equal(4)
73
+ end
74
+ end
75
+
76
+ context 'when the value is less than the available size' do
77
+ let(:attributes) { { y: 20, height: 4 } }
78
+
79
+ it 'returns the value' do
80
+ subject.must_equal(24)
81
+ end
82
+ end
83
+ end
84
+
85
+ describe '#max_x' do
86
+ let(:subject) { described_instance.max_x }
87
+
88
+ it 'returns a Fixnum' do
89
+ subject.must_be_instance_of(Fixnum)
90
+ end
91
+
92
+ context 'when the value is greater than the available terminal size' do
93
+ it 'clips the value to the terminal size' do
94
+ subject.must_equal(8)
95
+ end
96
+ end
97
+
98
+ context 'when the value is less than the available size' do
99
+ let(:attributes) { { x: 17, width: 21 } }
100
+
101
+ it 'returns the value' do
102
+ subject.must_equal(38)
103
+ end
104
+ end
105
+ end
106
+
107
+ describe '#virtual_x' do
108
+ let(:subject) { described_instance.virtual_x }
109
+
110
+ it 'returns a Fixnum' do
111
+ subject.must_be_instance_of(Fixnum)
112
+ end
113
+
114
+ it 'returns the value' do
115
+ subject.must_equal(1)
116
+ end
117
+ end
118
+
119
+ describe '#virtual_y' do
120
+ let(:subject) { described_instance.virtual_y }
121
+
122
+ it 'returns a Fixnum' do
123
+ subject.must_be_instance_of(Fixnum)
124
+ end
125
+
126
+ it 'returns the value' do
127
+ subject.must_equal(1)
128
+ end
129
+ end
130
+ end
131
+ end
@@ -0,0 +1,56 @@
1
+ require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/parser'
3
+
4
+ module Vedeu
5
+ describe Parser do
6
+ let(:described_class) { Parser }
7
+ let(:subject) { described_class.new(output) }
8
+ let(:output) { File.read('test/support/output_1.json') }
9
+
10
+ describe '#initialize' do
11
+ let(:subject) { described_class.new(output) }
12
+
13
+ it 'returns a Parser instance' do
14
+ subject.must_be_instance_of(Parser)
15
+ end
16
+
17
+ it 'sets an instance variable' do
18
+ subject.instance_variable_get("@output").must_equal(output)
19
+ end
20
+
21
+ context 'when the instance variable is nil' do
22
+ let(:output) {}
23
+
24
+ it 'set the instance variable to empty string' do
25
+ subject.instance_variable_get("@output").must_equal('')
26
+ end
27
+ end
28
+ end
29
+
30
+ # describe '#parse' do
31
+ # let(:subject) { described_class.parse(output) }
32
+
33
+ # it 'returns a Composition' do
34
+ # subject.must_be_instance_of(Composition)
35
+ # end
36
+
37
+ # context 'when the output is an interface name and a stream' do
38
+ # it 'returns a composition' do
39
+ # subject.must_equal('')
40
+ # end
41
+ # end
42
+
43
+ # context 'when the output contains a single interface' do
44
+ # it 'returns a Composition instance' do
45
+ # subject.must_be_instance_of(Composition)
46
+ # end
47
+ # end
48
+
49
+ # context 'when the output contains multiple interfaces' do
50
+ # it 'returns a Composition instance' do
51
+ # subject.must_be_instance_of(Composition)
52
+ # end
53
+ # end
54
+ # end
55
+ end
56
+ end
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/queue'
2
3
 
3
4
  module Vedeu
4
5
  describe Queue do
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/terminal'
2
3
 
3
4
  module Vedeu
4
5
  describe Terminal do
@@ -81,36 +82,6 @@ module Vedeu
81
82
  end
82
83
  end
83
84
 
84
- describe '.close' do
85
- let(:subject) { described_class.close }
86
-
87
- it 'returns a String' do
88
- subject.must_be_instance_of(String)
89
- end
90
-
91
- it 'returns an escape sequence' do
92
- subject.must_equal("\e[24;1H \e[24;1H")
93
- end
94
- end
95
-
96
- describe '.cooked' do
97
- let(:subject) { described_class.cooked(instance) }
98
- let(:instance) {}
99
-
100
- it 'returns a NilClass' do
101
- subject.must_be_instance_of(NilClass)
102
- end
103
- end
104
-
105
- describe '.raw' do
106
- let(:subject) { described_class.raw(instance) }
107
- let(:instance) {}
108
-
109
- it 'returns a NilClass' do
110
- subject.must_be_instance_of(NilClass)
111
- end
112
- end
113
-
114
85
  describe '.console' do
115
86
  let(:subject) { described_class.console }
116
87
 
@@ -118,94 +89,5 @@ module Vedeu
118
89
  subject.must_equal(console)
119
90
  end
120
91
  end
121
-
122
- describe '.clear_screen' do
123
- let(:subject) { described_class.clear_screen }
124
-
125
- it 'returns a String' do
126
- subject.must_be_instance_of(String)
127
- end
128
-
129
- it 'returns an escape sequence' do
130
- subject.must_equal("\e[2J")
131
- end
132
- end
133
-
134
- describe '.clear_line' do
135
- let(:subject) { described_class.clear_line(index) }
136
- let(:index) { 0 }
137
-
138
- it 'returns a String' do
139
- subject.must_be_instance_of(String)
140
- end
141
-
142
- it 'returns an escape sequence' do
143
- subject.must_equal("\e[1;1H \e[1;1H")
144
- end
145
- end
146
-
147
- describe '.show_cursor' do
148
- let(:subject) { described_class.show_cursor }
149
-
150
- it 'returns a String' do
151
- subject.must_be_instance_of(String)
152
- end
153
-
154
- it 'returns an escape sequence' do
155
- subject.must_equal("\e[?25h")
156
- end
157
- end
158
-
159
- describe '.hide_cursor' do
160
- let(:subject) { described_class.hide_cursor }
161
-
162
- it 'returns a String' do
163
- subject.must_be_instance_of(String)
164
- end
165
-
166
- it 'returns an escape sequence' do
167
- subject.must_equal("\e[?25l")
168
- end
169
- end
170
-
171
- describe '.reset_colours' do
172
- let(:subject) { described_class.reset_colours }
173
-
174
- it 'returns a String' do
175
- subject.must_be_instance_of(String)
176
- end
177
-
178
- it 'returns an escape sequence' do
179
- subject.must_equal("\e[0m")
180
- end
181
- end
182
-
183
- describe '#initialize' do
184
- let(:subject) { described_class.new }
185
-
186
- it 'returns a Terminal instance' do
187
- subject.must_be_instance_of(Terminal)
188
- end
189
- end
190
-
191
- describe '#open' do
192
- let(:subject) { described_class.new.open }
193
-
194
- it 'returns a NilClass' do
195
- subject.must_be_instance_of(NilClass)
196
- end
197
- end
198
-
199
- describe '#initial_setup!' do
200
- let(:subject) { described_class.new.initial_setup! }
201
-
202
- it 'returns a String' do
203
- subject.must_be_instance_of(String)
204
- end
205
-
206
- it 'returns an escape sequence' do
207
- subject.must_equal("\e[1;1H")
208
- end
209
- end
210
92
  end
211
93
  end
@@ -1,12 +1,17 @@
1
1
  require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/translator'
2
3
 
3
4
  module Vedeu
4
5
  describe Translator do
5
6
  let(:described_class) { Translator }
6
7
  let(:html_colour) {}
7
8
 
8
- it 'returns a Translator instance' do
9
- described_class.new(html_colour).must_be_instance_of(Translator)
9
+ describe '#initialize' do
10
+ let(:subject) { described_class.new(html_colour) }
11
+
12
+ it 'returns a Translator instance' do
13
+ subject.must_be_instance_of(Translator)
14
+ end
10
15
  end
11
16
 
12
17
  describe '#translate' do
@@ -28,24 +33,24 @@ module Vedeu
28
33
  end
29
34
 
30
35
  context 'invalid' do
31
- it 'returns nil when not present' do
32
- described_class.translate.must_equal(nil)
36
+ it 'returns empty string when not present' do
37
+ described_class.translate.must_equal('')
33
38
  end
34
39
 
35
- it 'returns nil when the wrong type!' do
36
- described_class.translate(:wrong_type).must_equal(nil)
40
+ it 'returns empty string when the wrong type!' do
41
+ described_class.translate(:wrong_type).must_equal('')
37
42
  end
38
43
 
39
- it 'returns nil when invalid format' do
40
- described_class.translate('345678').must_equal(nil)
44
+ it 'returns empty string when invalid format' do
45
+ described_class.translate('345678').must_equal('')
41
46
  end
42
47
 
43
- it 'returns nil when invalid format' do
44
- described_class.translate('#h11111').must_equal(nil)
48
+ it 'returns empty string when invalid format' do
49
+ described_class.translate('#h11111').must_equal('')
45
50
  end
46
51
 
47
- it 'returns nil when invalid format' do
48
- described_class.translate('#1111').must_equal(nil)
52
+ it 'returns empty string when invalid format' do
53
+ described_class.translate('#1111').must_equal('')
49
54
  end
50
55
  end
51
56
  end
@@ -1,4 +1,5 @@
1
1
  require_relative '../../../test_helper'
2
+ require_relative '../../../../lib/vedeu/support/wordwrap'
2
3
 
3
4
  module Vedeu
4
5
  describe Wordwrap do
@@ -1,4 +1,5 @@
1
1
  require_relative '../../test_helper'
2
+ require_relative '../../../lib/vedeu/version'
2
3
 
3
4
  module Vedeu
4
5
  describe VERSION do