vedeu 0.6.61 → 0.6.62

Sign up to get free protection for your applications and to get access to all the features.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/benchmarks/array_vs_range.rb +1 -1
  3. data/docs/events/drb.md +2 -2
  4. data/docs/events/visibility.md +1 -1
  5. data/lib/vedeu/buffers/all.rb +1 -0
  6. data/lib/vedeu/buffers/empty.rb +2 -2
  7. data/lib/vedeu/{terminal/buffer.rb → buffers/terminal.rb} +12 -16
  8. data/lib/vedeu/cursors/cursor.rb +4 -8
  9. data/lib/vedeu/cursors/refresh.rb +5 -0
  10. data/lib/vedeu/editor/all.rb +1 -0
  11. data/lib/vedeu/editor/collection.rb +26 -0
  12. data/lib/vedeu/editor/document.rb +0 -8
  13. data/lib/vedeu/editor/line.rb +17 -47
  14. data/lib/vedeu/editor/lines.rb +22 -51
  15. data/lib/vedeu/geometries/geometry.rb +0 -6
  16. data/lib/vedeu/groups/group.rb +0 -6
  17. data/lib/vedeu/input/capture.rb +1 -1
  18. data/lib/vedeu/interfaces/clear.rb +1 -1
  19. data/lib/vedeu/logging/log.rb +5 -2
  20. data/lib/vedeu/models/focus.rb +4 -13
  21. data/lib/vedeu/output/compressor.rb +8 -4
  22. data/lib/vedeu/output/output.rb +3 -3
  23. data/lib/vedeu/output/renderers/all.rb +2 -2
  24. data/lib/vedeu/output/renderers/html.rb +1 -1
  25. data/lib/vedeu/output/renderers/json.rb +1 -1
  26. data/lib/vedeu/repositories/all.rb +1 -0
  27. data/lib/vedeu/repositories/assemblage.rb +57 -0
  28. data/lib/vedeu/repositories/collection.rb +1 -40
  29. data/lib/vedeu/repositories/model.rb +17 -0
  30. data/lib/vedeu/runtime/launcher.rb +5 -8
  31. data/lib/vedeu/terminal/all.rb +0 -1
  32. data/lib/vedeu/version.rb +1 -1
  33. data/test/lib/vedeu/{terminal/buffer_test.rb → buffers/terminal_test.rb} +24 -50
  34. data/test/lib/vedeu/cursors/cursor_test.rb +0 -6
  35. data/test/lib/vedeu/editor/collection_test.rb +38 -0
  36. data/test/lib/vedeu/editor/document_test.rb +0 -16
  37. data/test/lib/vedeu/editor/line_test.rb +17 -75
  38. data/test/lib/vedeu/editor/lines_test.rb +21 -88
  39. data/test/lib/vedeu/geometries/geometry_test.rb +0 -6
  40. data/test/lib/vedeu/groups/group_test.rb +0 -6
  41. data/test/lib/vedeu/input/mouse_test.rb +1 -1
  42. data/test/lib/vedeu/logging/log_test.rb +3 -3
  43. data/test/lib/vedeu/models/focus_test.rb +62 -56
  44. data/test/lib/vedeu/output/output_test.rb +2 -2
  45. data/test/lib/vedeu/output/renderers/html_test.rb +2 -2
  46. data/test/lib/vedeu/output/renderers/json_test.rb +1 -1
  47. data/test/lib/vedeu/repositories/assemblage_test.rb +96 -0
  48. data/test/lib/vedeu/repositories/collection_test.rb +0 -54
  49. data/test/lib/vedeu/repositories/model_test.rb +15 -0
  50. data/vedeu.gemspec +1 -1
  51. metadata +13 -7
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: caa790910d980d060680517416aab7206faea84f
4
- data.tar.gz: b8ce3a4ae71d898bbd1c99da090b3d66976b0bb9
3
+ metadata.gz: 161b51ae0f6dddf89fe026875fa21b5bcbef0b63
4
+ data.tar.gz: f724c3d3b35f703f2ba58800123628837fd7a8fa
5
5
  SHA512:
