vedeu 0.6.9 → 0.6.10

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 (80) hide show
  1. checksums.yaml +4 -4
  2. data/LICENSE.txt +1 -1
  3. data/lib/vedeu/all.rb +3 -3
  4. data/lib/vedeu/api/external.rb +194 -0
  5. data/lib/vedeu/api/internal.rb +173 -0
  6. data/lib/vedeu/application/controller.rb +3 -2
  7. data/lib/vedeu/bindings/application.rb +1 -1
  8. data/lib/vedeu/bindings/drb.rb +2 -3
  9. data/lib/vedeu/bindings/movement.rb +1 -1
  10. data/lib/vedeu/buffers/all.rb +0 -2
  11. data/lib/vedeu/colours/translator.rb +2 -1
  12. data/lib/vedeu/common.rb +4 -2
  13. data/lib/vedeu/configuration/api.rb +1 -1
  14. data/lib/vedeu/configuration/cli.rb +1 -1
  15. data/lib/vedeu/cursors/repository.rb +1 -1
  16. data/lib/vedeu/editor/insert.rb +12 -13
  17. data/lib/vedeu/geometry/position.rb +1 -1
  18. data/lib/vedeu/models/cell.rb +35 -21
  19. data/lib/vedeu/models/escape.rb +18 -1
  20. data/lib/vedeu/models/page.rb +20 -10
  21. data/lib/vedeu/models/row.rb +18 -8
  22. data/lib/vedeu/models/views/char.rb +9 -7
  23. data/lib/vedeu/models/views/view.rb +1 -1
  24. data/lib/vedeu/output/compressor.rb +22 -14
  25. data/lib/vedeu/output/output.rb +1 -10
  26. data/lib/vedeu/output/renderers/escape_sequence.rb +8 -4
  27. data/lib/vedeu/output/renderers/file.rb +7 -23
  28. data/lib/vedeu/output/renderers/html.rb +47 -26
  29. data/lib/vedeu/output/renderers/json.rb +11 -16
  30. data/lib/vedeu/output/renderers/null.rb +1 -1
  31. data/lib/vedeu/output/renderers/renderer_options.rb +2 -1
  32. data/lib/vedeu/output/renderers/terminal.rb +7 -15
  33. data/lib/vedeu/output/renderers/text.rb +1 -1
  34. data/lib/vedeu/output/viewport.rb +154 -143
  35. data/lib/vedeu/repositories/collection.rb +2 -2
  36. data/lib/vedeu/repositories/model.rb +25 -26
  37. data/lib/vedeu/repositories/registerable.rb +9 -8
  38. data/lib/vedeu/repositories/repository.rb +21 -16
  39. data/lib/vedeu/repositories/store.rb +6 -4
  40. data/lib/vedeu/runtime/bootstrap.rb +7 -5
  41. data/lib/vedeu/runtime/main_loop.rb +2 -0
  42. data/lib/vedeu/runtime/router.rb +155 -149
  43. data/lib/vedeu/templating/decoder.rb +8 -5
  44. data/lib/vedeu/templating/encoder.rb +6 -4
  45. data/lib/vedeu/templating/template.rb +2 -2
  46. data/lib/vedeu/templating/view_template.rb +8 -7
  47. data/lib/vedeu/terminal/buffer.rb +132 -0
  48. data/lib/vedeu/terminal/terminal.rb +0 -5
  49. data/lib/vedeu/version.rb +1 -1
  50. data/lib/vedeu.rb +2 -2
  51. data/out_ +50 -0
  52. data/test/lib/vedeu/api/external_test.rb +62 -0
  53. data/test/lib/vedeu/{internal_api_test.rb → api/internal_test.rb} +6 -2
  54. data/test/lib/vedeu/application/controller_test.rb +3 -3
  55. data/test/lib/vedeu/bindings/application_test.rb +2 -2
  56. data/test/lib/vedeu/models/cell_test.rb +48 -17
  57. data/test/lib/vedeu/models/escape_test.rb +29 -7
  58. data/test/lib/vedeu/models/page_test.rb +70 -50
  59. data/test/lib/vedeu/models/row_test.rb +40 -20
  60. data/test/lib/vedeu/output/compressor_test.rb +12 -12
  61. data/test/lib/vedeu/output/output_test.rb +17 -23
  62. data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +15 -11
  63. data/test/lib/vedeu/output/renderers/html_test.rb +66 -68
  64. data/test/lib/vedeu/output/renderers/json_test.rb +36 -83
  65. data/test/lib/vedeu/output/renderers/terminal_test.rb +22 -2
  66. data/test/lib/vedeu/output/viewport_test.rb +201 -197
  67. data/test/lib/vedeu/runtime/router_test.rb +144 -140
  68. data/test/lib/vedeu/terminal/buffer_test.rb +307 -0
  69. data/test/support/examples/material_colours_app.rb +2 -2
  70. data/test/support/templates/html_renderer.vedeu +24 -0
  71. metadata +14 -17
  72. data/lib/vedeu/api.rb +0 -190
  73. data/lib/vedeu/buffers/virtual_buffer.rb +0 -136
  74. data/lib/vedeu/buffers/virtual_buffers.rb +0 -77
  75. data/lib/vedeu/internal_api.rb +0 -173
  76. data/lib/vedeu/terminal/content.rb +0 -88
  77. data/test/lib/vedeu/api_test.rb +0 -58
  78. data/test/lib/vedeu/buffers/virtual_buffer_test.rb +0 -148
  79. data/test/lib/vedeu/buffers/virtual_buffers_test.rb +0 -73
  80. data/test/lib/vedeu/terminal/content_test.rb +0 -108
