vedeu 0.8.2 → 0.8.3

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 (134) hide show
  1. checksums.yaml +4 -4
  2. data/examples/views/_interfaces.rb +127 -0
  3. data/examples/views/empty_template.rb +10 -0
  4. data/examples/views/expected/vedeu_full_screen.html +140 -0
  5. data/examples/views/expected/vedeu_full_screen.json +96050 -0
  6. data/examples/views/expected/vedeu_full_screen.out +1 -0
  7. data/examples/views/expected/vedeu_full_screen.txt +50 -0
  8. data/examples/views/expected/vedeu_line.html +140 -0
  9. data/examples/views/expected/vedeu_line.json +96050 -0
  10. data/examples/views/expected/vedeu_line.out +1 -0
  11. data/examples/views/expected/vedeu_line.txt +58 -0
  12. data/examples/views/expected/vedeu_lines.html +140 -0
  13. data/examples/views/expected/vedeu_lines.json +96050 -0
  14. data/examples/views/expected/{lines.out → vedeu_lines.out} +1 -1
  15. data/examples/views/expected/vedeu_lines_alignment.html +80 -0
  16. data/examples/views/expected/vedeu_lines_alignment.json +46370 -0
  17. data/examples/views/expected/vedeu_lines_alignment.out +1 -0
  18. data/examples/views/full_screen.rb +10 -0
  19. data/examples/views/line.rb +11 -106
  20. data/examples/views/lines.rb +8 -127
  21. data/examples/views/lines_alignment.rb +17 -125
  22. data/examples/views/runner.sh +65 -19
  23. data/lib/vedeu/borders/border.rb +6 -6
  24. data/lib/vedeu/borders/refresh.rb +4 -6
  25. data/lib/vedeu/buffers/buffer.rb +1 -1
  26. data/lib/vedeu/buffers/terminal.rb +4 -4
  27. data/lib/vedeu/buffers/view.rb +2 -2
  28. data/lib/vedeu/cells/all.rb +2 -2
  29. data/lib/vedeu/cells/border.rb +5 -0
  30. data/lib/vedeu/cells/borders/all.rb +2 -8
  31. data/lib/vedeu/cells/borders/edges/all.rb +6 -0
  32. data/lib/vedeu/cells/borders/{bottom_horizontal.rb → edges/bottom_horizontal.rb} +0 -0
  33. data/lib/vedeu/cells/borders/{left_vertical.rb → edges/left_vertical.rb} +0 -0
  34. data/lib/vedeu/cells/borders/{right_vertical.rb → edges/right_vertical.rb} +0 -0
  35. data/lib/vedeu/cells/borders/{top_horizontal.rb → edges/top_horizontal.rb} +0 -0
  36. data/lib/vedeu/cells/borders/horizontal.rb +5 -0
  37. data/lib/vedeu/cells/borders/vertical.rb +5 -0
  38. data/lib/vedeu/cells/borders/vertices/all.rb +6 -0
  39. data/lib/vedeu/cells/borders/{bottom_left.rb → vertices/bottom_left.rb} +5 -0
  40. data/lib/vedeu/cells/borders/{bottom_right.rb → vertices/bottom_right.rb} +5 -0
  41. data/lib/vedeu/cells/borders/{top_left.rb → vertices/top_left.rb} +5 -0
  42. data/lib/vedeu/cells/borders/{top_right.rb → vertices/top_right.rb} +5 -0
  43. data/lib/vedeu/cells/char.rb +16 -0
  44. data/lib/vedeu/cells/clear.rb +5 -0
  45. data/lib/vedeu/cells/cursor.rb +70 -0
  46. data/lib/vedeu/cells/empty.rb +24 -14
  47. data/lib/vedeu/cells/escape.rb +8 -7
  48. data/lib/vedeu/cells/support/all.rb +3 -0
  49. data/lib/vedeu/cells/support/html.rb +98 -0
  50. data/lib/vedeu/colours/background.rb +21 -1
  51. data/lib/vedeu/colours/colour.rb +10 -2
  52. data/lib/vedeu/colours/foreground.rb +21 -1
  53. data/lib/vedeu/colours/translator.rb +17 -24
  54. data/lib/vedeu/colours/validator.rb +9 -9
  55. data/lib/vedeu/configuration/api.rb +1 -1
  56. data/lib/vedeu/cursors/cursor.rb +5 -5
  57. data/lib/vedeu/dsl/elements.rb +22 -79
  58. data/lib/vedeu/dsl/string/text.rb +3 -3
  59. data/lib/vedeu/editor/cropper.rb +2 -2
  60. data/lib/vedeu/editor/cursor.rb +1 -1
  61. data/lib/vedeu/editor/document.rb +1 -1
  62. data/lib/vedeu/geometries/area/dimension.rb +1 -1
  63. data/lib/vedeu/geometries/position.rb +5 -2
  64. data/lib/vedeu/interfaces/clear.rb +5 -5
  65. data/lib/vedeu/models/row.rb +4 -3
  66. data/lib/vedeu/output/compressor.rb +7 -7
  67. data/lib/vedeu/output/output.rb +8 -13
  68. data/lib/vedeu/output/viewport.rb +1 -1
  69. data/lib/vedeu/presentation/background.rb +2 -2
  70. data/lib/vedeu/presentation/colour.rb +0 -4
  71. data/lib/vedeu/presentation/foreground.rb +2 -2
  72. data/lib/vedeu/presentation/style.rb +1 -1
  73. data/lib/vedeu/presentation/styles.rb +0 -3
  74. data/lib/vedeu/renderers/file.rb +10 -68
  75. data/lib/vedeu/renderers/html.rb +28 -96
  76. data/lib/vedeu/renderers/json.rb +15 -31
  77. data/lib/vedeu/renderers/options.rb +160 -14
  78. data/lib/vedeu/renderers/templates/html_renderer.vedeu +1 -0
  79. data/lib/vedeu/renderers/terminal.rb +16 -17
  80. data/lib/vedeu/renderers/text.rb +32 -41
  81. data/lib/vedeu/version.rb +1 -1
  82. data/lib/vedeu/views/all.rb +0 -2
  83. data/lib/vedeu/views/chars.rb +6 -3
  84. data/lib/vedeu/views/stream.rb +3 -2
  85. data/test/lib/vedeu/borders/caption_test.rb +17 -17
  86. data/test/lib/vedeu/borders/title_test.rb +12 -12
  87. data/test/lib/vedeu/cells/border_test.rb +6 -0
  88. data/test/lib/vedeu/cells/borders/{bottom_horizontal_test.rb → edges/bottom_horizontal_test.rb} +0 -0
  89. data/test/lib/vedeu/cells/borders/{left_vertical_test.rb → edges/left_vertical_test.rb} +0 -0
  90. data/test/lib/vedeu/cells/borders/{right_vertical_test.rb → edges/right_vertical_test.rb} +0 -0
  91. data/test/lib/vedeu/cells/borders/{top_horizontal_test.rb → edges/top_horizontal_test.rb} +0 -0
  92. data/test/lib/vedeu/cells/borders/horizontal_test.rb +6 -0
  93. data/test/lib/vedeu/cells/borders/vertical_test.rb +6 -0
  94. data/test/lib/vedeu/cells/borders/{bottom_left_test.rb → vertices/bottom_left_test.rb} +6 -0
  95. data/test/lib/vedeu/cells/borders/{bottom_right_test.rb → vertices/bottom_right_test.rb} +6 -0
  96. data/test/lib/vedeu/cells/borders/{top_left_test.rb → vertices/top_left_test.rb} +6 -0
  97. data/test/lib/vedeu/cells/borders/{top_right_test.rb → vertices/top_right_test.rb} +6 -0
  98. data/test/lib/vedeu/cells/char_test.rb +18 -0
  99. data/test/lib/vedeu/cells/clear_test.rb +6 -0
  100. data/test/lib/vedeu/cells/cursor_test.rb +113 -0
  101. data/test/lib/vedeu/cells/empty_test.rb +100 -7
  102. data/test/lib/vedeu/cells/escape_test.rb +29 -13
  103. data/test/lib/vedeu/cells/support/html_test.rb +100 -0
  104. data/test/lib/vedeu/colours/background_test.rb +35 -3
  105. data/test/lib/vedeu/colours/colour_test.rb +66 -0
  106. data/test/lib/vedeu/colours/foreground_test.rb +35 -3
  107. data/test/lib/vedeu/colours/translator_test.rb +0 -34
  108. data/test/lib/vedeu/colours/validator_test.rb +84 -6
  109. data/test/lib/vedeu/cursors/cursor_test.rb +4 -4
  110. data/test/lib/vedeu/cursors/refresh_test.rb +4 -1
  111. data/test/lib/vedeu/dsl/string/text_test.rb +36 -36
  112. data/test/lib/vedeu/editor/cropper_test.rb +15 -15
  113. data/test/lib/vedeu/geometries/position_test.rb +14 -1
  114. data/test/lib/vedeu/models/page_test.rb +10 -10
  115. data/test/lib/vedeu/models/row_test.rb +7 -7
  116. data/test/lib/vedeu/output/compressor_test.rb +63 -50
  117. data/test/lib/vedeu/renderers/file_test.rb +64 -35
  118. data/test/lib/vedeu/renderers/html_test.rb +15 -12
  119. data/test/lib/vedeu/renderers/json_test.rb +79 -56
  120. data/test/lib/vedeu/renderers/options_test.rb +74 -26
  121. data/test/lib/vedeu/renderers/terminal_test.rb +34 -4
  122. data/test/lib/vedeu/renderers/text_test.rb +35 -3
  123. data/test/lib/vedeu/views/chars_test.rb +6 -0
  124. metadata +50 -41
  125. data/examples/views/expected/line.out +0 -1
  126. data/examples/views/expected/lines_alignment.out +0 -1
  127. data/lib/vedeu/cells/html.rb +0 -21
  128. data/lib/vedeu/cells/json.rb +0 -21
  129. data/lib/vedeu/views/char.rb +0 -180
  130. data/lib/vedeu/views/html_char.rb +0 -133
  131. data/test/lib/vedeu/cells/html_test.rb +0 -15
  132. data/test/lib/vedeu/cells/json_test.rb +0 -15
  133. data/test/lib/vedeu/views/char_test.rb +0 -283
  134. data/test/lib/vedeu/views/html_char_test.rb +0 -125