6
- metadata.gz: 97f27f54135a8415d01fc5c2b3f65d1652ba3b057c63fc5f9f0baf67ec07f7560340b652b40fbeea864015e0423eac7d4b877c0259f7451fc5316965987e2dcb
7
- data.tar.gz: f895269aef915276b769640d7f77e02cffb79f0ec920dc50a173967c737d80c2866bade305ff064e82465264caddcebec48c0481ed80ce4391edc045396af07c
6
+ metadata.gz: 66121dcb5d8c27bc23a7ec695a2eecf360dfe0946f7f0cb3cf85eb39682f6a0a683d14328987e3858807a8a3fbf75c3a440565ad0aa39c80d76eea9eea263396
7
+ data.tar.gz: c21adb2837c843bbb19a8b60ced2f19fa76835417ed86a15f769153c9e212f5a8b98133a5cf47446a4ab1a212971bff37321f360c2697f7849f258abece2654b
@@ -2,7 +2,7 @@
2
2
 
3
3
  # To test the suitability of using a range to determine a valid
4
4
  # coordinate instead of the current array method as used in
5
- # Vedeu::Terminal::Buffer#within_terminal_boundary?
5
+ # Vedeu::Buffers::Terminal#within_terminal_boundary?
6
6
  #
7
7
  # vedeu/benchmarks:spike/benchmarking$ ./array_vs_range.rb
8
8
  # Calculating -------------------------------------
