vedeu 0.2.8 → 0.2.9
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.
- checksums.yaml +4 -4
- data/lib/vedeu.rb +1 -0
- data/lib/vedeu/application.rb +1 -1
- data/lib/vedeu/models/buffer.rb +103 -0
- data/lib/vedeu/output/clear.rb +41 -8
- data/lib/vedeu/output/compositor.rb +46 -21
- data/lib/vedeu/output/render.rb +1 -5
- data/lib/vedeu/repositories/buffers.rb +19 -76
- data/lib/vedeu/repositories/focus.rb +0 -16
- data/lib/vedeu/support/coercions.rb +3 -0
- data/lib/vedeu/support/colour_translator.rb +29 -0
- data/lib/vedeu/support/log.rb +2 -0
- data/lib/vedeu/support/repository.rb +1 -0
- data/test/lib/vedeu/api/api_test.rb +7 -2
- data/test/lib/vedeu/application_test.rb +20 -8
- data/test/lib/vedeu/models/buffer_test.rb +182 -0
- data/test/lib/vedeu/output/clear_test.rb +8 -5
- data/test/lib/vedeu/output/compositor_test.rb +91 -43
- data/test/lib/vedeu/output/render_test.rb +3 -50
- data/test/lib/vedeu/repositories/buffers_test.rb +4 -48
- data/test/lib/vedeu/repositories/focus_test.rb +0 -26
- data/test/lib/vedeu/support/repository_test.rb +38 -7
- data/vedeu.gemspec +1 -1
- metadata +5 -2
@@ -5,6 +5,8 @@ module Vedeu
|
|
5
5
|
describe Render do
|
6
6
|
|
7
7
|
before do
|
8
|
+
Terminal.console.stubs(:print)
|
9
|
+
|
8
10
|
Buffers.reset
|
9
11
|
Cursors.reset
|
10
12
|
Interfaces.reset
|
@@ -38,7 +40,7 @@ module Vedeu
|
|
38
40
|
"\e[3;1H \e[3;1H" \
|
39
41
|
"\e[1;1Hthis is the first" \
|
40
42
|
"\e[2;1Hthis is the second and it is lon" \
|
41
|
-
"\e[3;1Hthis is the third, it is even lo"
|
43
|
+
"\e[3;1Hthis is the third, it is even lo"
|
42
44
|
)
|
43
45
|
end
|
44
46
|
|
@@ -91,55 +93,6 @@ module Vedeu
|
|
91
93
|
"\e[3;1Hthis is the third, it is even lo"
|
92
94
|
)
|
93
95
|
end
|
94
|
-
|
95
|
-
it 'returns to using the presentation attributes of the line after a ' \
|
96
|
-
'stream finishes' do
|
97
|
-
Vedeu.interface 'oxygen' do
|
98
|
-
width 40
|
99
|
-
height 2
|
100
|
-
end
|
101
|
-
|
102
|
-
class OxygenView < Vedeu::View
|
103
|
-
def render
|
104
|
-
Vedeu.view 'oxygen' do
|
105
|
-
line do
|
106
|
-
colour background: '#000000', foreground: '#ffffff'
|
107
|
-
stream do
|
108
|
-
text 'the grass is '
|
109
|
-
end
|
110
|
-
stream do
|
111
|
-
colour foreground: '#00ff00'
|
112
|
-
text 'green'
|
113
|
-
end
|
114
|
-
stream do
|
115
|
-
text ' and the sky is '
|
116
|
-
end
|
117
|
-
stream do
|
118
|
-
colour foreground: '#0000ff'
|
119
|
-
text 'blue'
|
120
|
-
end
|
121
|
-
stream do
|
122
|
-
text '.'
|
123
|
-
end
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
|
129
|
-
IO.console.stub(:print, nil) do
|
130
|
-
OxygenView.render
|
131
|
-
|
132
|
-
Compositor.render('oxygen').must_equal(
|
133
|
-
[
|
134
|
-
"\e[1;1H \e[1;1H" \
|
135
|
-
"\e[2;1H \e[2;1H" \
|
136
|
-
"\e[1;1Ht\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mg\e[38;2;255;255;255m\e[48;2;0;0;0mr\e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mg\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mr\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0me\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;255;0mn\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ma\e[38;2;255;255;255m\e[48;2;0;0;0mn\e[38;2;255;255;255m\e[48;2;0;0;0md\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mt\e[38;2;255;255;255m\e[48;2;0;0;0mh\e[38;2;255;255;255m\e[48;2;0;0;0me\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0mk\e[38;2;255;255;255m\e[48;2;0;0;0my\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0mi\e[38;2;255;255;255m\e[48;2;0;0;0ms\e[38;2;255;255;255m\e[48;2;0;0;0m \e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mb\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255ml\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255mu\e[38;2;255;255;255m\e[48;2;0;0;0m\e[38;2;0;0;255me\e[38;2;255;255;255m\e[48;2;0;0;0m.\e[38;2;255;255;255m\e[48;2;0;0;0m",
|
137
|
-
|
138
|
-
"\e[1;1H\e[?25l"
|
139
|
-
]
|
140
|
-
)
|
141
|
-
end
|
142
|
-
end
|
143
96
|
end
|
144
97
|
|
145
98
|
end # Render
|
@@ -32,56 +32,12 @@ module Vedeu
|
|
32
32
|
end
|
33
33
|
end
|
34
34
|
|
35
|
-
describe '.
|
36
|
-
|
37
|
-
it 'raises an exception' do
|
38
|
-
proc { Buffers.back('actinium') }.must_raise(BufferNotFound)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
context 'when the buffer exists' do
|
43
|
-
before { Buffers.add({ name: 'mercury' }) }
|
44
|
-
|
45
|
-
it 'returns a Hash' do
|
46
|
-
Buffers.back('mercury').must_be_instance_of(Hash)
|
47
|
-
end
|
48
|
-
|
49
|
-
it 'returns the stored attributes' do
|
50
|
-
Buffers.back('mercury').must_equal({ name: 'mercury' })
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
describe '.front' do
|
56
|
-
context 'when the buffer does not exist' do
|
57
|
-
it 'raises an exception' do
|
58
|
-
proc { Buffers.front('mercury') }.must_raise(BufferNotFound)
|
59
|
-
end
|
60
|
-
end
|
61
|
-
|
62
|
-
context 'when the buffer exists but there is no content' do
|
63
|
-
before { Buffers.add({ name: 'actinium' }) }
|
35
|
+
describe '.update' do
|
36
|
+
let(:buffer) { Buffer.new({ name: 'einsteinium' }) }
|
64
37
|
|
65
|
-
|
66
|
-
Buffers.front('actinium').must_be_instance_of(NilClass)
|
67
|
-
end
|
68
|
-
end
|
69
|
-
end
|
38
|
+
subject { Buffers.update(buffer) }
|
70
39
|
|
71
|
-
|
72
|
-
context 'when the buffer does not exist' do
|
73
|
-
it 'raises an exception' do
|
74
|
-
proc { Buffers.front('nobelium') }.must_raise(BufferNotFound)
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
context 'when the buffer exists and there is content' do
|
79
|
-
before { Buffers.add({ name: 'nobelium' }) }
|
80
|
-
|
81
|
-
it 'returns the stored attributes' do
|
82
|
-
Buffers.latest('nobelium').must_equal({ name: 'nobelium' })
|
83
|
-
end
|
84
|
-
end
|
40
|
+
it { subject.must_equal(true) }
|
85
41
|
end
|
86
42
|
|
87
43
|
end # Buffers
|
@@ -109,32 +109,6 @@ module Vedeu
|
|
109
109
|
end
|
110
110
|
end
|
111
111
|
|
112
|
-
describe '#registered' do
|
113
|
-
it 'returns all the names of the interfaces which can be focussed' do
|
114
|
-
Focus.add({ name: 'thallium' })
|
115
|
-
Focus.add({ name: 'lead' })
|
116
|
-
Focus.add({ name: 'bismuth' })
|
117
|
-
|
118
|
-
Focus.registered.must_equal(['thallium', 'lead', 'bismuth'])
|
119
|
-
end
|
120
|
-
end
|
121
|
-
|
122
|
-
describe '.registered?' do
|
123
|
-
it 'returns false when there are no interfaces registered' do
|
124
|
-
Focus.registered?('thallium').must_equal(false)
|
125
|
-
end
|
126
|
-
|
127
|
-
it 'returns false when the named interface is not registered' do
|
128
|
-
Focus.add({ name: 'thallium' })
|
129
|
-
Focus.registered?('lead').must_equal(false)
|
130
|
-
end
|
131
|
-
|
132
|
-
it 'returns true if the named interface is registered' do
|
133
|
-
Focus.add({ name: 'lead' })
|
134
|
-
Focus.registered?('lead').must_equal(true)
|
135
|
-
end
|
136
|
-
end
|
137
|
-
|
138
112
|
end # Focus
|
139
113
|
|
140
114
|
end # Vedeu
|
@@ -6,14 +6,22 @@ module Vedeu
|
|
6
6
|
class RepositoryTestClass
|
7
7
|
include Repository
|
8
8
|
|
9
|
-
def
|
10
|
-
@
|
9
|
+
def initialize(storage = {})
|
10
|
+
@storage = storage
|
11
11
|
end
|
12
12
|
|
13
|
-
def
|
14
|
-
|
13
|
+
def add(entity)
|
14
|
+
if storage.is_a?(Hash)
|
15
|
+
@storage = in_memory.merge!(entity)
|
16
|
+
|
17
|
+
else
|
18
|
+
@storage << entity
|
19
|
+
|
20
|
+
end
|
15
21
|
end
|
16
|
-
|
22
|
+
|
23
|
+
attr_accessor :storage
|
24
|
+
alias_method :in_memory, :storage
|
17
25
|
|
18
26
|
def not_found(name)
|
19
27
|
fail EntityNotFound
|
@@ -68,8 +76,31 @@ module Vedeu
|
|
68
76
|
RepositoryTestClass.new.registered.must_be_instance_of(Array)
|
69
77
|
end
|
70
78
|
|
71
|
-
|
72
|
-
|
79
|
+
context 'when the storage is a Hash' do
|
80
|
+
it 'returns a collection of the names of all the registered entities' do
|
81
|
+
repo = RepositoryTestClass.new
|
82
|
+
repo.add({ 'rutherfordium' => { name: 'rutherfordium' } })
|
83
|
+
|
84
|
+
repo.registered.must_equal(['rutherfordium'])
|
85
|
+
end
|
86
|
+
end
|
87
|
+
|
88
|
+
context 'when the storage is an Array' do
|
89
|
+
it 'returns the registered entities' do
|
90
|
+
repo = RepositoryTestClass.new([])
|
91
|
+
repo.add('rutherfordium')
|
92
|
+
|
93
|
+
repo.registered.must_equal(['rutherfordium'])
|
94
|
+
end
|
95
|
+
end
|
96
|
+
|
97
|
+
context 'when the storage is a Set' do
|
98
|
+
it 'returns the registered entities' do
|
99
|
+
repo = RepositoryTestClass.new(Set.new)
|
100
|
+
repo.add('rutherfordium')
|
101
|
+
|
102
|
+
repo.registered.must_equal(['rutherfordium'])
|
103
|
+
end
|
73
104
|
end
|
74
105
|
|
75
106
|
it 'returns an empty collection when the storage is empty' do
|
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.2.
|
7
|
+
spec.version = '0.2.9'
|
8
8
|
spec.authors = ['Gavin Laking']
|
9
9
|
spec.email = ['gavinlaking@gmail.com']
|
10
10
|
spec.summary = %q{A terminal case of wonderland.}
|
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.2.
|
4
|
+
version: 0.2.9
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-11-
|
11
|
+
date: 2014-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -207,6 +207,7 @@ files:
|
|
207
207
|
- lib/vedeu/input/input.rb
|
208
208
|
- lib/vedeu/launcher.rb
|
209
209
|
- lib/vedeu/models/background.rb
|
210
|
+
- lib/vedeu/models/buffer.rb
|
210
211
|
- lib/vedeu/models/char.rb
|
211
212
|
- lib/vedeu/models/colour.rb
|
212
213
|
- lib/vedeu/models/composition.rb
|
@@ -272,6 +273,7 @@ files:
|
|
272
273
|
- test/lib/vedeu/input/input_test.rb
|
273
274
|
- test/lib/vedeu/launcher_test.rb
|
274
275
|
- test/lib/vedeu/models/background_test.rb
|
276
|
+
- test/lib/vedeu/models/buffer_test.rb
|
275
277
|
- test/lib/vedeu/models/char_test.rb
|
276
278
|
- test/lib/vedeu/models/colour_test.rb
|
277
279
|
- test/lib/vedeu/models/composition_test.rb
|
@@ -365,6 +367,7 @@ test_files:
|
|
365
367
|
- test/lib/vedeu/input/input_test.rb
|
366
368
|
- test/lib/vedeu/launcher_test.rb
|
367
369
|
- test/lib/vedeu/models/background_test.rb
|
370
|
+
- test/lib/vedeu/models/buffer_test.rb
|
368
371
|
- test/lib/vedeu/models/char_test.rb
|
369
372
|
- test/lib/vedeu/models/colour_test.rb
|
370
373
|
- test/lib/vedeu/models/composition_test.rb
|