@@ -162,7 +162,7 @@ module Vedeu
162
162
 
163
163
  # Renders the cursor.
164
164
  #
165
- # @return [Array<Vedeu::Cells::Escape>]
165
+ # @return [Array<Vedeu::Cells::Cursor>]
166
166
  def render
167
167
  Vedeu.render_output(escape_sequence)
168
168
  end
@@ -196,7 +196,7 @@ module Vedeu
196
196
  # Vedeu.hide_cursor(Vedeu.focus)
197
197
  # Vedeu.hide_cursor
198
198
  #
199
- # @return [Vedeu::Cells::Escape]
199
+ # @return [Vedeu::Cells::Cursor]
200
200
  def hide
201
201
  super
202
202
 
@@ -233,7 +233,7 @@ module Vedeu
233
233
  # Vedeu.show_cursor(Vedeu.focus)
234
234
  # Vedeu.show_cursor
235
235
  #
236
- # @return [Vedeu::Cells::Escape]
236
+ # @return [Vedeu::Cells::Cursor]
237
237
  def show
238
238
  super
239
239
 
@@ -290,9 +290,9 @@ module Vedeu
290
290
  }
291
291
  end
292
292
 
293
- # @return [Vedeu::Cells::Escape]
293
+ # @return [Vedeu::Cells::Cursor]
294
294
  def escape_sequence