@@ -1,184 +1,190 @@
1
1
  module Vedeu
2
2
 
3
- # Stores all client application controllers with their respective actions.
4
- #
5
- module Router
3
+ module Runtime
6
4
 
7
- include Vedeu::Common
8
-
9
- extend self
10
-
11
- # Registers a controller with the given controller name for the client
12
- # application.
5
+ # Stores all client application controllers with their respective
6
+ # actions.
13
7
  #
14
- # @param controller [Symbol]
15
- # @param klass [String]
16
- # @raise [Vedeu::Error::MissingRequired] When the controller name is not
17
- # given.
18
- # @return [void]
19
- def add_controller(controller, klass)
20
- unless present?(controller)
21
- fail Vedeu::Error::MissingRequired,
22
- 'Cannot store controller without a name attribute.'
23
- end
8
+ module Router
9
+
10
+ include Vedeu::Common
11
+
12
+ extend self
13
+
14
+ # Registers a controller with the given controller name for the
15
+ # client application.
16
+ #
17
+ # @param controller [Symbol]
18
+ # @param klass [String]
19
+ # @raise [Vedeu::Error::MissingRequired] When the controller
20
+ # name is not given.
21
+ # @return [void]
22
+ def add_controller(controller, klass)
23
+ unless present?(controller)
24
+ fail Vedeu::Error::MissingRequired,
25
+ 'Cannot store controller without a name attribute.'
26
+ end
24
27
 
25
- Vedeu.log(type: :create,
26
- message: "Controller: ':#{controller}'")
28
+ Vedeu.log(type: :create,
29
+ message: "Controller: ':#{controller}'")
27
30
 
28
- if registered?(controller)
29
- storage[controller].merge!(klass: klass)
31
+ if registered?(controller)
32
+ storage[controller].merge!(klass: klass)
30
33
 
31
- else
32
- storage.store(controller, klass: klass, actions: [])
34
+ else
35
+ storage.store(controller, klass: klass, actions: [])
36
+
37
+ end
33
38
 
39
+ storage
34
40
  end
35
41
 
