vedeu 0.5.4 → 0.5.5
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/docs/dsl.md +3 -3
- data/examples/borders_app.rb +2 -0
- data/examples/colours_app.rb +2 -0
- data/examples/configuration_app.rb +2 -0
- data/examples/drb_app.rb +2 -0
- data/examples/focus_app.rb +2 -0
- data/examples/hello_world.rb +2 -0
- data/examples/material_colours_app.rb +2 -0
- data/lib/vedeu.rb +2 -0
- data/lib/vedeu/all.rb +4 -13
- data/lib/vedeu/api.rb +7 -6
- data/lib/vedeu/borders/border.rb +1 -1
- data/lib/vedeu/borders/render_border.rb +18 -18
- data/lib/vedeu/buffers/buffer.rb +18 -28
- data/lib/vedeu/colours/colour.rb +1 -1
- data/lib/vedeu/colours/colour_translator.rb +1 -1
- data/lib/vedeu/cursor/cursor.rb +9 -6
- data/lib/vedeu/dsl/border.rb +1 -1
- data/lib/vedeu/dsl/composition.rb +5 -5
- data/lib/vedeu/dsl/geometry.rb +1 -1
- data/lib/vedeu/dsl/group.rb +1 -1
- data/lib/vedeu/dsl/interface.rb +69 -93
- data/lib/vedeu/dsl/keymap.rb +1 -1
- data/lib/vedeu/dsl/line.rb +11 -11
- data/lib/vedeu/dsl/shared.rb +81 -0
- data/lib/vedeu/dsl/stream.rb +3 -3
- data/lib/vedeu/dsl/view.rb +76 -64
- data/lib/vedeu/models/escape.rb +1 -1
- data/lib/vedeu/models/interface.rb +3 -57
- data/lib/vedeu/models/menu.rb +1 -1
- data/lib/vedeu/models/views/all.rb +22 -0
- data/lib/vedeu/models/views/char.rb +175 -0
- data/lib/vedeu/models/views/chars.rb +13 -0
- data/lib/vedeu/models/views/composition.rb +73 -0
- data/lib/vedeu/models/views/line.rb +111 -0
- data/lib/vedeu/models/views/lines.rb +13 -0
- data/lib/vedeu/models/views/stream.rb +122 -0
- data/lib/vedeu/models/views/streams.rb +13 -0
- data/lib/vedeu/models/views/view.rb +157 -0
- data/lib/vedeu/models/views/view_collection.rb +13 -0
- data/lib/vedeu/null/view.rb +67 -0
- data/lib/vedeu/output/clear/named_interface.rb +4 -4
- data/lib/vedeu/output/compressor.rb +6 -6
- data/lib/vedeu/output/html_char.rb +6 -6
- data/lib/vedeu/output/output.rb +3 -3
- data/lib/vedeu/output/presentation.rb +1 -1
- data/lib/vedeu/output/renderers/escape_sequence.rb +1 -1
- data/lib/vedeu/output/renderers/file.rb +1 -1
- data/lib/vedeu/output/renderers/html.rb +3 -3
- data/lib/vedeu/output/renderers/json.rb +4 -4
- data/lib/vedeu/output/renderers/null.rb +1 -1
- data/lib/vedeu/output/renderers/terminal.rb +5 -5
- data/lib/vedeu/output/renderers/text.rb +3 -3
- data/lib/vedeu/output/style.rb +1 -1
- data/lib/vedeu/output/text.rb +20 -15
- data/lib/vedeu/output/viewport.rb +16 -23
- data/lib/vedeu/output/virtual_buffer.rb +9 -8
- data/lib/vedeu/output/virtual_terminal.rb +11 -11
- data/lib/vedeu/output/wordwrap.rb +5 -5
- data/lib/vedeu/runtime/application.rb +1 -1
- data/lib/vedeu/runtime/main_loop.rb +1 -1
- data/lib/vedeu/templating/helpers.rb +11 -10
- data/lib/vedeu/templating/template.rb +1 -1
- data/lib/vedeu/templating/view_template.rb +6 -6
- data/lib/vedeu/version.rb +1 -2
- data/test/lib/vedeu/api_test.rb +30 -30
- data/test/lib/vedeu/buffers/buffer_test.rb +5 -139
- data/test/lib/vedeu/colours/colour_translator_test.rb +3 -3
- data/test/lib/vedeu/configuration/api_test.rb +3 -3
- data/test/lib/vedeu/cursor/refresh_cursor_test.rb +1 -1
- data/test/lib/vedeu/dsl/composition_test.rb +7 -7
- data/test/lib/vedeu/dsl/group_test.rb +2 -2
- data/test/lib/vedeu/dsl/interface_test.rb +31 -21
- data/test/lib/vedeu/dsl/keymap_test.rb +4 -4
- data/test/lib/vedeu/dsl/line_test.rb +8 -8
- data/test/lib/vedeu/dsl/stream_test.rb +4 -4
- data/test/lib/vedeu/dsl/text_test.rb +11 -11
- data/test/lib/vedeu/dsl/view_test.rb +24 -29
- data/test/lib/vedeu/geometry/grid_test.rb +4 -4
- data/test/lib/vedeu/input/key_test.rb +1 -1
- data/test/lib/vedeu/internal_api_test.rb +18 -18
- data/test/lib/vedeu/models/focus_test.rb +54 -54
- data/test/lib/vedeu/models/interface_test.rb +11 -105
- data/test/lib/vedeu/models/menu_test.rb +1 -1
- data/test/lib/vedeu/models/views/char_test.rb +257 -0
- data/test/lib/vedeu/models/views/chars_test.rb +22 -0
- data/test/lib/vedeu/models/views/composition_test.rb +61 -0
- data/test/lib/vedeu/models/views/line_test.rb +189 -0
- data/test/lib/vedeu/models/views/lines_test.rb +22 -0
- data/test/lib/vedeu/models/views/stream_test.rb +138 -0
- data/test/lib/vedeu/models/views/streams_test.rb +22 -0
- data/test/lib/vedeu/models/views/view_test.rb +40 -0
- data/test/lib/vedeu/null/view_test.rb +12 -0
- data/test/lib/vedeu/output/clear/named_interface_test.rb +4 -4
- data/test/lib/vedeu/output/compressor_test.rb +28 -28
- data/test/lib/vedeu/output/html_char_test.rb +2 -2
- data/test/lib/vedeu/output/presentation_test.rb +10 -14
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +20 -4
- data/test/lib/vedeu/output/renderers/html_test.rb +4 -4
- data/test/lib/vedeu/output/renderers/json_test.rb +3 -3
- data/test/lib/vedeu/output/text_test.rb +10 -10
- data/test/lib/vedeu/output/viewport_test.rb +21 -23
- data/test/lib/vedeu/output/virtual_buffer_test.rb +1 -1
- data/test/lib/vedeu/output/virtual_terminal_test.rb +1 -1
- data/test/lib/vedeu/output/wordwrap_test.rb +9 -9
- data/test/lib/vedeu/repositories/repository_test.rb +2 -2
- data/test/lib/vedeu/templating/helpers_test.rb +6 -39
- data/test/lib/vedeu/templating/template_test.rb +2 -2
- data/test/lib/vedeu/templating/view_template_test.rb +91 -91
- data/test/lib/vedeu/terminal_test.rb +1 -1
- metadata +33 -27
- data/lib/vedeu/buffers/display_buffer.rb +0 -39
- data/lib/vedeu/models/char.rb +0 -170
- data/lib/vedeu/models/chars.rb +0 -9
- data/lib/vedeu/models/composition.rb +0 -66
- data/lib/vedeu/models/line.rb +0 -112
- data/lib/vedeu/models/lines.rb +0 -9
- data/lib/vedeu/models/stream.rb +0 -122
- data/lib/vedeu/models/streams.rb +0 -9
- data/test/lib/vedeu/buffers/display_buffer_test.rb +0 -61
- data/test/lib/vedeu/models/char_test.rb +0 -253
- data/test/lib/vedeu/models/chars_test.rb +0 -18
- data/test/lib/vedeu/models/composition_test.rb +0 -57
- data/test/lib/vedeu/models/line_test.rb +0 -189
- data/test/lib/vedeu/models/lines_test.rb +0 -18
- data/test/lib/vedeu/models/stream_test.rb +0 -141
- data/test/lib/vedeu/models/streams_test.rb +0 -18
@@ -1,13 +1,13 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
|
-
# Represents a {Vedeu::Char} as a HTML tag with value. By default, a
|
4
|
-
# cell is used.
|
3
|
+
# Represents a {Vedeu::Views::Char} as a HTML tag with value. By default, a
|
4
|
+
# table cell is used.
|
5
5
|
#
|
6
6
|
class HTMLChar
|
7
7
|
|
8
8
|
include Vedeu::Common
|
9
9
|
|
10
|
-
# @param char [Vedeu::Char]
|
10
|
+
# @param char [Vedeu::Views::Char]
|
11
11
|
# @param options [Hash<Symbol => String>]
|
12
12
|
# @option options start_tag [String]
|
13
13
|
# @option options end_tag [String]
|
@@ -18,7 +18,7 @@ module Vedeu
|
|
18
18
|
|
19
19
|
# Returns a new instance of Vedeu::HTMLChar.
|
20
20
|
#
|
21
|
-
# @param char [Vedeu::Char]
|
21
|
+
# @param char [Vedeu::Views::Char]
|
22
22
|
# @param options [Hash<Symbol => String>]
|
23
23
|
# @option options start_tag [String]
|
24
24
|
# @option options end_tag [String]
|
@@ -36,7 +36,7 @@ module Vedeu
|
|
36
36
|
protected
|
37
37
|
|
38
38
|
# @!attribute [r] char
|
39
|
-
# @return [Vedeu::Char]
|
39
|
+
# @return [Vedeu::Views::Char]
|
40
40
|
attr_reader :char
|
41
41
|
|
42
42
|
private
|
@@ -90,7 +90,7 @@ module Vedeu
|
|
90
90
|
@bg ||= colour(char, 'background', '#000')
|
91
91
|
end
|
92
92
|
|
93
|
-
# @param char [Vedeu::Char]
|
93
|
+
# @param char [Vedeu::Views::Char]
|
94
94
|
# @param type [String]
|
95
95
|
# @param default [String]
|
96
96
|
# @return [String]
|
data/lib/vedeu/output/output.rb
CHANGED
@@ -14,7 +14,7 @@ module Vedeu
|
|
14
14
|
|
15
15
|
# Return a new instance of Vedeu::Output.
|
16
16
|
#
|
17
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
17
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
18
18
|
# @return [Output]
|
19
19
|
def initialize(output)
|
20
20
|
@output = output
|
@@ -30,13 +30,13 @@ module Vedeu
|
|
30
30
|
# Vedeu::Renderers::HTML.to_file(Vedeu::VirtualBuffer.retrieve)
|
31
31
|
end
|
32
32
|
|
33
|
-
Vedeu.renderers.render(output)
|
33
|
+
Vedeu.renderers.render(output) if Vedeu.ready?
|
34
34
|
end
|
35
35
|
|
36
36
|
protected
|
37
37
|
|
38
38
|
# @!attribute [r] output
|
39
|
-
# @return [Array<Array<Vedeu::Char>>]
|
39
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
40
40
|
attr_reader :output
|
41
41
|
|
42
42
|
end # Output
|
@@ -17,7 +17,7 @@ module Vedeu
|
|
17
17
|
|
18
18
|
# Render the output with the escape sequences escaped.
|
19
19
|
#
|
20
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
20
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
21
21
|
# @return [String]
|
22
22
|
def render(output)
|
23
23
|
@parsed ||= Array(output).flatten.map do |char|
|
@@ -19,7 +19,7 @@ module Vedeu
|
|
19
19
|
@options = options || {}
|
20
20
|
end
|
21
21
|
|
22
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
22
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
23
23
|
# @return [String]
|
24
24
|
def render(output)
|
25
25
|
@options[:content] = output
|
@@ -39,7 +39,7 @@ module Vedeu
|
|
39
39
|
Array(content).each do |line|
|
40
40
|
out << "#{start_row_tag}\n"
|
41
41
|
line.each do |char|
|
42
|
-
if char.is_a?(Vedeu::Char)
|
42
|
+
if char.is_a?(Vedeu::Views::Char)
|
43
43
|
out << char.to_html
|
44
44
|
out << "\n"
|
45
45
|
end
|
@@ -51,7 +51,7 @@ module Vedeu
|
|
51
51
|
|
52
52
|
private
|
53
53
|
|
54
|
-
# @return [Array<Array<Vedeu::Char>>]
|
54
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
55
55
|
def content
|
56
56
|
options[:content]
|
57
57
|
end
|
@@ -14,7 +14,7 @@ module Vedeu
|
|
14
14
|
@options = options || {}
|
15
15
|
end
|
16
16
|
|
17
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
17
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
18
18
|
# @return [String]
|
19
19
|
def render(output)
|
20
20
|
super(parsed(output))
|
@@ -22,7 +22,7 @@ module Vedeu
|
|
22
22
|
|
23
23
|
private
|
24
24
|
|
25
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
25
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
26
26
|
# @return [String]
|
27
27
|
def parsed(output)
|
28
28
|
return '' if output.nil? || output.empty?
|
@@ -30,13 +30,13 @@ module Vedeu
|
|
30
30
|
::JSON.pretty_generate(as_hash(output))
|
31
31
|
end
|
32
32
|
|
33
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
33
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
34
34
|
# @return [Array]
|
35
35
|
def as_hash(output)
|
36
36
|
sorted(output).map(&:to_hash)
|
37
37
|
end
|
38
38
|
|
39
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
39
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
40
40
|
# @return [Array]
|
41
41
|
def sorted(output)
|
42
42
|
Array(output).flatten.sort { |a, b| a.position <=> b.position }
|
@@ -2,8 +2,8 @@ module Vedeu
|
|
2
2
|
|
3
3
|
module Renderers
|
4
4
|
|
5
|
-
# Converts a grid of {Vedeu::Char} objects into a stream of escape
|
6
|
-
# and content suitable for a terminal.
|
5
|
+
# Converts a grid of {Vedeu::Views::Char} objects into a stream of escape
|
6
|
+
# sequences and content suitable for a terminal.
|
7
7
|
#
|
8
8
|
class Terminal
|
9
9
|
|
@@ -17,7 +17,7 @@ module Vedeu
|
|
17
17
|
@options = options || {}
|
18
18
|
end
|
19
19
|
|
20
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
20
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
21
21
|
# @return [Array<String>]
|
22
22
|
def render(output)
|
23
23
|
Vedeu::Terminal.output(parsed(output))
|
@@ -25,8 +25,8 @@ module Vedeu
|
|
25
25
|
|
26
26
|
private
|
27
27
|
|
28
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
29
|
-
# @return [Array<Array<Vedeu::Char>>]
|
28
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
29
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
30
30
|
def parsed(output)
|
31
31
|
Vedeu.timer('Compression') do
|
32
32
|
Vedeu::Compressor.render(output)
|
@@ -2,8 +2,8 @@ module Vedeu
|
|
2
2
|
|
3
3
|
module Renderers
|
4
4
|
|
5
|
-
# Converts a grid of {Vedeu::Char} objects into a stream of escape
|
6
|
-
# and content.
|
5
|
+
# Converts a grid of {Vedeu::Views::Char} objects into a stream of escape
|
6
|
+
# sequences and content.
|
7
7
|
#
|
8
8
|
class Text
|
9
9
|
|
@@ -17,7 +17,7 @@ module Vedeu
|
|
17
17
|
@options = options || {}
|
18
18
|
end
|
19
19
|
|
20
|
-
# @param output [Array<Array<Vedeu::Char>>]
|
20
|
+
# @param output [Array<Array<Vedeu::Views::Char>>]
|
21
21
|
# @return [String]
|
22
22
|
def render(output)
|
23
23
|
Vedeu::Compressor.render(output)
|
data/lib/vedeu/output/style.rb
CHANGED
data/lib/vedeu/output/text.rb
CHANGED
@@ -22,7 +22,8 @@ module Vedeu
|
|
22
22
|
# @option options background [String]
|
23
23
|
# @option options colour [Hash|NilClass]
|
24
24
|
# @option options foreground [String]
|
25
|
-
# @option options model
|
25
|
+
# @option options model
|
26
|
+
# [Vedeu::Views::View|Vedeu::Views::Line|Vedeu::Views::Stream]
|
26
27
|
# @option options pad [String]
|
27
28
|
# @option options width [Integer]
|
28
29
|
# @return [Vedeu::Text]
|
@@ -80,7 +81,7 @@ module Vedeu
|
|
80
81
|
end
|
81
82
|
|
82
83
|
# If a colour, background or foreground option is set, use them as the
|
83
|
-
# colour settings for the new Vedeu::Stream.
|
84
|
+
# colour settings for the new Vedeu::Views::Stream.
|
84
85
|
#
|
85
86
|
# @return [void]
|
86
87
|
def colour
|
@@ -93,11 +94,12 @@ module Vedeu
|
|
93
94
|
end
|
94
95
|
end
|
95
96
|
|
96
|
-
# Returns either a Vedeu::Line or Vedeu::Stream containing the
|
97
|
+
# Returns either a Vedeu::Views::Line or Vedeu::Views::Stream containing the
|
98
|
+
# text value.
|
97
99
|
#
|
98
|
-
# @return [Vedeu::Line|Vedeu::Stream]
|
100
|
+
# @return [Vedeu::Views::Line|Vedeu::Views::Stream]
|
99
101
|
def content
|
100
|
-
if model.is_a?(Vedeu::
|
102
|
+
if model.is_a?(Vedeu::Views::View)
|
101
103
|
stream.parent = line
|
102
104
|
line.add(stream)
|
103
105
|
line
|
@@ -128,14 +130,17 @@ module Vedeu
|
|
128
130
|
string.ljust(width, pad)
|
129
131
|
end
|
130
132
|
|
131
|
-
# @return [Vedeu::Line]
|
133
|
+
# @return [Vedeu::Views::Line]
|
132
134
|
def line
|
133
|
-
@line ||= Vedeu::Line.build(parent: parent)
|
135
|
+
@line ||= Vedeu::Views::Line.build(parent: parent)
|
134
136
|
end
|
135
137
|
|
136
138
|
# Returns the model option when set.
|
137
139
|
#
|
138
|
-
# @return [Vedeu::
|
140
|
+
# @return [Vedeu::Views::View|
|
141
|
+
# Vedeu::Views::Line|
|
142
|
+
# Vedeu::Null::Generic|
|
143
|
+
# Vedeu::Views::Stream]
|
139
144
|
def model
|
140
145
|
@model ||= options[:model] || Vedeu::Null::Generic.new
|
141
146
|
end
|
@@ -147,11 +152,11 @@ module Vedeu
|
|
147
152
|
options[:pad]
|
148
153
|
end
|
149
154
|
|
150
|
-
# Returns the parent for the new Vedeu::Stream.
|
155
|
+
# Returns the parent for the new Vedeu::Views::Stream.
|
151
156
|
#
|
152
157
|
# @return [void]
|
153
158
|
def parent
|
154
|
-
model.is_a?(Vedeu::Stream) ? model.parent : model
|
159
|
+
model.is_a?(Vedeu::Views::Stream) ? model.parent : model
|
155
160
|
end
|
156
161
|
|
157
162
|
# The string padded to width, right justified.
|
@@ -161,14 +166,14 @@ module Vedeu
|
|
161
166
|
string.rjust(width, pad)
|
162
167
|
end
|
163
168
|
|
164
|
-
# Builds and returns a new Vedeu::Stream.
|
169
|
+
# Builds and returns a new Vedeu::Views::Stream.
|
165
170
|
#
|
166
171
|
# @return [void]
|
167
172
|
def stream
|
168
|
-
@stream ||= Vedeu::Stream.build(colour: colour,
|
169
|
-
|
170
|
-
|
171
|
-
|
173
|
+
@stream ||= Vedeu::Views::Stream.build(colour: colour,
|
174
|
+
parent: parent,
|
175
|
+
style: style,
|
176
|
+
value: aligned)
|
172
177
|
end
|
173
178
|
|
174
179
|
# The string, coerced.
|
@@ -10,7 +10,7 @@ module Vedeu
|
|
10
10
|
|
11
11
|
extend Forwardable
|
12
12
|
|
13
|
-
def_delegators :
|
13
|
+
def_delegators :view,
|
14
14
|
:lines,
|
15
15
|
:lines?,
|
16
16
|
:name,
|
@@ -24,28 +24,21 @@ module Vedeu
|
|
24
24
|
:ox,
|
25
25
|
:oy
|
26
26
|
|
27
|
-
# @param
|
28
|
-
# @return [Array<Array<Vedeu::Char>>]
|
29
|
-
def self.render(
|
30
|
-
|
31
|
-
new(interface).render
|
32
|
-
|
33
|
-
else
|
34
|
-
[]
|
35
|
-
|
36
|
-
end
|
27
|
+
# @param view [Vedeu::Views::View]
|
28
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
29
|
+
def self.render(view)
|
30
|
+
new(view).render
|
37
31
|
end
|
38
32
|
|
39
33
|
# Returns an instance of Vedeu::Viewport.
|
40
34
|
#
|
41
|
-
# @param
|
42
|
-
# @return [Viewport]
|
43
|
-
def initialize(
|
44
|
-
@
|
35
|
+
# @param view [Vedeu::Views::View]
|
36
|
+
# @return [Vedeu::Viewport]
|
37
|
+
def initialize(view)
|
38
|
+
@view = view
|
45
39
|
end
|
46
40
|
|
47
|
-
# Returns the
|
48
|
-
# interface.
|
41
|
+
# Returns the content for the view.
|
49
42
|
#
|
50
43
|
# @return [Array<Array<String>>]
|
51
44
|
def render
|
@@ -75,13 +68,13 @@ module Vedeu
|
|
75
68
|
|
76
69
|
protected
|
77
70
|
|
78
|
-
# @!attribute [r]
|
79
|
-
# @return [Vedeu::
|
80
|
-
attr_reader :
|
71
|
+
# @!attribute [r] view
|
72
|
+
# @return [Vedeu::Views::View]
|
73
|
+
attr_reader :view
|
81
74
|
|
82
75
|
private
|
83
76
|
|
84
|
-
# Returns the visible content for the
|
77
|
+
# Returns the visible content for the view.
|
85
78
|
#
|
86
79
|
# @note If there are no lines of content, we return an empty array. If there
|
87
80
|
# are no more columns of content we return a space enclosed in an array;
|
@@ -148,7 +141,7 @@ module Vedeu
|
|
148
141
|
end
|
149
142
|
end
|
150
143
|
|
151
|
-
# Return the border associated with the interface we are drawing.
|
144
|
+
# Return the border associated with the interface/view we are drawing.
|
152
145
|
#
|
153
146
|
# @return (see Vedeu::Borders#by_name)
|
154
147
|
def border
|
@@ -165,7 +158,7 @@ module Vedeu
|
|
165
158
|
@by ||= border.by
|
166
159
|
end
|
167
160
|
|
168
|
-
# Fetch the cursor associated with the interface we are drawing.
|
161
|
+
# Fetch the cursor associated with the interface/view we are drawing.
|
169
162
|
#
|
170
163
|
# @return (see Vedeu::Cursors#by_name)
|
171
164
|
def cursor
|
@@ -3,14 +3,15 @@ module Vedeu
|
|
3
3
|
# Store and retrieve {Vedeu::VirtualTerminal} objects.
|
4
4
|
#
|
5
5
|
# Each {Vedeu::VirtualTerminal} object is a copy of the current terminal
|
6
|
-
# including content but not as String objects but {Vedeu::Char}
|
7
|
-
# {Vedeu::Char} objects means that we can store the data
|
8
|
-
# displayed character, complete with its colour, position
|
6
|
+
# including content but not as String objects but {Vedeu::Views::Char}
|
7
|
+
# objects. Using {Vedeu::Views::Char} objects means that we can store the data
|
8
|
+
# used to make up the displayed character, complete with its colour, position
|
9
|
+
# and style.
|
9
10
|
#
|
10
|
-
# Once a {Vedeu::Char} has been converted to a String, it is tricky to
|
11
|
+
# Once a {Vedeu::Views::Char} has been converted to a String, it is tricky to
|
11
12
|
# separate the escape sequences and string data. By deferring this conversion
|
12
|
-
# we can display the {Vedeu::Char} in multiple ways (e.g. HTML) or in
|
13
|
-
# formats (e.g. JSON), and render/use that in an appropriate way.
|
13
|
+
# we can display the {Vedeu::Views::Char} in multiple ways (e.g. HTML) or in
|
14
|
+
# multiple formats (e.g. JSON), and render/use that in an appropriate way.
|
14
15
|
#
|
15
16
|
module VirtualBuffer
|
16
17
|
|
@@ -18,7 +19,7 @@ module Vedeu
|
|
18
19
|
|
19
20
|
# Fetch the oldest stored virtual buffer first.
|
20
21
|
#
|
21
|
-
# @return [Array<Array<Vedeu::Char>>|NilClass]
|
22
|
+
# @return [Array<Array<Vedeu::Views::Char>>|NilClass]
|
22
23
|
def retrieve
|
23
24
|
Vedeu.log(type: :drb, message: 'Retrieving output')
|
24
25
|
|
@@ -27,7 +28,7 @@ module Vedeu
|
|
27
28
|
|
28
29
|
# Store a new virtual buffer.
|
29
30
|
#
|
30
|
-
# @return [Array<Array<Vedeu::Char>>]
|
31
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
31
32
|
def store(data)
|
32
33
|
Vedeu.log(type: :drb, message: 'Storing output')
|
33
34
|
|
@@ -29,10 +29,10 @@ module Vedeu
|
|
29
29
|
@renderer = renderer
|
30
30
|
end
|
31
31
|
|
32
|
-
# Return a grid of {Vedeu::Char} objects defined by the height and
|
33
|
-
# this virtual terminal.
|
32
|
+
# Return a grid of {Vedeu::Views::Char} objects defined by the height and
|
33
|
+
# width of this virtual terminal.
|
34
34
|
#
|
35
|
-
# @return [Array<Array<Vedeu::Char>>]
|
35
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
36
36
|
def cells
|
37
37
|
@cells ||= new_virtual_terminal
|
38
38
|
end
|
@@ -46,7 +46,7 @@ module Vedeu
|
|
46
46
|
#
|
47
47
|
# @param y [Fixnum] The row/line coordinate.
|
48
48
|
# @param x [Fixnum] The column/character coordinate.
|
49
|
-
# @return [Vedeu::Char]
|
49
|
+
# @return [Vedeu::Views::Char]
|
50
50
|
def read(y, x)
|
51
51
|
cy, cx = Vedeu::PositionIndex[y, x]
|
52
52
|
|
@@ -58,11 +58,11 @@ module Vedeu
|
|
58
58
|
|
59
59
|
# Write a collection of cells to the virtual terminal.
|
60
60
|
#
|
61
|
-
# @param data [Array<Array<Vedeu::Char>>]
|
62
|
-
# @return [Array<Array<Vedeu::Char>>]
|
61
|
+
# @param data [Array<Array<Vedeu::Views::Char>>]
|
62
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
63
63
|
def output(data)
|
64
64
|
Array(data).flatten.each do |char|
|
65
|
-
write(char.y, char.x, char) if char.is_a?(Vedeu::Char)
|
65
|
+
write(char.y, char.x, char) if char.is_a?(Vedeu::Views::Char)
|
66
66
|
end
|
67
67
|
|
68
68
|
cells
|
@@ -77,7 +77,7 @@ module Vedeu
|
|
77
77
|
|
78
78
|
# Removes all content from the virtual terminal; effectively clearing it.
|
79
79
|
#
|
80
|
-
# @return [Array<Array<Vedeu::Char>>]
|
80
|
+
# @return [Array<Array<Vedeu::Views::Char>>]
|
81
81
|
def reset
|
82
82
|
@cells = new_virtual_terminal
|
83
83
|
end
|
@@ -91,8 +91,8 @@ module Vedeu
|
|
91
91
|
#
|
92
92
|
# @param y [Fixnum] The row/line coordinate.
|
93
93
|
# @param x [Fixnum] The column/character coordinate.
|
94
|
-
# @param data [Vedeu::Char]
|
95
|
-
# @return [Vedeu::Char]
|
94
|
+
# @param data [Vedeu::Views::Char]
|
95
|
+
# @return [Vedeu::Views::Char]
|
96
96
|
def write(y, x, data)
|
97
97
|
return false unless read(y, x).is_a?(Vedeu::Cell)
|
98
98
|
|
@@ -107,7 +107,7 @@ module Vedeu
|
|
107
107
|
# @param from [Array] An Array of rows, or an Array of cells.
|
108
108
|
# @param which [Fixnum] A Fixnum representing the index; the row number or
|
109
109
|
# the cell number for a row.
|
110
|
-
# @return [Array<Vedeu::Char>|Array]
|
110
|
+
# @return [Array<Vedeu::Views::Char>|Array]
|
111
111
|
def fetch(from, which)
|
112
112
|
from[which] || []
|
113
113
|
end
|