295
- Vedeu::Cells::Escape.new(position: position, value: visibility)
295
+ Vedeu::Cells::Cursor.new(position: position, value: visibility)
296
296
  end
297
297
 
298
298
  # @return [Hash<Symbol => Fixnum>]
@@ -69,9 +69,28 @@ module Vedeu
69
69
 
70
70
  attrs = Vedeu::DSL::Attributes.build(self, model, nil, {}, &block)
71
71
 
72
- l = Vedeu::Views::View.build(attrs, &block)
73
- model.value = l.value
72
+ if view_model?
73
+ if model.lines?
74
+ l = Vedeu::Views::Line.build(attrs, &block)
75
+ model.add(l)
76
+
77
+ else
78
+ l = Vedeu::Views::View.build(attrs, &block)
79
+ model.value = l.value
80
+
81
+ end
82
+
83
+ elsif line_model?
84
+ l = Vedeu::Views::Line.build(attrs, &block)
85
+ model.value = l.value
86
+
87
+ else
88
+ l = Vedeu::Views::View.build(attrs, &block)
89
+ model.value = l.value
90
+
91
+ end
74
92
  end
93
+ alias_method :streams, :lines
75
94
 
76
95
  # @todo This documentation needs editing. (GL: 2015-12-17)
77
96
  #