36
- storage
37
- end
42
+ # Registers an action to the given controller name for the
43
+ # client application.
44
+ #
45
+ # @param controller [Symbol]
46
+ # @param action [Symbol]
47
+ # @raise [Vedeu::Error::MissingRequired] When the controller
48
+ # name or action name is not given.
49
+ # @return [void]
50
+ def add_action(controller, action)
51
+ if present?(controller) && present?(action)
52
+ Vedeu.log(type: :create,
53
+ message: "Action: ':#{action}' (for ':#{controller}')")
38
54
 
39
- # Registers an action to the given controller name for the client
40
- # application.
41
- #
42
- # @param controller [Symbol]
43
- # @param action [Symbol]
44
- # @raise [Vedeu::Error::MissingRequired] When the controller name or action
45
- # name is not given.
46
- # @return [void]
47
- def add_action(controller, action)
48
- if present?(controller) && present?(action)
49
- Vedeu.log(type: :create,
50
- message: "Action: ':#{action}' (for ':#{controller}')")
55
+ if registered?(controller)
56
+ storage[controller][:actions] << action
51
57
 
52
- if registered?(controller)
53
- storage[controller][:actions] << action
58
+ else
59
+ add_controller(controller, '')
60
+ add_action(controller, action)
54
61
 
55
- else
56
- add_controller(controller, '')
57
- add_action(controller, action)
62
+ end
58
63
 
59
- end
64
+ storage
60
65
 
61
- storage
66
+ else
67
+ fail Vedeu::Error::MissingRequired,
68
+ 'Cannot store action without a controller or name attribute.'
62
69
 
63
- else
64
- fail Vedeu::Error::MissingRequired,
65
- 'Cannot store action without a controller or name attribute.'
70
+ end
71
+ end
66
72
 
73
+ # Instruct Vedeu to load the client application controller
74
+ # action with parameters.
75
+ #
76
+ # @example
77
+ # Vedeu.goto(controller, action, args)
78
+ #
79
+ # @param controller [Symbol]
80
+ # @param action [Symbol]
81
+ # @param args [void]
82
+ # @raise [Vedeu::Error::ModelNotFound] When the controller is
83
+ # not registered.
84
+ # @return [void]
85
+ def goto(controller, action, **args)
86
+ Vedeu.log(type: :debug,
87
+ message: "Routing: #{controller} #{action}")
88
+
89
+ route(controller, action, args) if action_defined?(action, controller)
90
+ end
91
+ alias_method :action, :goto
92
+
93
+ # Returns a boolean indicating whether the given controller name
94
+ # is already registered.
95
+ #
96
+ # @param controller [Symbol]
97
+ # @return [Boolean]
98
+ def registered?(controller)
99
+ storage.key?(controller)
67
100
  end
68
- end
69
101
 
70
- # Instruct Vedeu to load the client application controller action with
71
- # parameters.
72
- #
73
- # @example
74
- # Vedeu.goto(controller, action, args)
75
- #
76
- # @param controller [Symbol]
77
- # @param action [Symbol]
78
- # @param args [void]
79
- # @raise [Vedeu::Error::ModelNotFound] When the controller is not
80
- # registered.
81
- # @return [void]
82
- def goto(controller, action, **args)
83
- Vedeu.log(type: :debug,
84
- message: "Routing: #{controller} #{action}")
85
-
86
- route(controller, action, args) if action_defined?(action, controller)
87
- end
88
- alias_method :action, :goto
89
-
90
- # Returns a boolean indicating whether the given controller name is already
91
- # registered.
92
- #
93
- # @param controller [Symbol]
94
- # @return [Boolean]
95
- def registered?(controller)
96
- storage.key?(controller)
97
- end
102
+ # Removes all stored controllers with their respective actions.
103
+ #
104
+ # @return [Hash<void>]
105
+ def reset!
106
+ @storage = in_memory
107
+ end
108
+ alias_method :reset, :reset!
98
109
 
99
- # Removes all stored controllers with their respective actions.
100
- #
101
- # @return [Hash<void>]
102
- def reset!
103
- @storage = in_memory
104
- end
105
- alias_method :reset, :reset!
110
+ private
106
111
 