data/docs/events/drb.md CHANGED
@@ -11,10 +11,10 @@ Note: See {Vedeu::Distributed::Server#input} for parameter details.
11
11
  Vedeu.trigger(:_drb_input_, data, type)
12
12
 
13
13
  ### `:\_drb_retrieve_output\_`
14
- See {Vedeu::Terminal::Buffer#output}
14
+ See {Vedeu::Buffers::Terminal#output}
15
15
 
16
16
  ### `:\_drb_store_output\_`
17
- See {Vedeu::Terminal::Buffer#write}
17
+ See {Vedeu::Buffers::Terminal#write}
18
18
 
19
19
  ### `:\_drb_restart\_`
20
20
  Use the DRb server to request the client application to restart.
@@ -5,7 +5,7 @@
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
7
  ### `:\_clear\_`
8
- See {Vedeu::Terminal::Buffer#clear}
8
+ See {Vedeu::Buffers::Terminal#clear}
9
9
 
10
10
  ### `:\_clear_group\_`
11
11
  Clears the spaces occupied by the interfaces belonging to the named
@@ -24,3 +24,4 @@ require 'vedeu/buffers/buffer'
24
24
  require 'vedeu/buffers/null'
25
25
  require 'vedeu/buffers/repository'
26
26
  require 'vedeu/buffers/refresh'
27
+ require 'vedeu/buffers/terminal'
@@ -17,9 +17,9 @@ module Vedeu
17
17
  # @return [Array<Array<Vedeu::Models::Cell>>]
18
18
  def buffer
19
19
  Array.new(height) do |y|
20
- unless y == 0
20
+ if y > 0
21
21
  Array.new(width) do |x|
22
- Vedeu::Models::Cell.new(name: name, position: [y, x]) unless x == 0
22
+ Vedeu::Models::Cell.new(name: name, position: [y, x]) if x > 0
23
23
  end.compact
24
24
  end
25
25
  end.compact
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
- module Terminal
3
+ module Buffers
4
4
 
5
5
  # All output will be written to this singleton, and #render will
6
6
  # be called at the end of each run of {Vedeu::MainLoop};
@@ -11,7 +11,7 @@ module Vedeu
11
11
  # points and only at the end of each run of {Vedeu::MainLoop} will
12
12
  # it be actually output 'somewhere'.
13
13
  #
14
- module Buffer
14
+ module Terminal
15
15
 
16
16
  extend self
17
17
 
@@ -66,8 +66,6 @@ module Vedeu
66
66
  # @return [Array<Array<Vedeu::Views::Char>>]
67
67
  def update(value_or_values)
68
68
  buffer.update(value_or_values)
69
-
70
- self
71
69
  end
72
70
 
73
71
  # Write a collection of cells to the virtual terminal, will
@@ -79,14 +77,12 @@ module Vedeu
79
77
  # @example
80
78
  # Vedeu.trigger(:_drb_store_output_, value_or_values)
81
79
  #
82
- # @param value [Array<Array<Vedeu::Views::Char>>]
80
+ # @param value_or_values [Array<Array<Vedeu::Views::Char>>]
83
81
  # @return [Array<Array<Vedeu::Views::Char>>]
84
82
  def write(value_or_values)
85
83
  buffer.update(value_or_values)
86
84
 
87
85
  refresh
88
-
89
- self
90
86
  end
91
87
 
92
88
  private
@@ -100,26 +96,26 @@ module Vedeu
100
96
  end
101
97
  alias_method :cells, :buffer
102
98
 
103
- end # Buffer
99
+ end # Terminal
104
100
 
105
- end # Terminal
101
+ end # Buffers
106
102
 
107
103
  # @!method clear
108
- # @see Vedeu::Terminal::Buffer#clear
109
- def_delegators Vedeu::Terminal::Buffer,
104
+ # @see Vedeu::Buffers::Terminal#clear
105
+ def_delegators Vedeu::Buffers::Terminal,
110
106
  :clear,
111
107
  :refresh
112
108
 
113
109
  # :nocov:
114
110
 
115
- # @see Vedeu::Terminal::Buffer#clear
111
+ # @see Vedeu::Buffers::Terminal#clear
116
112
  Vedeu.bind(:_clear_) { Vedeu.clear }
117
113
 
118
- # @see Vedeu::Terminal::Buffer#output
119
- Vedeu.bind(:_drb_retrieve_output_) { Vedeu::Terminal::Buffer.output }
114
+ # @see Vedeu::Buffers::Terminal#output
115
+ Vedeu.bind(:_drb_retrieve_output_) { Vedeu::Buffers::Terminal.output }
120
116
 
121
- # @see Vedeu::Terminal::Buffer#write
122
- Vedeu.bind(:_drb_store_output_) { |data| Vedeu::Terminal::Buffer.write(data) }
117
+ # @see Vedeu::Buffers::Terminal#write
118
+ Vedeu.bind(:_drb_store_output_) { |data| Vedeu::Buffers::Terminal.write(data) }
123
119
 
124
120
  # :nocov:
125
121
 
@@ -39,12 +39,6 @@ module Vedeu
39
39
  # @return [Fixnum]
40
40
  attr_writer :y
41
41
 
42
- # @param (see #initialize)
43
- # @return [Vedeu::Cursors::Cursor]
44
- def self.store(attributes = {})
45
- new(attributes).store
46
- end
47
-
48
42
  # Returns a new instance of Vedeu::Cursors::Cursor.
49
43
  #
50
44
  # @param attributes [Hash<Symbol => Boolean|Fixnum|String|
@@ -162,8 +156,6 @@ module Vedeu
162
156
  #
163
157
  # @return [Array<Vedeu::Models::Escape>]
164
158
  def render
165
- Vedeu.log(type: :output, message: "Refreshing cursor: '#{name}'".freeze)
166
-
167
159
  Vedeu.render_output(escape_sequence)
168
160
  end
169
161
 
@@ -199,6 +191,8 @@ module Vedeu
199
191
  def hide
200
192
  super
201
193
 
194
+ Vedeu.log(type: :output, message: "Hiding cursor: '#{name}'".freeze)
195
+
202
196
  render
203
197
  end
204
198
 
@@ -234,6 +228,8 @@ module Vedeu
234
228
  def show
235
229
  super
236
230
 
231
+ Vedeu.log(type: :output, message: "Showing cursor: '#{name}'".freeze)
232
+
237
233
  render
238
234
  end
239
235
 
@@ -44,6 +44,11 @@ module Vedeu
44
44
  def by_name
45
45
  refresh_view if refresh_view?
46
46
 
47
+ Vedeu.log(type: :output,
48
+ message: "Refreshing cursor: '#{name}' (x:#{cursor.x}, " \
49
+ "y:#{cursor.y}, ox:#{cursor.ox}, oy:#{cursor.oy}, " \
50
+ "visible:#{cursor.visible})".freeze)
51
+
47
52
  cursor.render
48
53
  end
49
54
 
@@ -8,6 +8,7 @@ module Vedeu
8
8
 
9
9
  end # Vedeu
10
10
 
11
+ require 'vedeu/editor/collection'
11
12
  require 'vedeu/editor/cropper'
12
13
  require 'vedeu/editor/delete'
13
14
  require 'vedeu/editor/editor'
@@ -0,0 +1,26 @@
1
+ module Vedeu
2
+
3
+ module Editor
4
+
5
+ # Used by {Vedeu::Editor::Lines} and {Vedeu::Editor::Line} to
6
+ # fetch an item from the respective collection.
7
+ #
8
+ # @api private
9
+ #
10
+ module Collection
11
+
12
+ include Vedeu::Repositories::Assemblage
13
+
14
+ # Fetches an item from a collection.
15
+ #
16
+ # @param index [Fixnum]
17
+ # @return [String]
18
+ def by_index(index)
19
+ Vedeu::Editor::Item.by_index(collection, index)
20
+ end
21
+
22
+ end # Collection
23
+
24
+ end # Editor
25
+
26
+ end # Vedeu
@@ -31,14 +31,6 @@ module Vedeu
31
31
  # @return [String|Symbol]
32
32
  attr_accessor :name
33
33
 
34
- # Store an instance of this class with its repository.
35
- #
36
- # @param (see #initialize)
37
- # @return (see #initialize)
38
- def self.store(attributes = {})
39
- new(attributes).store
40
- end
41
-
42
34
  # Returns the document as a string with line breaks if there is
43
35
  # more than one line.
44
36
  #
@@ -8,37 +8,31 @@ module Vedeu
8
8
  #
9
9
  class Line
10
10
 
11
- # @!attribute [rw] line
11
+ include Vedeu::Editor::Collection
12
+
13
+ # @!attribute [rw] collection
12
14
  # @return [String]
13
- attr_accessor :line
14
- alias_method :to_s, :line
15
+ attr_accessor :collection
16
+ alias_method :line, :collection
17
+ alias_method :to_s, :collection
15
18
 
16
19
  # Coerce a line into a new instance of Vedeu::Editor::Line.
17
20
  #
18
- # @param line [String|Vedeu::Editor::Line]
21
+ # @param collection [String|Vedeu::Editor::Line]
19
22
  # @return (see #initialize)
20
- def self.coerce(line)
21
- return line if line.is_a?(self)
22
- return new(line) if line.is_a?(String)
23
+ def self.coerce(collection)
24
+ return collection if collection.is_a?(self)
25
+ return new(collection) if collection.is_a?(String)
23
26
 
24
27
  new
25
28
  end
26
29
 
27
30
  # Returns a new instance of Vedeu::Editor::Line.
28
31
  #
29
- # @param line [String|NilClass]
32
+ # @param collection [String|NilClass]
30
33
  # @return [Vedeu::Editor::Line]
31
- def initialize(line = nil)
32
- @line = line || ''
33
- end
34
-
35
- # Return a character or collection of characters (if index is a
36
- # Range).
37
- #
38
- # @param index [Fixnum|Range]
39
- # @return [String]
40
- def [](index)
41
- line[index]
34
+ def initialize(collection = nil)
35
+ @collection = collection || ''
42
36
  end
43
37
 
44
38
  # Return the character at the given index.
@@ -46,10 +40,10 @@ module Vedeu
46
40
  # @param index [Fixnum|NilClass]
47
41
  # @return [String|NilClass]
48
42
  def character(index = nil)
49
- return '' if line && line.empty?
50
- return line[-1] unless index
43
+ return '' if collection && collection.empty?
44
+ return collection[-1] unless index
51
45
 
52
- Vedeu::Editor::Item.by_index(line, index)
46
+ by_index(index)
53
47
  end
54
48
 
55
49
  # Delete the character from the line positioned at the given
@@ -62,23 +56,6 @@ module Vedeu
62
56
  .from(line, index, size))
63
57
  end
64
58
 
65
- # Returns a boolean indicating whether there are characters on
66
- # this line.
67
- #
68
- # @return [Boolean]
69
- def empty?
70
- line.empty?
71
- end
72
-
73
- # An object is equal when its values are the same.
74
- #
75
- # @param other [Vedeu::Editor::Line]
76
- # @return [Boolean]
77
- def eql?(other)
78
- self.class == other.class && line == other.line
79
- end
80
- alias_method :==, :eql?
81
-
82
59
  # Insert the character on the line positioned at the given
83
60
  # index.
84
61
  #
@@ -89,14 +66,7 @@ module Vedeu
89
66
  return self unless character
90
67
 
91
68
  Vedeu::Editor::Line.coerce(Vedeu::Editor::Insert
92
- .into(line, character, index, size))
93
- end
94
-
95
- # Return the size of the line in characters.
96
- #
97
- # @return [Fixnum]
98
- def size
99
- line.size
69
+ .into(collection, character, index, size))
100
70
  end
101
71
 
102
72
  end # Line
@@ -9,10 +9,12 @@ module Vedeu
9
9
  class Lines
10
10
 
11
11
  include Enumerable
12
+ include Vedeu::Editor::Collection
12
13
 
13
- # @!attribute [rw] lines
14
+ # @!attribute [rw] collection
14
15
  # @return [String]
15
- attr_accessor :lines
16
+ attr_accessor :collection
17
+ alias_method :lines, :collection
16
18
 
17
19
  # Coerce a document into a new instance of Vedeu::Editor::Lines.
18
20
  #
@@ -23,16 +25,16 @@ module Vedeu
23
25
  new(document.lines)
24
26
 
25
27
  elsif document.is_a?(Array)
26
- lines = document.map { |line| Vedeu::Editor::Line.coerce(line) }
28
+ collection = document.map { |line| Vedeu::Editor::Line.coerce(line) }
27
29
 
28
- new(lines)
30
+ new(collection)
29
31
 
30
32
  elsif document.is_a?(String)
31
- lines = document.lines.map(&:chomp).map do |line|
33
+ collection = document.lines.map(&:chomp).map do |line|
32
34
  Vedeu::Editor::Line.coerce(line)
33
35
  end
34
36
 
35
- new(lines)
37
+ new(collection)
36
38
 
37
39
  else
38
40
  new
@@ -42,18 +44,10 @@ module Vedeu
42
44
 
43
45
  # Returns a new instance of Vedeu::Editor::Lines.
44
46
  #
45
- # @param lines [Array<String>|NilClass]
47
+ # @param collection [Array<String>|NilClass]
46
48
  # @return [Vedeu::Editor::Lines]
47
- def initialize(lines = nil)
48
- @lines = lines || []
49
- end
50
-
51
- # Return a line or collection of lines (if index is a Range).
52
- #
53
- # @param index [Fixnum|Range]
54
- # @return [Vedeu::Editor::Line]
55
- def [](index)
56
- lines[index]
49
+ def initialize(collection = nil)
50
+ @collection = collection || []
57
51
  end
58
52
 
59
53
  # Deletes the character from the line where the cursor is
@@ -63,9 +57,9 @@ module Vedeu
63
57
  # @param x [Fixnum]
64
58
  # @return [Vedeu::Editor::Lines]
65
59
  def delete_character(y, x)
66
- lines[y] = line(y).delete_character(x) unless line(y).empty?
60
+ collection[y] = line(y).delete_character(x) unless line(y).empty?
67
61
 
68
- Vedeu::Editor::Lines.coerce(lines)
62
+ Vedeu::Editor::Lines.coerce(collection)
69
63
  end
70
64
 
71
65
  # Delete the line from the lines positioned at the given index.
@@ -82,25 +76,9 @@ module Vedeu
82
76
  # @param block [Proc]
83
77
  # @return [Enumerator]
84
78
  def each(&block)
85
- lines.each(&block)
86
- end
87
-
88
- # Returns a boolean indicating whether there are lines.
89
- #
90
- # @return [Boolean]
91
- def empty?
92
- lines.empty?
79
+ collection.each(&block)
93
80
  end
94
81
 
95
- # An object is equal when its values are the same.
96
- #
97
- # @param other [Vedeu::Editor::Lines]
98
- # @return [Boolean]
99
- def eql?(other)
100
- self.class == other.class && lines == other.lines
101
- end
102
- alias_method :==, :eql?
103
-
104
82
  # Insert a character in to a line.
105
83
  #
106
84
  # @param character [String]
@@ -108,9 +86,9 @@ module Vedeu
108
86
  # @param x [Fixnum]
109
87
  # @return [Vedeu::Editor::Lines]
110
88
  def insert_character(character, y, x)
111
- lines[y] = line(y).insert_character(character, x)
89
+ collection[y] = line(y).insert_character(character, x)
112
90
 
113
- Vedeu::Editor::Lines.coerce(lines)
91
+ Vedeu::Editor::Lines.coerce(collection)
114
92
  end
115
93
 
116
94
  # Insert the line on the line below the given index.
@@ -119,7 +97,7 @@ module Vedeu
119
97
  # @return [Vedeu::Editor::Lines]
120
98
  def insert_line(index = nil)
121
99
  Vedeu::Editor::Lines.coerce(
122
- Vedeu::Editor::Insert.into(lines,
100
+ Vedeu::Editor::Insert.into(collection,
123
101
  Vedeu::Editor::Line.new,
124
102
  index,
125
103
  size))
@@ -130,27 +108,20 @@ module Vedeu
130
108
  # @param index [Fixnum|NilClass]
131
109
  # @return [Vedeu::Editor::Line]
132
110
  def line(index = nil)
133
- return Vedeu::Editor::Line.new unless lines
134
- return Vedeu::Editor::Line.coerce(lines[-1]) unless index
111
+ return Vedeu::Editor::Line.new unless collection
112
+ return Vedeu::Editor::Line.coerce(collection[-1]) unless index
135
113
 
136
- Vedeu::Editor::Line.coerce(Vedeu::Editor::Item.by_index(lines, index))
137
- end
138
-
139
- # Return the number of lines.
140
- #
141
- # @return [Fixnum]
142
- def size
143
- lines.size
114
+ Vedeu::Editor::Line.coerce(by_index(index))
144
115
  end
145
116
 
146
117
  # Return the lines as a string.
147
118
  #
148
119
  # @return [String]
149
120
  def to_s
150
- lines.map(&:to_s).join
121
+ collection.map(&:to_s).join
151
122
  end
152
123
 
153
- end # Line
124
+ end # Lines
154
125
 
155
126
  end # Editor
156
127
 
@@ -82,12 +82,6 @@ module Vedeu
82
82
  # @return [Object]
83
83
  attr_accessor :client
84
84
 
85
- # @param (see #initialize)
86
- # @return (see #initialize)
87
- def self.store(attributes, &block)
88
- new(attributes).store(&block)
89
- end
90
-
91
85
  # Returns a new instance of Vedeu::Geometries::Geometry.
92
86
  #
93
87
  # @param attributes [Hash<Symbol => Boolean|Fixnum|String|
@@ -14,12 +14,6 @@ module Vedeu
14
14
  # @return [String]
15
15
  attr_accessor :name
16
16
 
17
- # @param (see #initialize)
18
- # @return (see #initialize)
19
- def self.store(attributes = {})
20
- new(attributes).store
21
- end
22
-
23
17
  # Return a new instance of Vedeu::Groups::Group.
24
18
  #
25
19
  # @note
@@ -107,7 +107,7 @@ module Vedeu
107
107
  # Returns a boolean indicating whether a mouse click was
108
108
  # received.
109
109
  #
110
- # @param key [NilClass|String|Symbol|Vedeu::Cursors::Cursor]
110
+ # @param input [NilClass|String|Symbol|Vedeu::Cursors::Cursor]
111
111
  # @return [Boolean]
112
112
  def click?(input)
113
113
  return false if input.nil? || input.is_a?(Symbol)
@@ -65,7 +65,7 @@ module Vedeu
65
65
  if direct?
66
66
  Vedeu.direct_write(optimised_output)
67
67
 
68
- Vedeu::Terminal::Buffer.update(output)
68
+ Vedeu::Buffers::Terminal.update(output)
69
69
 
70
70
  else
71
71
  Vedeu.render_output(output)
@@ -135,7 +135,7 @@ module Vedeu
135
135
  def message_type(type)
136
136
  Vedeu::EscapeSequences::Esc
137
137
  .send(message_types.fetch(type, :default)[0]) do
138
- "[#{type}]".ljust(9)
138
+ "[#{type}]".ljust(11)
139
139
  end
140
140
  end
141
141
 
@@ -170,7 +170,10 @@ module Vedeu
170
170
  debug: [:white, :light_grey],
171
171
 
172
172
  input: [:light_yellow, :yellow],
173
- output: [:light_green, :green],
173
+
174
+ compress: [:white, :light_grey],
175
+ output: [:light_green, :green],
176
+ render: [:light_green, :green],
174
177
 
175
178
  error: [:light_red, :red],
176
179
 
@@ -169,15 +169,13 @@ module Vedeu
169
169
  Vedeu.trigger(:_refresh_cursor_, current)
170
170
  end
171
171
 
172
- # Returns a collection of the names of all the registered
173
- # entities.
172
+ # Access to the storage for this repository.
174
173
  #
175
174
  # @return [Array]
176
- def registered
177
- return [] if empty?
178
-
179
- storage
175
+ def storage
176
+ @storage ||= in_memory
180
177
  end
178
+ alias_method :registered, :storage
181
179
 
182
180
  # Returns a boolean indicating whether the named model is
183
181
  # registered.
@@ -229,13 +227,6 @@ module Vedeu
229
227
  current
230
228
  end
231
229
 
232
- # Access to the storage for this repository.
233
- #
234
- # @return [Array]
235
- def storage
236
- @storage ||= in_memory
237
- end
238
-
239
230
  # Returns an empty collection ready for the storing of interface
240
231
  # names.
241
232
  #
@@ -51,9 +51,13 @@ module Vedeu
51
51
 
52
52
  # @return [Array]
53
53
  def content
54
- return [] if absent?(output)
54
+ @content ||= if present?(output)
55
+ output.content.reject(&:cell?)
55
56
 
56
- @content ||= output.content.reject(&:cell?)
57
+ else
58
+ []
59
+
60
+ end
57
61
  end
58
62
 
59
63
  # @return [String]
@@ -69,7 +73,7 @@ module Vedeu
69
73
  ].join
70
74
  end.join
71
75
 
72
- Vedeu.log(type: :output,
76
+ Vedeu.log(type: :compress,
73
77
  message: "Compression: #{content.size} objects -> " \
74
78
  "#{out.size} characters".freeze)
75
79
 
@@ -81,7 +85,7 @@ module Vedeu
81
85
  def uncompress
82
86
  out = content.map(&:to_s).join
83
87
 
84
- Vedeu.log(type: :output,
88
+ Vedeu.log(type: :compress,
85
89
  message: "No compression: #{content.size} objects -> " \
86
90
  "#{out.size} characters".freeze)
87
91
 
@@ -74,7 +74,7 @@ module Vedeu
74
74
  # Send the view to the renderers. If the output is a
75
75
  # {Vedeu::Models::Escape} object (typical when showing or
76
76
  # hiding the cursor) then we bypass the
77
- # {Vedeu::Terminal::Buffer} and write directly to the terminal
77
+ # {Vedeu::Buffers::Terminal} and write directly to the terminal
78
78
  # because escape sequences only make sense to the terminal and
79
79
  # not other renderers.
80
80
  #
@@ -100,12 +100,12 @@ module Vedeu
100
100
 
101
101
  # @return [Array]
102
102
  def buffer_update!
103
- Vedeu::Terminal::Buffer.update(output)
103
+ Vedeu::Buffers::Terminal.update(output)
104
104
  end
105
105
 
106
106
  # @return [Array]
107
107
  def buffer_write!
108
- Vedeu::Terminal::Buffer.write(output)
108
+ Vedeu::Buffers::Terminal.write(output)
109
109
  end
110
110
 
111
111
  # @return [Array<String>]
@@ -18,7 +18,7 @@ module Vedeu
18
18
  # @return [Array<void>]
19
19
  def clear
20
20
  storage.map do |renderer|
21
- Vedeu.log(type: :output,
21
+ Vedeu.log(type: :render,
22
22
  message: "Clearing via #{renderer.class.name}".freeze)
23
23
 
24
24
  Thread.new(renderer) do
@@ -51,7 +51,7 @@ module Vedeu
51
51
  # @return [Array<void>]
52
52
  def render(output)
53
53
  storage.map do |renderer|
54
- Vedeu.log(type: :output,
54
+ Vedeu.log(type: :render,
55
55
  message: "Rendering via #{renderer.class.name}".freeze)
56
56
 
57
57
  Thread.new(renderer) do