@@ -121,83 +140,7 @@ module Vedeu
121
140
 
122
141
  end
123
142
  end
124
-
125
- # @todo This documentation needs editing. (GL: 2015-12-17)
126
- #
127
- # Define multiple streams (a stream is a subset of a line).
128
- # Uses {Vedeu::DSL::Stream} for all directives within the
129
- # required block.
130
- #
131
- # Vedeu.renders do
132
- # view :my_interface do
133
- # lines do
134
- # line do
135
- # streams do
136
- # # ... some code
137
- # end
138
- #
139
- # stream do
140
- # # ... some code
141
- # end
142
- # end
143
- # end
144
- # end
145
- # end
146
- #
147
- # @param block [Proc]
148
- # @macro raise_requires_block
149
- # @raise [Vedeu::Error::Fatal]
150
- # @return [void]
151
- def streams(&block)
152
- requires_block!(&block)
153
- requires_model!
154
-
155
- attrs = Vedeu::DSL::Attributes.build(self, model, nil, {}, &block)
156
-
157
- l = Vedeu::Views::Line.build(attrs, &block)
158
-
159
- if view_model?
160
- model.add(l)
161
-
162
- elsif line_model?
163
- model.value = l.value
164
-
165
- end
166
- end
167
-
168
- # @todo This documentation needs editing. (GL: 2015-12-17)
169
- #
170
- # @param value [String]
171
- # @param opts [Hash]
172
- # @option opts ... [void]
173
- # @param block [Proc]
174
- # @raise [Vedeu::Error::Fatal]
175
- # @return [void]
176
- def stream(value = '', opts = {}, &block)
177
- requires_model!
178
-
179
- attrs = Vedeu::DSL::Attributes.build(self, model, value, opts, &block)
180
-
181
- l = if block_given?
182
- Vedeu::Views::Line.build(attrs, &block)
183
-
184
- else
185
- s = Vedeu::Views::Stream.new(attrs)
186
- ss = Vedeu::Views::Streams.coerce([s])
187
-
188
- Vedeu::Views::Line.new(attrs.merge!(value: ss))
189
-
190
- end
191
-
192
- if view_model? || line_model?
193
- model.add(l)
194
-
195
- else
196
- fail Vedeu::Error::Fatal,
197
- "Cannot add line to '#{model.class.name}' model."
198
-
199
- end
200
- end
143
+ alias_method :stream, :line
201
144
 
202
145
  # @todo This documentation needs editing. (GL: 2015-12-17)
203
146
  #
@@ -21,7 +21,7 @@ module Vedeu
21
21
  @options = options || {}
22
22
  end
23
23
 
24
- # @return [Array<Vedeu::Views::Char>]
24
+ # @return [Array<Vedeu::Cells::Char>]
25
25
  def chars
26
26
  return [] unless present?(value) && string?(value)
27
27
 
@@ -63,9 +63,9 @@ module Vedeu
63
63
  }
64
64
  end
65
65
 
66
- # @return [Array<Vedeu::Views::Char>]
66
+ # @return [Array<Vedeu::Cells::Char>]
67
67
  def collection