107
- private
112
+ # Returns a boolean indicating whether the given action name is
113
+ # defined for the given controller.
114
+ #
115
+ # @param action [Symbol]
116
+ # @param controller [Symbol]
117
+ # @return [Boolean]
118
+ def action_defined?(action, controller)
119
+ if registered?(controller)
120
+ return true if storage[controller][:actions].include?(action)
108
121
 
109
- # Returns a boolean indicating whether the given action name is defined for
110
- # the given controller.
111
- #
112
- # @param action [Symbol]
113
- # @param controller [Symbol]
114
- # @return [Boolean]
115
- def action_defined?(action, controller)
116
- if registered?(controller)
117
- return true if storage[controller][:actions].include?(action)
122
+ fail Vedeu::Error::ActionNotFound,
123
+ "#{action} is not registered for #{controller}."
118
124
 
119
- fail Vedeu::Error::ActionNotFound,
120
- "#{action} is not registered for #{controller}."
125
+ else
126
+ fail Vedeu::Error::ControllerNotFound,
127
+ "#{controller} is not registered."
121
128
 
122
- else
123
- fail Vedeu::Error::ControllerNotFound,
124
- "#{controller} is not registered."
129
+ end
130
+ end
125
131
 
132
+ # Instantiate the given controller by name, the call the action
133
+ # (method) with any given arguments.
134
+ #
135
+ # @param controller [Symbol]
136
+ # @param action [Symbol]
137
+ # @param args [Symbol]
138
+ # @return [void]
139
+ def route(controller, action, **args)
140
+ klass = Object.const_get(klass_for(controller)).new(**args)
141
+ klass.send(action)
126
142
  end
127
- end
128
143
 
129
- # Instantiate the given controller by name, the call the action (method)
130
- # with any given arguments.
131
- #
132
- # @param controller [Symbol]
133
- # @param action [Symbol]
134
- # @param args [Symbol]
135
- # @return [void]
136
- def route(controller, action, **args)
137
- klass = Object.const_get(klass_for(controller)).new(**args)
138
- klass.send(action)
139
- end
140
-
141
- # Fetch the class for the controller by name.
142
- #
143
- # @param controller [Symbol]
144
- # @raise [Vedeu::Error::MissingRequired] When the given controller name does
145
- # not have a class defined.
146
- # @return [String]
147
- def klass_for(controller)
148
- if registered?(controller) && klass_defined?(controller)
149
- storage[controller][:klass]
150
-
151
- else
152
- fail Vedeu::Error::MissingRequired,
153
- "Cannot route to #{controller} as no class defined."
144
+ # Fetch the class for the controller by name.
145
+ #
146
+ # @param controller [Symbol]
147
+ # @raise [Vedeu::Error::MissingRequired] When the given
148
+ # controller name does not have a class defined.
149
+ # @return [String]
150
+ def klass_for(controller)
151
+ if registered?(controller) && klass_defined?(controller)
152
+ storage[controller][:klass]
154
153
 
154
+ else
155
+ fail Vedeu::Error::MissingRequired,
156
+ "Cannot route to #{controller} as no class defined."
157
+
158
+ end
155
159
  end
156
- end
157
160
 
158
- # Returns a boolean indicating whether the given controller name has a class
159
- # defined.
160
- #
161
- # @param controller [Symbol]
162
- # @return [Boolean]
163
- def klass_defined?(controller)
164
- present?(storage[controller][:klass])
165
- end
161
+ # Returns a boolean indicating whether the given controller name
162
+ # has a class defined.
163
+ #
164
+ # @param controller [Symbol]
165
+ # @return [Boolean]
166
+ def klass_defined?(controller)
167
+ present?(storage[controller][:klass])
168
+ end
166
169
 
167
- # Returns all the stored controllers and their respective actions.
168
- #
169
- # @return [Hash<Symbol => Hash<Symbol => String|Array<Symbol>>>]
170
- def storage
171
- @storage ||= in_memory
172
- end
170
+ # Returns all the stored controllers and their respective
171
+ # actions.
172
+ #
173
+ # @return [Hash<Symbol => Hash<Symbol => String|Array<Symbol>>>]
174
+ def storage
175
+ @storage ||= in_memory
176
+ end
173
177
 
