vedeu 0.0.41 → 0.0.42
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/deps.md +37 -41
- data/lib/vedeu/models/composition.rb +8 -0
- data/lib/vedeu/output/render_interface.rb +34 -1
- data/lib/vedeu/parsing/parser.rb +2 -2
- data/test/lib/vedeu/models/composition_test.rb +96 -69
- data/test/lib/vedeu/models/interface_test.rb +14 -14
- data/test/lib/vedeu/models/line_test.rb +2 -2
- data/test/lib/vedeu/output/render_interface_test.rb +16 -5
- data/vedeu.gemspec +1 -1
- metadata +2 -5
- data/lib/vedeu/parsing/compositor.rb +0 -25
- data/test/lib/vedeu/parsing/compositor_test.rb +0 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0a046f5b44b63444927dcb96378474808444b2be
|
4
|
+
data.tar.gz: 70e1e365e7727b181d8fbcc813b7843cfc4ce9d3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5265ac3784c962e2405ed0295f66b3b54929272a48745b713c6c8415ecd30763ef29c125f4799ffd84db8063a4d4140dc44e886278ddcc7ad9554e4d9193213f
|
7
|
+
data.tar.gz: 8e6a2a56e74dec0fb18f65a3676047a25266be8a7f7302b1bd87df7b8cfbfc72537ca6e88233627985537c20a01db16abb986942f5e89f74d5c72de898bc2ae8
|
data/deps.md
CHANGED
@@ -22,9 +22,6 @@ Colour
|
|
22
22
|
Composition
|
23
23
|
InterfaceCollection
|
24
24
|
|
25
|
-
Compositor
|
26
|
-
Composition
|
27
|
-
|
28
25
|
Configuration
|
29
26
|
|
30
27
|
Geometry
|
@@ -74,7 +71,7 @@ LineCollection
|
|
74
71
|
Menu
|
75
72
|
|
76
73
|
Parser
|
77
|
-
|
74
|
+
Composition
|
78
75
|
HashParser
|
79
76
|
JSONParser
|
80
77
|
|
@@ -143,51 +140,50 @@ Launcher
|
|
143
140
|
Translator
|
144
141
|
Process
|
145
142
|
Parser
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
143
|
+
Composition
|
144
|
+
InterfaceCollection
|
145
|
+
Persistence
|
146
|
+
Interface
|
147
|
+
ClearInterface
|
148
|
+
Geometry
|
149
|
+
Esc
|
150
|
+
Translator
|
151
|
+
Terminal
|
153
152
|
Esc
|
154
153
|
Translator
|
155
|
-
|
156
|
-
|
157
|
-
|
158
|
-
|
159
|
-
|
160
|
-
Line
|
161
|
-
Presentation
|
162
|
-
Colour
|
163
|
-
Esc
|
164
|
-
Translator
|
165
|
-
StreamCollection
|
166
|
-
Collection
|
167
|
-
Stream
|
168
|
-
Presentation
|
169
|
-
Colour
|
170
|
-
Esc
|
171
|
-
Translator
|
172
|
-
Style
|
173
|
-
Esc
|
174
|
-
Translator
|
175
|
-
Style
|
154
|
+
LineCollection
|
155
|
+
Collection
|
156
|
+
Line
|
157
|
+
Presentation
|
158
|
+
Colour
|
176
159
|
Esc
|
177
160
|
Translator
|
178
|
-
|
179
|
-
|
161
|
+
StreamCollection
|
162
|
+
Collection
|
163
|
+
Stream
|
164
|
+
Presentation
|
165
|
+
Colour
|
166
|
+
Esc
|
167
|
+
Translator
|
168
|
+
Style
|
169
|
+
Esc
|
170
|
+
Translator
|
171
|
+
Style
|
180
172
|
Esc
|
181
173
|
Translator
|
182
|
-
|
183
|
-
|
184
|
-
ClearInterface
|
185
|
-
Style
|
186
|
-
Esc
|
187
|
-
Translator
|
188
|
-
Terminal
|
174
|
+
Presentation
|
175
|
+
Colour
|
189
176
|
Esc
|
190
177
|
Translator
|
178
|
+
Queue
|
179
|
+
RenderInterface
|
180
|
+
ClearInterface
|
181
|
+
Style
|
182
|
+
Esc
|
183
|
+
Translator
|
184
|
+
Terminal
|
185
|
+
Esc
|
186
|
+
Translator
|
191
187
|
HashParser
|
192
188
|
TextAdaptor
|
193
189
|
JSONParser
|
@@ -9,6 +9,14 @@ module Vedeu
|
|
9
9
|
|
10
10
|
attribute :interfaces, InterfaceCollection
|
11
11
|
|
12
|
+
def self.enqueue(attributes)
|
13
|
+
new(attributes).enqueue
|
14
|
+
end
|
15
|
+
|
16
|
+
def enqueue
|
17
|
+
interfaces.map { |interface| interface.enqueue }
|
18
|
+
end
|
19
|
+
|
12
20
|
def to_json
|
13
21
|
{
|
14
22
|
interfaces: interfaces
|
@@ -12,7 +12,7 @@ module Vedeu
|
|
12
12
|
|
13
13
|
def render
|
14
14
|
out = [ClearInterface.call(interface)]
|
15
|
-
|
15
|
+
processed_lines.each_with_index do |line, index|
|
16
16
|
out << interface.origin(index)
|
17
17
|
out << line.to_s
|
18
18
|
end
|
@@ -22,5 +22,38 @@ module Vedeu
|
|
22
22
|
private
|
23
23
|
|
24
24
|
attr_reader :interface
|
25
|
+
|
26
|
+
def processed_lines
|
27
|
+
lines.each do |line|
|
28
|
+
if line.streams.any?
|
29
|
+
processed_streams = []
|
30
|
+
line_length = 0
|
31
|
+
line.streams.each do |stream|
|
32
|
+
next if stream.text.empty?
|
33
|
+
|
34
|
+
if (line_length += stream.text.size) >= width
|
35
|
+
remainder = width - line_length
|
36
|
+
stream.text = truncate(stream.text, (remainder - 3))
|
37
|
+
end
|
38
|
+
|
39
|
+
processed_streams << stream
|
40
|
+
end
|
41
|
+
|
42
|
+
line.streams = processed_streams
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def truncate(text, value)
|
48
|
+
text.chomp.slice(0...value)
|
49
|
+
end
|
50
|
+
|
51
|
+
def lines
|
52
|
+
interface.lines
|
53
|
+
end
|
54
|
+
|
55
|
+
def width
|
56
|
+
interface.width
|
57
|
+
end
|
25
58
|
end
|
26
59
|
end
|
data/lib/vedeu/parsing/parser.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
require 'vedeu/
|
1
|
+
require 'vedeu/models/composition'
|
2
2
|
require 'vedeu/parsing/hash_parser'
|
3
3
|
require 'vedeu/parsing/json_parser'
|
4
4
|
require 'vedeu/parsing/menu_parser'
|
@@ -18,7 +18,7 @@ module Vedeu
|
|
18
18
|
end
|
19
19
|
|
20
20
|
def parse
|
21
|
-
|
21
|
+
Composition.enqueue(parsed_output)
|
22
22
|
end
|
23
23
|
|
24
24
|
private
|
@@ -4,6 +4,42 @@ require 'vedeu/support/persistence'
|
|
4
4
|
|
5
5
|
module Vedeu
|
6
6
|
describe Composition do
|
7
|
+
describe '.enqueue' do
|
8
|
+
it 'enqueues the interfaces for rendering' do
|
9
|
+
attributes = {
|
10
|
+
interfaces: [
|
11
|
+
{
|
12
|
+
name: 'Composition.enqueue_1',
|
13
|
+
width: 35,
|
14
|
+
height: 5,
|
15
|
+
lines: {
|
16
|
+
streams: {
|
17
|
+
text: 'bd459118e6175689e4394e242debc2ae'
|
18
|
+
}
|
19
|
+
}
|
20
|
+
}, {
|
21
|
+
name: 'Composition.enqueue_2',
|
22
|
+
width: 35,
|
23
|
+
height: 5,
|
24
|
+
lines: {
|
25
|
+
streams: {
|
26
|
+
text: '837acb2cb2ea3ef359257851142a7830'
|
27
|
+
}
|
28
|
+
}
|
29
|
+
}
|
30
|
+
]
|
31
|
+
}
|
32
|
+
|
33
|
+
Composition.enqueue(attributes)
|
34
|
+
Persistence
|
35
|
+
.query('Composition.enqueue_1').dequeue
|
36
|
+
.must_match(/bd459118e6175689e4394e242debc2ae/)
|
37
|
+
Persistence
|
38
|
+
.query('Composition.enqueue_2').dequeue
|
39
|
+
.must_match(/837acb2cb2ea3ef359257851142a7830/)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
7
43
|
describe '#interfaces' do
|
8
44
|
it 'returns a collection of interfaces' do
|
9
45
|
Composition.new({
|
@@ -42,54 +78,54 @@ module Vedeu
|
|
42
78
|
|
43
79
|
describe '#to_s' do
|
44
80
|
it 'returns the stringified content for a single interface, single line, single stream' do
|
45
|
-
Persistence.create({ name: 'int1_lin1_str1', y: 3, x: 3, width:
|
81
|
+
Persistence.create({ name: 'int1_lin1_str1', y: 3, x: 3, width: 15, height: 3 })
|
46
82
|
json = File.read('test/support/json/int1_lin1_str1.json')
|
47
83
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
48
84
|
|
49
85
|
Composition.new(attributes).to_s.must_equal(
|
50
|
-
"\e[3;3H
|
51
|
-
"\e[4;3H
|
52
|
-
"\e[5;3H
|
86
|
+
"\e[3;3H \e[3;3H" \
|
87
|
+
"\e[4;3H \e[4;3H" \
|
88
|
+
"\e[5;3H \e[5;3H" \
|
53
89
|
"\e[3;3HSome text..."
|
54
90
|
)
|
55
91
|
end
|
56
92
|
|
57
93
|
it 'returns the stringified content for a single interface, single line, multiple streams' do
|
58
|
-
Persistence.create({ name: 'int1_lin1_str3', y: 3, x: 3, width:
|
94
|
+
Persistence.create({ name: 'int1_lin1_str3', y: 3, x: 3, width: 30, height: 3 })
|
59
95
|
json = File.read('test/support/json/int1_lin1_str3.json')
|
60
96
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
61
97
|
|
62
98
|
Composition.new(attributes).to_s.must_equal(
|
63
|
-
"\e[3;3H
|
64
|
-
"\e[4;3H
|
65
|
-
"\e[5;3H
|
99
|
+
"\e[3;3H \e[3;3H" \
|
100
|
+
"\e[4;3H \e[4;3H" \
|
101
|
+
"\e[5;3H \e[5;3H" \
|
66
102
|
"\e[3;3HSome text... more text..."
|
67
103
|
)
|
68
104
|
end
|
69
105
|
|
70
106
|
it 'returns the stringified content for a single interface, multiple lines, single stream' do
|
71
|
-
Persistence.create({ name: 'int1_lin2_str1', y: 3, x: 3, width:
|
107
|
+
Persistence.create({ name: 'int1_lin2_str1', y: 3, x: 3, width: 15, height: 3 })
|
72
108
|
json = File.read('test/support/json/int1_lin2_str1.json')
|
73
109
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
74
110
|
|
75
111
|
Composition.new(attributes).to_s.must_equal(
|
76
|
-
"\e[3;3H
|
77
|
-
"\e[4;3H
|
78
|
-
"\e[5;3H
|
112
|
+
"\e[3;3H \e[3;3H" \
|
113
|
+
"\e[4;3H \e[4;3H" \
|
114
|
+
"\e[5;3H \e[5;3H" \
|
79
115
|
"\e[3;3HSome text..." \
|
80
116
|
"\e[4;3HSome text..."
|
81
117
|
)
|
82
118
|
end
|
83
119
|
|
84
120
|
it 'returns the stringified content for a single interface, multiple lines, multiple streams' do
|
85
|
-
Persistence.create({ name: 'int1_lin2_str3', y: 3, x: 3, width:
|
121
|
+
Persistence.create({ name: 'int1_lin2_str3', y: 3, x: 3, width: 30, height: 3 })
|
86
122
|
json = File.read('test/support/json/int1_lin2_str3.json')
|
87
123
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
88
124
|
|
89
125
|
Composition.new(attributes).to_s.must_equal(
|
90
|
-
"\e[3;3H
|
91
|
-
"\e[4;3H
|
92
|
-
"\e[5;3H
|
126
|
+
"\e[3;3H \e[3;3H" \
|
127
|
+
"\e[4;3H \e[4;3H" \
|
128
|
+
"\e[5;3H \e[5;3H" \
|
93
129
|
"\e[3;3HSome text... more text..." \
|
94
130
|
"\e[4;3HSome text... more text..."
|
95
131
|
)
|
@@ -98,109 +134,100 @@ module Vedeu
|
|
98
134
|
it 'returns the stringified content for a single interface, multiple lines, multiple streams, streams contain styles' do
|
99
135
|
json = File.read('test/support/json/int1_lin2_str3_styles.json')
|
100
136
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
101
|
-
Persistence.create({ name: 'int1_lin2_str3_styles', y: 3, x: 3, width:
|
137
|
+
Persistence.create({ name: 'int1_lin2_str3_styles', y: 3, x: 3, width: 30, height: 3 })
|
102
138
|
|
103
139
|
Composition.new(attributes).to_s.must_equal(
|
104
|
-
"\e[3;3H
|
105
|
-
"\e[4;3H
|
106
|
-
"\e[5;3H
|
107
|
-
"\e[3;3H\e[38;5;16m\e[48;5;
|
140
|
+
"\e[3;3H \e[3;3H" \
|
141
|
+
"\e[4;3H \e[4;3H" \
|
142
|
+
"\e[5;3H \e[5;3H" \
|
143
|
+
"\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
|
108
144
|
)
|
109
145
|
end
|
110
146
|
|
111
147
|
it 'returns the stringified content for multiple interfaces, single line, single stream' do
|
112
|
-
Persistence.create({ name: 'int2_lin1_str1_1', y: 3, x: 3, width:
|
113
|
-
Persistence.create({ name: 'int2_lin1_str1_2', y: 6, x: 6, width:
|
148
|
+
Persistence.create({ name: 'int2_lin1_str1_1', y: 3, x: 3, width: 15, height: 3 })
|
149
|
+
Persistence.create({ name: 'int2_lin1_str1_2', y: 6, x: 6, width: 15, height: 3 })
|
114
150
|
json = File.read('test/support/json/int2_lin1_str1.json')
|
115
151
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
116
152
|
|
117
153
|
Composition.new(attributes).to_s.must_equal(
|
118
|
-
"\e[3;3H
|
119
|
-
"\e[4;3H
|
120
|
-
"\e[5;3H
|
154
|
+
"\e[3;3H \e[3;3H" \
|
155
|
+
"\e[4;3H \e[4;3H" \
|
156
|
+
"\e[5;3H \e[5;3H" \
|
121
157
|
"\e[3;3HSome text..." \
|
122
|
-
"\e[6;6H
|
123
|
-
"\e[7;6H
|
124
|
-
"\e[8;6H
|
158
|
+
"\e[6;6H \e[6;6H" \
|
159
|
+
"\e[7;6H \e[7;6H" \
|
160
|
+
"\e[8;6H \e[8;6H" \
|
125
161
|
"\e[6;6HSome text..."
|
126
162
|
)
|
127
163
|
end
|
128
164
|
|
129
165
|
it 'returns the stringified content for multiple interfaces, single line, multiple streams' do
|
130
|
-
Persistence.create({ name: 'int2_lin1_str3_1', y: 3, x: 3, width:
|
131
|
-
Persistence.create({ name: 'int2_lin1_str3_2', y: 6, x: 6, width:
|
166
|
+
Persistence.create({ name: 'int2_lin1_str3_1', y: 3, x: 3, width: 30, height: 3 })
|
167
|
+
Persistence.create({ name: 'int2_lin1_str3_2', y: 6, x: 6, width: 30, height: 3 })
|
132
168
|
json = File.read('test/support/json/int2_lin1_str3.json')
|
133
169
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
134
170
|
|
135
171
|
Composition.new(attributes).to_s.must_equal(
|
136
|
-
"\e[3;3H
|
137
|
-
"\e[4;3H
|
138
|
-
"\e[5;3H
|
139
|
-
"\e[3;3HSome text... more text..."
|
140
|
-
"\e[6;6H
|
141
|
-
"\e[7;6H
|
142
|
-
"\e[8;6H
|
172
|
+
"\e[3;3H \e[3;3H" \
|
173
|
+
"\e[4;3H \e[4;3H" \
|
174
|
+
"\e[5;3H \e[5;3H" \
|
175
|
+
"\e[3;3HSome text... more text..." \
|
176
|
+
"\e[6;6H \e[6;6H" \
|
177
|
+
"\e[7;6H \e[7;6H" \
|
178
|
+
"\e[8;6H \e[8;6H" \
|
143
179
|
"\e[6;6HSome text... more text..."
|
144
180
|
)
|
145
181
|
end
|
146
182
|
|
147
183
|
it 'returns the stringified content for multiple interfaces, multiple lines, single stream' do
|
148
|
-
Persistence.create({ name: 'int2_lin2_str1_1', y: 3, x: 3, width:
|
149
|
-
Persistence.create({ name: 'int2_lin2_str1_2', y: 6, x: 6, width:
|
184
|
+
Persistence.create({ name: 'int2_lin2_str1_1', y: 3, x: 3, width: 15, height: 3 })
|
185
|
+
Persistence.create({ name: 'int2_lin2_str1_2', y: 6, x: 6, width: 15, height: 3 })
|
150
186
|
json = File.read('test/support/json/int2_lin2_str1.json')
|
151
187
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
152
188
|
|
153
189
|
Composition.new(attributes).to_s.must_equal(
|
154
|
-
"\e[3;3H
|
155
|
-
"\e[4;3H
|
156
|
-
"\e[5;3H
|
190
|
+
"\e[3;3H \e[3;3H" \
|
191
|
+
"\e[4;3H \e[4;3H" \
|
192
|
+
"\e[5;3H \e[5;3H" \
|
157
193
|
"\e[3;3HSome text..." \
|
158
194
|
"\e[4;3HSome text..." \
|
159
|
-
"\e[3;3H
|
160
|
-
"\e[4;3H
|
161
|
-
"\e[5;3H
|
195
|
+
"\e[3;3H \e[3;3H" \
|
196
|
+
"\e[4;3H \e[4;3H" \
|
197
|
+
"\e[5;3H \e[5;3H" \
|
162
198
|
"\e[3;3HSome text..." \
|
163
199
|
"\e[4;3HSome text..."
|
164
200
|
)
|
165
201
|
end
|
166
202
|
|
167
203
|
it 'returns the stringified content for multiple interfaces, multiple lines, multiple streams' do
|
168
|
-
Persistence.create({ name: 'int2_lin2_str3_1', y: 3, x: 3, width:
|
169
|
-
Persistence.create({ name: 'int2_lin2_str3_2', y: 6, x: 6, width:
|
204
|
+
Persistence.create({ name: 'int2_lin2_str3_1', y: 3, x: 3, width: 30, height: 3 })
|
205
|
+
Persistence.create({ name: 'int2_lin2_str3_2', y: 6, x: 6, width: 30, height: 3 })
|
170
206
|
json = File.read('test/support/json/int2_lin2_str3.json')
|
171
207
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
172
208
|
|
173
209
|
Composition.new(attributes).to_s.must_equal(
|
174
|
-
"\e[3;3H
|
175
|
-
"\e[4;3H
|
176
|
-
"\e[5;3H
|
177
|
-
"\e[3;3HSome text... more text..."
|
178
|
-
"\e[4;3HSome text... more text..."
|
179
|
-
"\e[6;6H
|
180
|
-
"\e[7;6H
|
181
|
-
"\e[8;6H
|
182
|
-
"\e[6;6HSome text... more text..."
|
210
|
+
"\e[3;3H \e[3;3H" \
|
211
|
+
"\e[4;3H \e[4;3H" \
|
212
|
+
"\e[5;3H \e[5;3H" \
|
213
|
+
"\e[3;3HSome text... more text..." \
|
214
|
+
"\e[4;3HSome text... more text..." \
|
215
|
+
"\e[6;6H \e[6;6H" \
|
216
|
+
"\e[7;6H \e[7;6H" \
|
217
|
+
"\e[8;6H \e[8;6H" \
|
218
|
+
"\e[6;6HSome text... more text..." \
|
183
219
|
"\e[7;6HSome text... more text..."
|
184
220
|
)
|
185
221
|
end
|
186
222
|
|
187
223
|
it 'returns the stringified content for multiple interfaces, multiple lines, multiple streams, streams contain styles' do
|
188
|
-
Persistence.create({ name: 'int2_lin2_str3_styles_1', y: 3, x: 3, width:
|
189
|
-
Persistence.create({ name: 'int2_lin2_str3_styles_2', y: 6, x: 6, width:
|
224
|
+
Persistence.create({ name: 'int2_lin2_str3_styles_1', y: 3, x: 3, width: 30, height: 3 })
|
225
|
+
Persistence.create({ name: 'int2_lin2_str3_styles_2', y: 6, x: 6, width: 30, height: 3 })
|
190
226
|
json = File.read('test/support/json/int2_lin2_str3_styles.json')
|
191
227
|
attributes = JSON.load(json, nil, symbolize_names: true)
|
192
228
|
|
193
229
|
Composition.new(attributes).to_s.must_equal(
|
194
|
-
"\e[3;3H
|
195
|
-
"\e[4;3H \e[4;3H" \
|
196
|
-
"\e[5;3H \e[5;3H" \
|
197
|
-
"\e[3;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
|
198
|
-
"\e[4;3H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
|
199
|
-
"\e[6;6H \e[6;6H" \
|
200
|
-
"\e[7;6H \e[7;6H" \
|
201
|
-
"\e[8;6H \e[8;6H" \
|
202
|
-
"\e[6;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..." \
|
203
|
-
"\e[7;6H\e[38;5;16m\e[48;5;21m\e[24m\e[21m\e[27m\e[4mSome text...\e[38;5;226m\e[48;5;46m\e[24m\e[21m\e[27m \e[38;5;231m\e[48;5;201m\e[1mmore text..."
|
230
|
+
"\e[3;3H \e[3;3H\e[4;3H \e[4;3H\e[5;3H \e[5;3H\e[3;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[4;3H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[6;6H \e[6;6H\e[7;6H \e[7;6H\e[8;6H \e[8;6H\e[6;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text...\e[7;6H\e[38;5;16m\e[48;5;21mSome text...\e[38;5;226m\e[48;5;46m \e[38;5;231m\e[48;5;201mmore text..."
|
204
231
|
)
|
205
232
|
end
|
206
233
|
end
|
@@ -68,14 +68,14 @@ module Vedeu
|
|
68
68
|
Queue.reset
|
69
69
|
interface = Interface.new({
|
70
70
|
name: 'Interface#enqueue',
|
71
|
-
width:
|
71
|
+
width: 8,
|
72
72
|
height: 2,
|
73
73
|
lines: [ { streams: { text: 'a8f39' } } ]
|
74
74
|
})
|
75
75
|
interface.enqueue
|
76
76
|
interface.dequeue.must_equal(
|
77
|
-
"\e[1;1H
|
78
|
-
"\e[2;1H
|
77
|
+
"\e[1;1H \e[1;1H" \
|
78
|
+
"\e[2;1H \e[2;1H" \
|
79
79
|
"\e[1;1Ha8f39"
|
80
80
|
)
|
81
81
|
end
|
@@ -140,7 +140,7 @@ module Vedeu
|
|
140
140
|
foreground: '#ff0000',
|
141
141
|
background: '#000000'
|
142
142
|
},
|
143
|
-
width:
|
143
|
+
width: 11,
|
144
144
|
height: 3
|
145
145
|
}
|
146
146
|
interface = Interface.new(attributes)
|
@@ -149,9 +149,9 @@ module Vedeu
|
|
149
149
|
Terminal.stub(:output, nil) do
|
150
150
|
interface.refresh.must_equal(
|
151
151
|
"\e[38;5;196m\e[48;5;16m" \
|
152
|
-
"\e[1;1H
|
153
|
-
"\e[2;1H
|
154
|
-
"\e[3;1H
|
152
|
+
"\e[1;1H \e[1;1H" \
|
153
|
+
"\e[2;1H \e[2;1H" \
|
154
|
+
"\e[3;1H \e[3;1H" \
|
155
155
|
"\e[1;1H#refresh" \
|
156
156
|
"\e[2;1H#refresh" \
|
157
157
|
"\e[3;1H#refresh"
|
@@ -167,14 +167,14 @@ module Vedeu
|
|
167
167
|
foreground: '#ff0000',
|
168
168
|
background: '#000000'
|
169
169
|
},
|
170
|
-
width:
|
170
|
+
width: 11,
|
171
171
|
height: 3
|
172
172
|
}
|
173
173
|
interface = Interface.new(attributes)
|
174
174
|
interface.current = "\e[38;5;196m\e[48;5;16m" \
|
175
|
-
"\e[1;1H
|
176
|
-
"\e[2;1H
|
177
|
-
"\e[3;1H
|
175
|
+
"\e[1;1H \e[1;1H" \
|
176
|
+
"\e[2;1H \e[2;1H" \
|
177
|
+
"\e[3;1H \e[3;1H" \
|
178
178
|
"\e[1;1H#refresh" \
|
179
179
|
"\e[2;1H#refresh" \
|
180
180
|
"\e[3;1H#refresh"
|
@@ -182,9 +182,9 @@ module Vedeu
|
|
182
182
|
Terminal.stub(:output, nil) do
|
183
183
|
interface.refresh.must_equal(
|
184
184
|
"\e[38;5;196m\e[48;5;16m" \
|
185
|
-
"\e[1;1H
|
186
|
-
"\e[2;1H
|
187
|
-
"\e[3;1H
|
185
|
+
"\e[1;1H \e[1;1H" \
|
186
|
+
"\e[2;1H \e[2;1H" \
|
187
|
+
"\e[3;1H \e[3;1H" \
|
188
188
|
"\e[1;1H#refresh" \
|
189
189
|
"\e[2;1H#refresh" \
|
190
190
|
"\e[3;1H#refresh"
|
@@ -28,13 +28,13 @@ module Vedeu
|
|
28
28
|
end
|
29
29
|
|
30
30
|
describe '#to_json' do
|
31
|
-
it 'returns
|
31
|
+
it 'returns a String' do
|
32
32
|
line.to_json.must_equal("{\"colour\":{\"foreground\":\"#ff0000\",\"background\":\"#000000\"},\"style\":[\"normal\"],\"streams\":[]}")
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
36
36
|
describe '#to_s' do
|
37
|
-
it 'returns
|
37
|
+
it 'returns a String' do
|
38
38
|
line.to_s.must_equal(
|
39
39
|
"\e[38;5;196m\e[48;5;16m" \
|
40
40
|
"\e[24m\e[21m\e[27m"
|
@@ -12,18 +12,29 @@ module Vedeu
|
|
12
12
|
interface = Interface.new({
|
13
13
|
name: '.call',
|
14
14
|
width: 32,
|
15
|
-
height:
|
15
|
+
height: 3,
|
16
16
|
lines: 'RenderInterface.call',
|
17
17
|
lines: [
|
18
|
-
{
|
19
|
-
|
18
|
+
{
|
19
|
+
streams: [{ text: 'this is the first' }]
|
20
|
+
}, {
|
21
|
+
streams: { text: 'this is the second and it is long' }
|
22
|
+
}, {
|
23
|
+
streams: [
|
24
|
+
{ text: 'this is the third, ' },
|
25
|
+
{ text: 'it is even longer ' },
|
26
|
+
{ text: 'and still truncated' }
|
27
|
+
]
|
28
|
+
}
|
20
29
|
]
|
21
30
|
})
|
22
31
|
RenderInterface.call(interface).must_equal(
|
23
32
|
"\e[1;1H \e[1;1H" \
|
24
33
|
"\e[2;1H \e[2;1H" \
|
25
|
-
"\e[
|
26
|
-
"\e[
|
34
|
+
"\e[3;1H \e[3;1H" \
|
35
|
+
"\e[1;1Hthis is the first" \
|
36
|
+
"\e[2;1Hthis is the second and it is " \
|
37
|
+
"\e[3;1Hthis is the third, it is even"
|
27
38
|
)
|
28
39
|
end
|
29
40
|
end
|
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.0.
|
7
|
+
spec.version = '0.0.42'
|
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.0.
|
4
|
+
version: 0.0.42
|
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-07-
|
11
|
+
date: 2014-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -189,7 +189,6 @@ files:
|
|
189
189
|
- lib/vedeu/output/clear_interface.rb
|
190
190
|
- lib/vedeu/output/render_interface.rb
|
191
191
|
- lib/vedeu/output/template.rb
|
192
|
-
- lib/vedeu/parsing/compositor.rb
|
193
192
|
- lib/vedeu/parsing/hash_parser.rb
|
194
193
|
- lib/vedeu/parsing/json_parser.rb
|
195
194
|
- lib/vedeu/parsing/menu_parser.rb
|
@@ -226,7 +225,6 @@ files:
|
|
226
225
|
- test/lib/vedeu/output/clear_interface_test.rb
|
227
226
|
- test/lib/vedeu/output/render_interface_test.rb
|
228
227
|
- test/lib/vedeu/output/template.rb
|
229
|
-
- test/lib/vedeu/parsing/compositor_test.rb
|
230
228
|
- test/lib/vedeu/parsing/hash_parser_test.rb
|
231
229
|
- test/lib/vedeu/parsing/json_parser_test.rb
|
232
230
|
- test/lib/vedeu/parsing/parser_test.rb
|
@@ -304,7 +302,6 @@ test_files:
|
|
304
302
|
- test/lib/vedeu/output/clear_interface_test.rb
|
305
303
|
- test/lib/vedeu/output/render_interface_test.rb
|
306
304
|
- test/lib/vedeu/output/template.rb
|
307
|
-
- test/lib/vedeu/parsing/compositor_test.rb
|
308
305
|
- test/lib/vedeu/parsing/hash_parser_test.rb
|
309
306
|
- test/lib/vedeu/parsing/json_parser_test.rb
|
310
307
|
- test/lib/vedeu/parsing/parser_test.rb
|
@@ -1,25 +0,0 @@
|
|
1
|
-
require 'vedeu/models/composition'
|
2
|
-
|
3
|
-
module Vedeu
|
4
|
-
class Compositor
|
5
|
-
def self.enqueue(attributes)
|
6
|
-
new(attributes).enqueue
|
7
|
-
end
|
8
|
-
|
9
|
-
def initialize(attributes)
|
10
|
-
@attributes = attributes
|
11
|
-
end
|
12
|
-
|
13
|
-
def enqueue
|
14
|
-
composition.interfaces.map { |interface| interface.enqueue }
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
attr_reader :attributes
|
20
|
-
|
21
|
-
def composition
|
22
|
-
@composition ||= Composition.new(attributes)
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
@@ -1,42 +0,0 @@
|
|
1
|
-
require 'test_helper'
|
2
|
-
require 'vedeu/parsing/compositor'
|
3
|
-
|
4
|
-
module Vedeu
|
5
|
-
describe Compositor do
|
6
|
-
describe '.enqueue' do
|
7
|
-
it 'enqueues the interfaces for rendering' do
|
8
|
-
attributes = {
|
9
|
-
interfaces: [
|
10
|
-
{
|
11
|
-
name: 'Compositor.enqueue_1',
|
12
|
-
width: 5,
|
13
|
-
height: 5,
|
14
|
-
lines: {
|
15
|
-
streams: {
|
16
|
-
text: 'bd459118e6175689e4394e242debc2ae'
|
17
|
-
}
|
18
|
-
}
|
19
|
-
}, {
|
20
|
-
name: 'Compositor.enqueue_2',
|
21
|
-
width: 5,
|
22
|
-
height: 5,
|
23
|
-
lines: {
|
24
|
-
streams: {
|
25
|
-
text: '837acb2cb2ea3ef359257851142a7830'
|
26
|
-
}
|
27
|
-
}
|
28
|
-
}
|
29
|
-
]
|
30
|
-
}
|
31
|
-
|
32
|
-
Compositor.enqueue(attributes)
|
33
|
-
Persistence
|
34
|
-
.query('Compositor.enqueue_1').dequeue
|
35
|
-
.must_match(/bd459118e6175689e4394e242debc2ae/)
|
36
|
-
Persistence
|
37
|
-
.query('Compositor.enqueue_2').dequeue
|
38
|
-
.must_match(/837acb2cb2ea3ef359257851142a7830/)
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|