68
- text.chars.map { |char| Vedeu::Views::Char.new(attributes(char)) }
68
+ text.chars.map { |char| Vedeu::Cells::Char.new(attributes(char)) }
69
69
  end
70
70
 
71
71
  # @return [NilClass|String|Symbol]
@@ -36,7 +36,7 @@ module Vedeu
36
36
  @oy = oy
37
37
  end
38
38
 
39
- # Returns the visible lines as a sequence of {Vedeu::View::Char}
39
+ # Returns the visible lines as a sequence of {Vedeu::Cells::Char}
40
40
  # objects.
41
41
  #
42
42
  # @return [Array<void>]
@@ -45,7 +45,7 @@ module Vedeu
45
45
 
46
46
  visible.each_with_index do |line, iy|
47
47
  line.chars.each_with_index do |char, ix|
48
- out << Vedeu::Views::Char.new(name: name,
48
+ out << Vedeu::Cells::Char.new(name: name,
49
49
  position: [(by + iy), (bx + ix)],
50
50
  value: char)
51
51
  end
@@ -91,7 +91,7 @@ module Vedeu
91
91
  # document being edited.
92
92
  #
93
93
  # @return [Vedeu::Editor::Cursor]
94
- # @todo GL 2015-10-02 Should ox/oy be 0; or set to @ox/@oy?
94
+ # @todo Should ox/oy be 0; or set to @ox/@oy? (GL: 2015-10-02)
95
95
  def refresh
96
96
  Vedeu::Cursors::Cursor.store(name: name,
97
97
  x: real_x,
@@ -257,7 +257,7 @@ module Vedeu
257
257
  # representation of the full document depending on the size of
258
258
  # the interface.
259
259
  #
260
- # @return [Array<Vedeu::Views::Char>]
260
+ # @return [Array<Vedeu::Cells::Char>]
261
261
  def output
262
262
  Vedeu::Editor::Cropper.new(lines: lines,
263
263
  name: name,
@@ -115,7 +115,7 @@ module Vedeu
115
115
  # length from the values provided.
116
116
  #
117
117
  # @return [Boolean]
118
- # @todo GL 2015-10-16 Investigate: should this be && or ||.
118
+ # @todo Investigate: should this be && or ||. (GL: 2015-10-16)
119
119
  def length?
120
120
  default && length
121
121
  end
@@ -103,10 +103,13 @@ module Vedeu
103
103
  # @return [Hash<Symbol => Fixnum|NilClass>]
104
104
  def to_h
105
105
  {
106
- y: y,
107
- x: x,
106
+ position: {
107
+ y: y,
108
+ x: x,
109
+ }
108
110
  }
109
111
  end
112
+ alias_method :to_hash, :to_h
110
113
 
111
114
  # Return the escape sequence required to position the cursor at
112
115
  # a particular point on the screen. When passed a block, will do
@@ -18,7 +18,7 @@ module Vedeu
18
18
  # Vedeu.trigger(:_clear_view_, name)
19
19
  # Vedeu.clear_by_name(name)
20
20
  #
21
- # @return [Array<Array<Vedeu::Views::Char>>]
21
+ # @return [Array<Array<Vedeu::Cells::Char>>]
22
22
  # @see #initialize
23
23
  def render(name = Vedeu.focus)
24
24
  name || Vedeu.focus
@@ -34,7 +34,7 @@ module Vedeu
34
34
  # Vedeu.trigger(:_clear_view_content_, name)
35
35
  # Vedeu.clear_content_by_name(name)
36
36
  #
37
- # @return [Array<Array<Vedeu::Views::Char>>]
37
+ # @return [Array<Array<Vedeu::Cells::Char>>]
38
38
  # @see #initialize
39
39
  def clear_content_by_name(name = Vedeu.focus)
40
40
  name || Vedeu.focus
@@ -55,14 +55,14 @@ module Vedeu
55
55
  # to the terminal using a faster mechanism. The virtual buffer
56
56
  # will still be updated. This improves the refresh time for
57
57
  # Vedeu as we will not be building a grid of
58
- # {Vedeu::Views::Char} objects.
58
+ # {Vedeu::Cells::Char} objects.
59
59
  # @return [Vedeu::Interfaces::Clear]
60
60
  def initialize(name, options = {})
61
61
  @name = present?(name) ? name : Vedeu.focus
62
62
  @options = options
63
63
  end
64
64
 
65
- # @return [Array<Array<Vedeu::Views::Char>>]
65
+ # @return [Array<Array<Vedeu::Cells::Char>>]
66
66
  def render
67
67
  if direct?
68
68
  Vedeu.direct_write(optimised_output)
@@ -157,7 +157,7 @@ module Vedeu
157
157
  # defined, then starting write space characters over the area
158
158
  # which the interface occupies.
159
159
  #
160
- # @return [Array<Array<Vedeu::Views::Char>>]
160
+ # @return [Array<Array<Vedeu::Cells::Char>>]
161
161
  def output
162
162
  Vedeu.timer("Clearing #{clearing}: '#{name}'") do
163
163
  @clear ||= Array.new(height) do |iy|
@@ -9,6 +9,7 @@ module Vedeu
9
9
  class Row
10
10
 
11
11
  include Enumerable
12
+ include Vedeu::Common
12
13
 
13
14
  # @!attribute [r] cells
14
15
  # @return [Array<NilClass|void>]
@@ -43,7 +44,7 @@ module Vedeu
43
44
  # @param index [Fixnum]
44
45
  # @return [NilClass|void]
45
46
  def cell(index)
46
- return nil if index.nil?
47
+ return nil if index.nil? || empty?
47
48
 
48
49
  cells[index]
49
50
  end
@@ -79,9 +80,9 @@ module Vedeu
79
80
  # reset colour and style information to prevent colour bleed on
80
81
  # the next line.
81
82
  #
82
- # @return [Vedeu::Views::Char]
83
+ # @return [Vedeu::Cells::Escape]
83
84
  def reset_character
84
- Vedeu::Views::Char.new(value: Vedeu.esc.reset)
85
+ Vedeu::Cells::Escape.new(value: Vedeu.esc.reset)
85
86
  end
86
87
 
87
88
  # @return [Fixnum]
@@ -4,7 +4,7 @@ module Vedeu
4
4
 
5
5
  module Output
6
6
 
7
- # During the conversion of a Vedeu::Views::Char object into a
7
+ # During the conversion of a Vedeu::Cells::Char object into a
8
8
  # string of escape sequences, this class removes multiple
9
9
  # occurences of the same escape sequence, resulting in a smaller
10
10
  # payload being sent to the renderer.
@@ -24,7 +24,7 @@ module Vedeu
24
24
 
25
25
  # Returns a new instance of Vedeu::Output::Compressor.
26
26
  #
27
- # @param output [Array<Array<Vedeu::Views::Char>>]
27
+ # @param output [Array<Array<Vedeu::Cells::Char>>]
28
28
  # @param options [Hash]
29
29
  # @option options compression [Boolean]
30
30
  # @return [Vedeu::Output::Compressor]
@@ -40,7 +40,7 @@ module Vedeu
40
40
  # - Takes approximately ~25ms for 2100 chars. (2015-07-25)
41
41
  # @return [String]
42
42
  def render
43
- return cached if compress?
43
+ return cached if compression?
44
44
 
45
45
  uncompress
46
46
  end
@@ -48,7 +48,7 @@ module Vedeu
48
48
  protected
49
49
 
50
50
  # @!attribute [r] output
51
- # @return [Array<Array<Vedeu::Views::Char>>]
51
+ # @return [Array<Array<Vedeu::Cells::Char>>]
52
52
  attr_reader :output
53
53
 
54
54
  private
@@ -117,7 +117,7 @@ module Vedeu
117
117
  # coordinate has changed; i.e. we are on the same line, just
118
118
  # advancing a character.
119
119
  #
120
- # @param char [Vedeu::Views::Char]
120
+ # @param char [Vedeu::Cells::Char]
121
121
  # @return [String]
122
122
  def position_for(char)
123
123
  return '' unless char.position
@@ -131,7 +131,7 @@ module Vedeu
131
131
  # character which has the same colours as the last character
132
132
  # output.
133
133
  #
134
- # @param char [Vedeu::Views::Char]
134
+ # @param char [Vedeu::Cells::Char]
135
135
  # @return [String]
136
136
  def colour_for(char)
137
137
  return '' if char.colour == @colour
@@ -144,7 +144,7 @@ module Vedeu
144
144
  # character which has the same style(s) as the last character
145
145
  # output.
146
146
  #
147
- # @param char [Vedeu::Views::Char]
147
+ # @param char [Vedeu::Cells::Char]
148
148
  # @return [String]
149
149
  def style_for(char)
150
150
  return '' if char.style == @style
@@ -11,8 +11,7 @@ module Vedeu
11
11
  #
12
12
  class Output
13
13
 
14
- # @param output [Array<Array<Vedeu::Views::Char>>|
15
- # NilClass|Vedeu::Cells::Escape]
14
+ # @param output (see #output)
16
15
  # @return [Array]
17
16
  def self.buffer_update(output)
18
17
  return nil if output.nil?
@@ -20,8 +19,7 @@ module Vedeu
20
19
  new(output).buffer_update
21
20
  end
22
21
 
23
- # @param output [Array<Array<Vedeu::Views::Char>>|
24
- # NilClass|Vedeu::Cells::Escape]
22
+ # @param output (see #output)
25
23
  # @return [Array]
26
24
  def self.buffer_write(output)
27
25
  return nil if output.nil?
@@ -29,8 +27,7 @@ module Vedeu
29
27
  new(output).buffer_write
30
28
  end
31
29
 
32
- # @param output [Array<Array<Vedeu::Views::Char>>|
33
- # NilClass|Vedeu::Cells::Escape]
30
+ # @param output (see #output)
34
31
  # @return [Array<String>]
35
32
  def self.direct_write(output)
36
33
  return nil if output.nil?
@@ -40,8 +37,7 @@ module Vedeu
40
37
 
41
38
  # Writes output to the defined renderers.
42
39
  #
43
- # @param output [Array<Array<Vedeu::Views::Char>>|
44
- # NilClass|Vedeu::Cells::Escape]
40
+ # @param output (see #output)
45
41
  # @return [Array|NilClass|String]
46
42
  def self.render_output(output)
47
43
  return nil if output.nil?
@@ -51,8 +47,7 @@ module Vedeu
51
47
 
52
48
  # Return a new instance of Vedeu::Output::Output.
53
49
  #
54
- # @param output [Array<Array<Vedeu::Views::Char>>|
55
- # NilClass|Vedeu::Cells::Escape]
50
+ # @param output (see #output)
56
51
  # @return [Vedeu::Output::Output]
57
52
  def initialize(output)
58
53
  @output = output
@@ -94,15 +89,15 @@ module Vedeu
94
89
  protected
95
90
 
96
91
  # @!attribute [r] output
97
- # @return [Array<Array<Vedeu::Views::Char>>|
98
- # NilClass|Vedeu::Cells::Escape]
92
+ # @return [Array<Array<Vedeu::Cells::Char>>|
93
+ # NilClass|Vedeu::Cells::Escape|Vedeu::Cells::Cursor]
99
94
  attr_reader :output
100
95
 
101
96
  private
102
97
 
103
98
  # @return [Boolean]
104
99
  def escape_sequence?
105
- output.is_a?(Vedeu::Cells::Escape)
100
+ output.is_a?(Vedeu::Cells::Escape) || output.is_a?(Vedeu::Cells::Cursor)
106
101
  end
107
102
 
108
103
  end # Output
@@ -67,7 +67,7 @@ module Vedeu
67
67
 
68
68
  private
69
69
 
70
- # @return [Array<Array<Vedeu::Views::Char>>]
70
+ # @return [Array<Array<Vedeu::Cells::Char>>]
71
71
  def output
72
72
  Vedeu.timer("Rendering content: '#{name}'") do
73
73
  out = []