174
- # Returns an empty collection ready for the storing of client application
175
- # controllers and actions.
176
- #
177
- # @return [Hash<void>]
178
- def in_memory
179
- {}
180
- end
178
+ # Returns an empty collection ready for the storing of client
179
+ # application controllers and actions.
180
+ #
181
+ # @return [Hash<void>]
182
+ def in_memory
183
+ {}
184
+ end
185
+
186
+ end # Router
181
187
 
182
- end # Router
188
+ end # Runtime
183
189
 
184
190
  end # Vedeu
@@ -2,7 +2,8 @@ module Vedeu
2
2
 
3
3
  module Templating
4
4
 
5
- # Converts an encoded string back into an object or collection of objects.
5
+ # Converts an encoded string back into an object or collection of
6
+ # objects.
6
7
  #
7
8
  class Decoder
8
9
 
@@ -20,7 +21,8 @@ module Vedeu
20
21
  @data = data
21
22
  end
22
23
 
23
- # Converts an encoded string back into an object or collection of objects.
24
+ # Converts an encoded string back into an object or collection
25
+ # of objects.
24
26
  #
25
27
  # @return [Object]
26
28
  def process
@@ -35,7 +37,8 @@ module Vedeu
35
37
 
36
38
  private
37
39
 
38
- # Convert the marshalled object or objects back into an object(s).
40
+ # Convert the marshalled object or objects back into an
41
+ # object(s).
39
42
  #
40
43
  # @return [Object]
41
44
  def demarshal
@@ -49,8 +52,8 @@ module Vedeu
49
52
  Zlib::Inflate.inflate(decode64)
50
53
  end
51
54
 
52
- # Decode the Base64 string into a compressed, marshalled object or
53
- # objects.
55
+ # Decode the Base64 string into a compressed, marshalled object
56
+ # or objects.
54
57
  #
55
58
  # @return [String]
56
59
  def decode64
@@ -2,7 +2,8 @@ module Vedeu
2
2
 
3
3
  module Templating
4
4
 
5
- # Converts an object or collection of objects into an encoded String.
5
+ # Converts an object or collection of objects into an encoded
6
+ # String.
6
7
  #
7
8
  class Encoder
8
9
 
@@ -20,7 +21,8 @@ module Vedeu
20
21
  @data = data
21
22
  end
22
23
 
23
- # Converts an object or collection of objects into an encoded String.
24
+ # Converts an object or collection of objects into an encoded
25
+ # String.
24
26
  #
25
27
  # @return [String]
26
28
  def process
@@ -42,8 +44,8 @@ module Vedeu
42
44
  "{{#{encode64}}}"
43
45
  end
44
46
 
45
- # Encode the compressed, marshalled object or objects into a Base64
46
- # string.
47
+ # Encode the compressed, marshalled object or objects into a
48
+ # Base64 string.
47
49
  #
48
50
  # @return [String]
49
51
  def encode64
@@ -47,8 +47,8 @@ module Vedeu
47
47
  File.read(path)
48
48
  end
49
49
 
50
- # @raise [Vedeu::Error::MissingRequired] When the path is empty or does
51
- # not exist.
50
+ # @raise [Vedeu::Error::MissingRequired] When the path is empty
51
+ # or does not exist.
52
52
  # @return [String]
53
53
  def path
54
54
  fail Vedeu::Error::MissingRequired,
@@ -2,7 +2,8 @@ module Vedeu
2
2
 
3
3
  module Templating
4
4
 
5
- # Extend Template to provide client application view specific parsing.
5
+ # Extend Template to provide client application view specific
6
+ # parsing.
6
7
  #
7
8
  class ViewTemplate < Template
8
9
 
@@ -48,8 +49,8 @@ module Vedeu
48
49
 
49
50
  private
