vedeu 0.4.26 → 0.4.27

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 (37) hide show
  1. checksums.yaml +4 -4
  2. data/examples/material_colours_app.rb +5 -3
  3. data/examples/panel_app.rb +61 -0
  4. data/lib/vedeu/bindings.rb +10 -0
  5. data/lib/vedeu/cursor/cursor.rb +6 -0
  6. data/lib/vedeu/cursor/move.rb +20 -14
  7. data/lib/vedeu/dsl/interface.rb +56 -0
  8. data/lib/vedeu/models/escape_char.rb +7 -7
  9. data/lib/vedeu/models/interface.rb +14 -17
  10. data/lib/vedeu/models/panel.rb +17 -0
  11. data/lib/vedeu/models/stream.rb +1 -1
  12. data/lib/vedeu/output/border.rb +17 -37
  13. data/lib/vedeu/output/esc.rb +17 -16
  14. data/lib/vedeu/output/html_char.rb +18 -15
  15. data/lib/vedeu/output/refresh.rb +8 -2
  16. data/lib/vedeu/output/viewport.rb +3 -1
  17. data/lib/vedeu/repositories/repositories/cursors.rb +1 -1
  18. data/lib/vedeu/repositories/repositories/interfaces_repository.rb +8 -0
  19. data/lib/vedeu/repositories/repository.rb +9 -0
  20. data/lib/vedeu/storage/store.rb +1 -0
  21. data/lib/vedeu/support/terminal.rb +7 -0
  22. data/lib/vedeu/support/visibility.rb +15 -4
  23. data/test/lib/vedeu/buffers/buffer_test.rb +1 -0
  24. data/test/lib/vedeu/dsl/components/border_test.rb +1 -0
  25. data/test/lib/vedeu/dsl/interface_test.rb +35 -5
  26. data/test/lib/vedeu/models/escape_char_test.rb +7 -2
  27. data/test/lib/vedeu/models/focus_test.rb +6 -11
  28. data/test/lib/vedeu/models/interface_test.rb +12 -9
  29. data/test/lib/vedeu/output/border_test.rb +3 -0
  30. data/test/lib/vedeu/output/esc_test.rb +4 -0
  31. data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +19 -0
  32. data/test/lib/vedeu/repositories/repository_test.rb +34 -0
  33. data/test/lib/vedeu/storage/store_test.rb +4 -4
  34. data/test/lib/vedeu/support/terminal_test.rb +22 -13
  35. data/test/test_helper.rb +6 -6
  36. data/vedeu.gemspec +4 -4
  37. metadata +10 -8
@@ -30,6 +30,7 @@ module Vedeu
30
30
  end
31
31
  end
32
32
  end
33
+ after { Vedeu.interfaces.reset }
33
34
 
34
35
  describe '.build' do