50
51
 
51
- # Return the interface colours if a name option is set, otherwise use the
52
- # default colours.
52
+ # Return the interface colours if a name option is set,
53
+ # otherwise use the default colours.
53
54
  #
54
55
  # @return [Vedeu::Colours::Colour|Hash<Symbol => Symbol>]
55
56
  def default_colour
@@ -65,8 +66,8 @@ module Vedeu
65
66
  end
66
67
  end
67
68
 
68
- # Return the interface style(s) if a name option is set, otherwise use the
69
- # default style.
69
+ # Return the interface style(s) if a name option is set,
70
+ # otherwise use the default style.
70
71
  #
71
72
  # @return [Symbol]
72
73
  def default_style
@@ -95,8 +96,8 @@ module Vedeu
95
96
  line.split(/({{\s*[^}]+\s*}})/)
96
97
  end
97
98
 
98
- # Convert the content into an array of strings without the line ending
99
- # character.
99
+ # Convert the content into an array of strings without the line
100
+ # ending character.
100
101
  #
101
102
  # @return [Array<String>]
102
103
  def lines
@@ -0,0 +1,132 @@
1
+ module Vedeu
2
+
3
+ module Terminal
4
+
5
+ # All output will be written to this singleton, and #render will be called
6
+ # at the end of each run of {Vedeu::MainLoop}; effectively rendering this
7
+ # buffer to each registered renderer. This buffer is not cleared after this
8
+ # action though, as subsequent actions will modify the contents. This means
9
+ # that individual parts of Vedeu can write content here at various points
10
+ # and only at the end of each run of {Vedeu::MainLoop} will it be actually
11
+ # output 'somewhere'.
12
+ #
13
+ module Buffer
14
+
15
+ extend self
16
+
17
+ # Return a grid of {Vedeu::Models::Cell} objects defined by the
18
+ # height and width of this virtual terminal.
19
+ #
20
+ # @return [Array<Array<Vedeu::Models::Cell>>]
21
+ def buffer
22
+ @output ||= empty_buffer.dup
23
+ end
24
+ alias_method :cells, :buffer
25
+
26
+ # @return [Array<Array<Vedeu::Models::Cell>>]
27
+ def empty_buffer
28
+ Array.new(Vedeu.height) do |y|
29
+ Array.new(Vedeu.width) do |x|
30
+ Vedeu::Models::Cell.new(position: [y + 1, x + 1])
31
+ end
32
+ end
33
+ end
34
+
35
+ # @return [Vedeu::Models::Page]
36
+ def output
37
+ Vedeu::Models::Page.coerce(buffer)
38
+ end
39
+
40
+ # Read a single cell from the virtual terminal.
41
+ #
42
+ # @note
43
+ # Given two actual coordinates (y, x) e.g. (1, 1)
44
+ # Convert to coordinate indices (cy, cx) e.g. (0, 0)
45
+ # Fetch the row at cy and return the cell from cx
46
+ #
47
+ # @param y [Fixnum] The row/line coordinate.
48
+ # @param x [Fixnum] The column/character coordinate.
49
+ # @return [Vedeu::Views::Char]
50
+ def read(y, x)
51
+ cy, cx = Vedeu::Geometry::Position[y, x].as_indices
52
+
53
+ row = fetch(cells, cy)
54
+ cell = fetch(row, cx)
55
+
56
+ cell
57
+ end
58
+
59
+ # Send the cells to the renderer and return the rendered result.
60
+ #
61
+ # @return [String|void] Most likely to be a String.
62
+ def render
63
+ Vedeu.renderers.render(output) if Vedeu.ready?
64
+ end
65
+
66
+ # Removes all content from the virtual terminal; effectively
67
+ # clearing it.
68
+ #
69
+ # @return [Array<Array<Vedeu::Models::Cell>>]
70
+ def reset
71
+ @output = empty_buffer
72
+ end
73
+ alias_method :clear, :reset
74
+
75
+ # Write a collection of cells to the virtual terminal.
76
+ #
77
+ # @param value [Array<Array<Vedeu::Views::Char>>]
78
+ # @return [Array<Array<Vedeu::Views::Char>>]
79
+ def write(value)
80
+ values = Array(value).flatten
81
+
82
+ values.each do |v|
83
+ buffer[v.position.y][v.position.x] = v if valid_position?(v)
84
+ end
85
+
86
+ self
87
+ end
88
+
89
+ private
90
+
91
+ # @param from [Array] An Array of rows, or an Array of cells.
92
+ # @param which [Fixnum] A Fixnum representing the index; the row
93
+ # number or the cell number for a row.
94
+ # @return [Array<Vedeu::Views::Char>|Array]
95
+ def fetch(from, which)
96
+ from[which] || []
97
+ end
98
+
99
+ # Returns a boolean indicating the value has a position
100
+ # attribute.
101
+ #
102
+ # @param value [void]
103
+ # @return [Boolean]
104
+ def position?(value)
105
+ value.respond_to?(:position) &&
106
+ value.position.is_a?(Vedeu::Geometry::Position)
107
+ end
108
+
109
+ # Returns a boolean indicating the value has a position
110
+ # attribute and is within the terminal boundary.
111
+ #
112
+ # @param value [void]
113
+ # @return [Boolean]
114
+ def valid_position?(value)
115
+ position?(value) && within_terminal_boundary?(value)
116
+ end
117
+
118
+ # Returns a boolean indicating the position of the value object
119
+ # is valid for this terminal.
120
+ #
121
+ # @param value [void]
122
+ # @return [Boolean]
123
+ def within_terminal_boundary?(value)
124
+ value.position.y > 0 && value.position.y <= Vedeu.height &&
125
+ value.position.x > 0 && value.position.x <= Vedeu.width
126
+ end
127
+
128
+ end # Buffer
129
+
130
+ end # Terminal
131
+
132
+ end # Vedeu
@@ -207,11 +207,6 @@ module Vedeu
207
207
  IO.console