35
36
  subject {
@@ -111,6 +112,7 @@ module Vedeu
111
112
  end
112
113
  end
113
114
  end
115
+ after { Vedeu.interfaces.reset }
114
116
 
115
117
  describe '#bx' do
116
118
  subject { instance.bx }
@@ -424,6 +426,7 @@ module Vedeu
424
426
  visible(visibility)
425
427
  end
426
428
  end
429
+ after { Vedeu.interfaces.reset }
427
430
 
428
431
  subject { instance.render }
429
432
 
@@ -150,6 +150,10 @@ module Vedeu
150
150
  it 'returns an escape sequence when the style is underline off' do
151
151
  described.string('underline_off').must_equal("\e[24m")
152
152
  end
153
+
154
+ it 'returns an escape sequence when the style is underline off' do
155
+ described.string('cursor_position').must_equal("\e[6n")
156
+ end
153
157
  end
154
158
 
155
159
  end # Esc
@@ -6,6 +6,25 @@ module Vedeu
6
6
 
7
7
  let(:described) { Vedeu::InterfacesRepository }
8
8
 
9
+ describe '#zindexed' do
10
+ before do
11
+ @hydrogen = Vedeu.interface 'hydrogen' do
12
+ zindex 2
13
+ end
14
+ @helium = Vedeu.interface 'helium' do
15
+ zindex 3
16
+ end
17
+ @lithium = Vedeu.interface 'lithium' do
18
+ zindex 1
19
+ end
20
+ end
21
+ after { Vedeu.interfaces.reset }
22
+
23
+ subject { Vedeu.interfaces.zindexed }
24
+
25
+ it { subject.must_equal([@lithium, @hydrogen, @helium]) }
26
+ end
27
+
9
28
  end # InterfacesRepository
10
29
 
11
30
  end # Vedeu
@@ -60,6 +60,40 @@ module Vedeu
60
60
  it { instance.instance_variable_get('@storage').must_equal(storage) }
61
61
  end
62
62
 
63
+ describe '#all' do
64
+ subject { instance.all }
65
+
66
+ context 'when there are no models stored in the repository' do
67
+ before { instance.reset }
68
+
69
+ it { subject.must_equal([]) }
70
+ end
71
+
72
+ context 'when there are models stored in the repository' do
73
+ context 'when the repository is a glorified Hash' do
74
+ let(:storage) {
75
+ {
76
+ oxygen: :life,
77
+ plutonium: :death,
78
+ }
79
+ }
80
+ it { subject.must_equal([:life, :death]) }
81
+ end
82
+
83
+ context 'when the repository is a glorified Set' do
84
+ let(:storage) { Set[:oxygen, :hydrogen] }
85
+
86
+ it { subject.must_equal([:oxygen, :hydrogen]) }
87
+ end
88
+
89
+ context 'when the repository is unknown' do
90
+ let(:storage) { [:hydrogen, :helium] }
91
+
92
+ it { subject.must_equal([:hydrogen, :helium]) }
93
+ end
94
+ end
95
+ end
96
+
63
97
  describe '#current' do
64
98
  subject { instance.current }
65
99
 
@@ -26,10 +26,6 @@ module Vedeu
26
26
  let(:model) {}
27
27
  let(:storage) {}
28
28
 
29
- describe 'alias methods' do
30
- it { instance.must_respond_to(:registered?) }
31
- end
32
-
33
29
  describe '#each' do
34
30
  subject { instance.each }
35
31
 
@@ -84,6 +80,8 @@ module Vedeu
84
80
 
85
81
  it { subject.must_equal(true) }
86
82
  end
83
+
84
+ it { instance.must_respond_to(:registered?) }
87
85
  end
88
86
 
89
87
  describe '#reset' do
@@ -94,6 +92,8 @@ module Vedeu
94
92
  it 'resets the repository' do
95
93
  instance.reset.must_equal({})
96
94
  end
95
+
96
+ it { instance.must_respond_to(:reset!) }
97
97
  end
98
98
 
99
99
  describe '#size' do
@@ -13,19 +13,6 @@ module Vedeu
13
13
  IO.console.stubs(:print)
14
14
  end
15
15
 
16
- describe 'alias methods' do
17
- it { described.must_respond_to(:read) }
18
- it { described.must_respond_to(:write) }
19
- it { described.must_respond_to(:x) }
20
- it { described.must_respond_to(:y) }
21
- it { described.must_respond_to(:tx) }
22
- it { described.must_respond_to(:ty) }
23
- it { described.must_respond_to(:xn) }
24
- it { described.must_respond_to(:txn) }
25
- it { described.must_respond_to(:yn) }
26
- it { described.must_respond_to(:tyn) }
27
- end
28
-
29
16
  describe '.open' do
30
17
  context 'when a block was not given' do
31
18
  it { proc { Terminal.open }.must_raise(InvalidSyntax) }
@@ -55,6 +42,8 @@ module Vedeu
55
42
  describe '.input' do
56
43
  subject { Terminal.input }
57
44
 
45
+ it { described.must_respond_to(:read) }
46
+
58
47
  context 'when the terminal is in cooked mode' do
59
48
  let(:mode) { :cooked }
60
49
  let(:input) { "Some input\r\n" }
@@ -85,11 +74,14 @@ module Vedeu
85
74
  describe '.output' do
86
75
  subject { described.output(*_value) }
87
76
 
77
+ it { described.must_respond_to(:write) }
78
+
88
79
  context 'when the value is a String' do
89
80
  let(:_value) { 'Some output...' }
90
81
 
91
82
  it { subject.must_equal(['Some output...']) }
92
83
  end
84
+
93
85
  context 'when there are multiple values' do
94
86
  let(:_value) { ['Some output...', 'more output...', 'even more...'] }
95
87
 
@@ -190,6 +182,12 @@ module Vedeu
190
182
  end
191
183
  end
192
184
 
185
+ describe '.cursor' do
186
+ subject { described.cursor }
187
+
188
+ # it { subject.must_be_instance_of(Vedeu::Position) }
189
+ end
190
+
193
191
  describe '.centre' do
194
192
  subject { described.centre }
195
193
 
@@ -226,6 +224,11 @@ module Vedeu
226
224
  it { subject.must_be_instance_of(Fixnum) }
227
225
 
228
226
  it { subject.must_equal(1) }
227
+
228
+ it { described.must_respond_to(:x) }
229
+ it { described.must_respond_to(:y) }
230
+ it { described.must_respond_to(:tx) }
231
+ it { described.must_respond_to(:ty) }
229
232
  end
230
233
 
231
234
  describe '.width' do
@@ -233,6 +236,9 @@ module Vedeu
233
236
 
234
237
  it { subject.must_be_instance_of(Fixnum) }
235
238
 
239
+ it { described.must_respond_to(:xn) }
240
+ it { described.must_respond_to(:txn) }
241
+
236
242
  context 'via method' do
237
243
  it 'returns the width' do
238
244
  subject.must_equal(80)
@@ -251,6 +257,9 @@ module Vedeu
251
257
 
252
258
  it { subject.must_be_instance_of(Fixnum) }
253
259
 
260
+ it { described.must_respond_to(:yn) }
261
+ it { described.must_respond_to(:tyn) }
262
+
254
263
  context 'via method' do
255
264
  it 'returns the height' do
256
265
  subject.must_equal(25)
data/test/test_helper.rb CHANGED
@@ -52,13 +52,13 @@ def test_configuration
52
52
 
53
53
  Vedeu.configure do
54
54
  colour_mode 16_777_216
55
- # adds ~40ms to test run speed
56
- # debug!
55
+ # adds ~40ms to test run speed
56
+ # debug!
57
57
 
58
- # if debug! above is commented out, then only
59
- # `Vedeu.log(type: <any type>, message: '...', force: true)`
60
- # will be logged, otherwise every `Vedeu.log` will be logged.
61
- log '/tmp/vedeu_test_helper.log'
58
+ # if debug! above is commented out, then only
59
+ # `Vedeu.log(type: <any type>, message: '...', force: true)`
60
+ # will be logged, otherwise every `Vedeu.log` will be logged.
61
+ # log '/tmp/vedeu_test_helper.log'
62
62
  end
63
63
 
64
64
  Vedeu::Repositories.reset!
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.4.26'
7
+ spec.version = '0.4.27'
8
8
  spec.authors = ['Gavin Laking']
9
9
  spec.email = ['gavinlaking@gmail.com']
10
10
  spec.summary = 'A terminal case of wonderland.'
@@ -19,17 +19,17 @@ Gem::Specification.new do |spec|
19
19
  spec.require_paths = ['lib']
20
20
 
21
21
  spec.add_development_dependency 'bundler', '~> 1.8'
22
- spec.add_development_dependency 'guard', '2.12.5'
22
+ spec.add_development_dependency 'guard', '2.12.6'
23
23
  spec.add_development_dependency 'guard-bundler', '2.1.0'
24
24
  spec.add_development_dependency 'guard-minitest', '2.4.4'
25
25
  spec.add_development_dependency 'inch', '0.6.2'
26
26
  spec.add_development_dependency 'minitest', '5.7.0'
27
- spec.add_development_dependency 'minitest-reporters', '1.0.16'
27
+ spec.add_development_dependency 'minitest-reporters', '1.0.17'
28
28
  spec.add_development_dependency 'mocha', '1.1.0'
29
29
  spec.add_development_dependency 'pry', '0.10.1'
30
30
  spec.add_development_dependency 'pry-byebug', '3.1.0'
31
31
  spec.add_development_dependency 'rake', '10.4.2'
32
- spec.add_development_dependency 'rubocop', '0.31.0'
32
+ spec.add_development_dependency 'rubocop', '0.32.0'
33
33
  spec.add_development_dependency 'ruby-prof', '0.15.8'
34
34
  spec.add_development_dependency 'simplecov', '0.10.0'
35
35
  spec.add_development_dependency 'simplecov-console', '0.2.0'
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.4.26
4
+ version: 0.4.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-06-11 00:00:00.000000000 Z
11
+ date: 2015-06-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - '='
32
32
  - !ruby/object:Gem::Version
33
- version: 2.12.5
33
+ version: 2.12.6
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - '='
39
39
  - !ruby/object:Gem::Version
40
- version: 2.12.5
40
+ version: 2.12.6
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: guard-bundler
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -100,14 +100,14 @@ dependencies:
100
100
  requirements:
101
101
  - - '='
102
102
  - !ruby/object:Gem::Version
103
- version: 1.0.16
103
+ version: 1.0.17
104
104
  type: :development
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - '='
109
109
  - !ruby/object:Gem::Version
110
- version: 1.0.16
110
+ version: 1.0.17
111
111
  - !ruby/object:Gem::Dependency
112
112
  name: mocha
113
113
  requirement: !ruby/object:Gem::Requirement
@@ -170,14 +170,14 @@ dependencies:
170
170
  requirements:
171
171
  - - '='
172
172
  - !ruby/object:Gem::Version
173
- version: 0.31.0
173
+ version: 0.32.0
174
174
  type: :development
175
175
  prerelease: false
176
176
  version_requirements: !ruby/object:Gem::Requirement
177
177
  requirements:
178
178
  - - '='
179
179
  - !ruby/object:Gem::Version
180
- version: 0.31.0
180
+ version: 0.32.0
181
181
  - !ruby/object:Gem::Dependency
182
182
  name: ruby-prof
183
183
  requirement: !ruby/object:Gem::Requirement
@@ -277,6 +277,7 @@ files:
277
277
  - examples/geometry_app.rb
278
278
  - examples/hello_world.rb
279
279
  - examples/material_colours_app.rb
280
+ - examples/panel_app.rb
280
281
  - examples/typed_commands/command.erb
281
282
  - examples/typed_commands/output.erb
282
283
  - examples/typed_commands/status.erb
@@ -365,6 +366,7 @@ files:
365
366
  - lib/vedeu/models/interface.rb
366
367
  - lib/vedeu/models/line.rb
367
368
  - lib/vedeu/models/menu.rb
369
+ - lib/vedeu/models/panel.rb
368
370
  - lib/vedeu/models/stream.rb
369
371
  - lib/vedeu/null/all.rb
370
372
  - lib/vedeu/null/border.rb