208
208
  end
209
209
 
210
- # @return [Vedeu::Buffers::VirtualBuffer]
211
- def virtual
212
- @virtual ||= Vedeu::Buffers::VirtualBuffer.new(height, width)
213
- end
214
-
215
210
  end # Terminal
216
211
 
217
212
  end # Vedeu
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.6.9'
4
+ VERSION = '0.6.10'
5
5
 
6
6
  end
data/lib/vedeu.rb CHANGED
@@ -53,8 +53,8 @@ module Vedeu
53
53
  # @param receiver [void]
54
54
  # @return [void]
55
55
  def included(receiver)
56
- receiver.send(:include, API)
57
- receiver.extend(API)
56
+ receiver.send(:include, Vedeu::API::External)
57
+ receiver.extend(Vedeu::API::External)
58
58
  end
59
59
  # :nocov:
60
60
 
data/out_ ADDED
@@ -0,0 +1,50 @@
1
+ <html>
2
+ <head>
3
+ <style type='text/css'>
4
+ body {
5
+ background:#000;
6
+ }
7
+ td {
8
+ border:1px #171717 solid;
9
+ font-size:12px;
10
+ font-family:monospace;
11
+ height:18px;
12
+ margin:1px;
13
+ text-align:center;
14
+ vertical-align:center;
15
+ width:18px;
16
+ }
17
+ </style>
18
+ </head>
19
+ <body>
20
+ <table>
21
+ <tr>
22
+
23
+ </tr>
24
+ <tr>
25
+
26
+ </tr>
27
+ <tr>
28
+
29
+ </tr>
30
+ <tr>
31
+
32
+ </tr>
33
+ <tr>
34
+
35
+ </tr>
36
+ <tr>
37
+
38
+ </tr>
39
+ <tr>
40
+
41
+ </tr>
42
+ <tr>
43
+
44
+ </tr>
45
+ <tr>
46
+
47
+ </tr>
48
+ </table>
49
+ </body>
50
+ </html>