vedeu 0.6.9 → 0.6.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/LICENSE.txt +1 -1
- data/lib/vedeu/all.rb +3 -3
- data/lib/vedeu/api/external.rb +194 -0
- data/lib/vedeu/api/internal.rb +173 -0
- data/lib/vedeu/application/controller.rb +3 -2
- data/lib/vedeu/bindings/application.rb +1 -1
- data/lib/vedeu/bindings/drb.rb +2 -3
- data/lib/vedeu/bindings/movement.rb +1 -1
- data/lib/vedeu/buffers/all.rb +0 -2
- data/lib/vedeu/colours/translator.rb +2 -1
- data/lib/vedeu/common.rb +4 -2
- data/lib/vedeu/configuration/api.rb +1 -1
- data/lib/vedeu/configuration/cli.rb +1 -1
- data/lib/vedeu/cursors/repository.rb +1 -1
- data/lib/vedeu/editor/insert.rb +12 -13
- data/lib/vedeu/geometry/position.rb +1 -1
- data/lib/vedeu/models/cell.rb +35 -21
- data/lib/vedeu/models/escape.rb +18 -1
- data/lib/vedeu/models/page.rb +20 -10
- data/lib/vedeu/models/row.rb +18 -8
- data/lib/vedeu/models/views/char.rb +9 -7
- data/lib/vedeu/models/views/view.rb +1 -1
- data/lib/vedeu/output/compressor.rb +22 -14
- data/lib/vedeu/output/output.rb +1 -10
- data/lib/vedeu/output/renderers/escape_sequence.rb +8 -4
- data/lib/vedeu/output/renderers/file.rb +7 -23
- data/lib/vedeu/output/renderers/html.rb +47 -26
- data/lib/vedeu/output/renderers/json.rb +11 -16
- data/lib/vedeu/output/renderers/null.rb +1 -1
- data/lib/vedeu/output/renderers/renderer_options.rb +2 -1
- data/lib/vedeu/output/renderers/terminal.rb +7 -15
- data/lib/vedeu/output/renderers/text.rb +1 -1
- data/lib/vedeu/output/viewport.rb +154 -143
- data/lib/vedeu/repositories/collection.rb +2 -2
- data/lib/vedeu/repositories/model.rb +25 -26
- data/lib/vedeu/repositories/registerable.rb +9 -8
- data/lib/vedeu/repositories/repository.rb +21 -16
- data/lib/vedeu/repositories/store.rb +6 -4
- data/lib/vedeu/runtime/bootstrap.rb +7 -5
- data/lib/vedeu/runtime/main_loop.rb +2 -0
- data/lib/vedeu/runtime/router.rb +155 -149
- data/lib/vedeu/templating/decoder.rb +8 -5
- data/lib/vedeu/templating/encoder.rb +6 -4
- data/lib/vedeu/templating/template.rb +2 -2
- data/lib/vedeu/templating/view_template.rb +8 -7
- data/lib/vedeu/terminal/buffer.rb +132 -0
- data/lib/vedeu/terminal/terminal.rb +0 -5
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu.rb +2 -2
- data/out_ +50 -0
- data/test/lib/vedeu/api/external_test.rb +62 -0
- data/test/lib/vedeu/{internal_api_test.rb → api/internal_test.rb} +6 -2
- data/test/lib/vedeu/application/controller_test.rb +3 -3
- data/test/lib/vedeu/bindings/application_test.rb +2 -2
- data/test/lib/vedeu/models/cell_test.rb +48 -17
- data/test/lib/vedeu/models/escape_test.rb +29 -7
- data/test/lib/vedeu/models/page_test.rb +70 -50
- data/test/lib/vedeu/models/row_test.rb +40 -20
- data/test/lib/vedeu/output/compressor_test.rb +12 -12
- data/test/lib/vedeu/output/output_test.rb +17 -23
- data/test/lib/vedeu/output/renderers/escape_sequence_test.rb +15 -11
- data/test/lib/vedeu/output/renderers/html_test.rb +66 -68
- data/test/lib/vedeu/output/renderers/json_test.rb +36 -83
- data/test/lib/vedeu/output/renderers/terminal_test.rb +22 -2
- data/test/lib/vedeu/output/viewport_test.rb +201 -197
- data/test/lib/vedeu/runtime/router_test.rb +144 -140
- data/test/lib/vedeu/terminal/buffer_test.rb +307 -0
- data/test/support/examples/material_colours_app.rb +2 -2
- data/test/support/templates/html_renderer.vedeu +24 -0
- metadata +14 -17
- data/lib/vedeu/api.rb +0 -190
- data/lib/vedeu/buffers/virtual_buffer.rb +0 -136
- data/lib/vedeu/buffers/virtual_buffers.rb +0 -77
- data/lib/vedeu/internal_api.rb +0 -173
- data/lib/vedeu/terminal/content.rb +0 -88
- data/test/lib/vedeu/api_test.rb +0 -58
- data/test/lib/vedeu/buffers/virtual_buffer_test.rb +0 -148
- data/test/lib/vedeu/buffers/virtual_buffers_test.rb +0 -73
- data/test/lib/vedeu/terminal/content_test.rb +0 -108
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.6.
|
4
|
+
version: 0.6.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-09-
|
11
|
+
date: 2015-09-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: guard
|
@@ -252,7 +252,8 @@ files:
|
|
252
252
|
- docs/object_graph.md
|
253
253
|
- lib/vedeu.rb
|
254
254
|
- lib/vedeu/all.rb
|
255
|
-
- lib/vedeu/api.rb
|
255
|
+
- lib/vedeu/api/external.rb
|
256
|
+
- lib/vedeu/api/internal.rb
|
256
257
|
- lib/vedeu/application/application_controller.rb
|
257
258
|
- lib/vedeu/application/application_helper.rb
|
258
259
|
- lib/vedeu/application/application_view.rb
|
@@ -280,8 +281,6 @@ files:
|
|
280
281
|
- lib/vedeu/buffers/null.rb
|
281
282
|
- lib/vedeu/buffers/refresh.rb
|
282
283
|
- lib/vedeu/buffers/repository.rb
|
283
|
-
- lib/vedeu/buffers/virtual_buffer.rb
|
284
|
-
- lib/vedeu/buffers/virtual_buffers.rb
|
285
284
|
- lib/vedeu/colours/all.rb
|
286
285
|
- lib/vedeu/colours/background.rb
|
287
286
|
- lib/vedeu/colours/backgrounds.rb
|
@@ -364,7 +363,6 @@ files:
|
|
364
363
|
- lib/vedeu/input/keys.rb
|
365
364
|
- lib/vedeu/input/mapper.rb
|
366
365
|
- lib/vedeu/input/translator.rb
|
367
|
-
- lib/vedeu/internal_api.rb
|
368
366
|
- lib/vedeu/logging/all.rb
|
369
367
|
- lib/vedeu/logging/debug.rb
|
370
368
|
- lib/vedeu/logging/lockless_log_device.rb
|
@@ -447,11 +445,13 @@ files:
|
|
447
445
|
- lib/vedeu/templating/helpers.rb
|
448
446
|
- lib/vedeu/templating/template.rb
|
449
447
|
- lib/vedeu/templating/view_template.rb
|
450
|
-
- lib/vedeu/terminal/
|
448
|
+
- lib/vedeu/terminal/buffer.rb
|
451
449
|
- lib/vedeu/terminal/mode.rb
|
452
450
|
- lib/vedeu/terminal/terminal.rb
|
453
451
|
- lib/vedeu/version.rb
|
454
|
-
-
|
452
|
+
- out_
|
453
|
+
- test/lib/vedeu/api/external_test.rb
|
454
|
+
- test/lib/vedeu/api/internal_test.rb
|
455
455
|
- test/lib/vedeu/application/application_controller_test.rb
|
456
456
|
- test/lib/vedeu/application/application_helper_test.rb
|
457
457
|
- test/lib/vedeu/application/application_view_test.rb
|
@@ -477,8 +477,6 @@ files:
|
|
477
477
|
- test/lib/vedeu/buffers/null_test.rb
|
478
478
|
- test/lib/vedeu/buffers/refresh_test.rb
|
479
479
|
- test/lib/vedeu/buffers/repository_test.rb
|
480
|
-
- test/lib/vedeu/buffers/virtual_buffer_test.rb
|
481
|
-
- test/lib/vedeu/buffers/virtual_buffers_test.rb
|
482
480
|
- test/lib/vedeu/colours/background_test.rb
|
483
481
|
- test/lib/vedeu/colours/backgrounds_test.rb
|
484
482
|
- test/lib/vedeu/colours/colour_test.rb
|
@@ -546,7 +544,6 @@ files:
|
|
546
544
|
- test/lib/vedeu/input/keys_test.rb
|
547
545
|
- test/lib/vedeu/input/mapper_test.rb
|
548
546
|
- test/lib/vedeu/input/translator_test.rb
|
549
|
-
- test/lib/vedeu/internal_api_test.rb
|
550
547
|
- test/lib/vedeu/logging/debug_test.rb
|
551
548
|
- test/lib/vedeu/logging/lockless_log_device_test.rb
|
552
549
|
- test/lib/vedeu/logging/log_test.rb
|
@@ -624,7 +621,7 @@ files:
|
|
624
621
|
- test/lib/vedeu/templating/helpers_test.rb
|
625
622
|
- test/lib/vedeu/templating/template_test.rb
|
626
623
|
- test/lib/vedeu/templating/view_template_test.rb
|
627
|
-
- test/lib/vedeu/terminal/
|
624
|
+
- test/lib/vedeu/terminal/buffer_test.rb
|
628
625
|
- test/lib/vedeu/terminal/mode_test.rb
|
629
626
|
- test/lib/vedeu/terminal/terminal_test.rb
|
630
627
|
- test/lib/vedeu_test.rb
|
@@ -650,6 +647,7 @@ files:
|
|
650
647
|
- test/support/examples/view_templates_app/wrap.erb
|
651
648
|
- test/support/helpers/model_test_class.rb
|
652
649
|
- test/support/stats.sh
|
650
|
+
- test/support/templates/html_renderer.vedeu
|
653
651
|
- test/test_helper.rb
|
654
652
|
- vedeu.gemspec
|
655
653
|
homepage: https://github.com/gavinlaking/vedeu
|
@@ -677,7 +675,8 @@ signing_key:
|
|
677
675
|
specification_version: 4
|
678
676
|
summary: A terminal case of wonderland.
|
679
677
|
test_files:
|
680
|
-
- test/lib/vedeu/
|
678
|
+
- test/lib/vedeu/api/external_test.rb
|
679
|
+
- test/lib/vedeu/api/internal_test.rb
|
681
680
|
- test/lib/vedeu/application/application_controller_test.rb
|
682
681
|
- test/lib/vedeu/application/application_helper_test.rb
|
683
682
|
- test/lib/vedeu/application/application_view_test.rb
|
@@ -703,8 +702,6 @@ test_files:
|
|
703
702
|
- test/lib/vedeu/buffers/null_test.rb
|
704
703
|
- test/lib/vedeu/buffers/refresh_test.rb
|
705
704
|
- test/lib/vedeu/buffers/repository_test.rb
|
706
|
-
- test/lib/vedeu/buffers/virtual_buffer_test.rb
|
707
|
-
- test/lib/vedeu/buffers/virtual_buffers_test.rb
|
708
705
|
- test/lib/vedeu/colours/background_test.rb
|
709
706
|
- test/lib/vedeu/colours/backgrounds_test.rb
|
710
707
|
- test/lib/vedeu/colours/colour_test.rb
|
@@ -772,7 +769,6 @@ test_files:
|
|
772
769
|
- test/lib/vedeu/input/keys_test.rb
|
773
770
|
- test/lib/vedeu/input/mapper_test.rb
|
774
771
|
- test/lib/vedeu/input/translator_test.rb
|
775
|
-
- test/lib/vedeu/internal_api_test.rb
|
776
772
|
- test/lib/vedeu/logging/debug_test.rb
|
777
773
|
- test/lib/vedeu/logging/lockless_log_device_test.rb
|
778
774
|
- test/lib/vedeu/logging/log_test.rb
|
@@ -850,7 +846,7 @@ test_files:
|
|
850
846
|
- test/lib/vedeu/templating/helpers_test.rb
|
851
847
|
- test/lib/vedeu/templating/template_test.rb
|
852
848
|
- test/lib/vedeu/templating/view_template_test.rb
|
853
|
-
- test/lib/vedeu/terminal/
|
849
|
+
- test/lib/vedeu/terminal/buffer_test.rb
|
854
850
|
- test/lib/vedeu/terminal/mode_test.rb
|
855
851
|
- test/lib/vedeu/terminal/terminal_test.rb
|
856
852
|
- test/lib/vedeu_test.rb
|
@@ -876,5 +872,6 @@ test_files:
|
|
876
872
|
- test/support/examples/view_templates_app/wrap.erb
|
877
873
|
- test/support/helpers/model_test_class.rb
|
878
874
|
- test/support/stats.sh
|
875
|
+
- test/support/templates/html_renderer.vedeu
|
879
876
|
- test/test_helper.rb
|
880
877
|
has_rdoc:
|
data/lib/vedeu/api.rb
DELETED
@@ -1,190 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Provides the API to Vedeu. Methods therein, and classes belonging
|
4
|
-
# to this module expose Vedeu's core functionality.
|
5
|
-
#
|
6
|
-
# These methods are used in a variety of ways, sometimes in
|
7
|
-
# combination:
|
8
|
-
#
|
9
|
-
# # with parameters
|
10
|
-
# Vedeu.method_name(*params)
|
11
|
-
#
|
12
|
-
# # with a block
|
13
|
-
# Vedeu.method_name(*params) do
|
14
|
-
# # ...
|
15
|
-
# end
|
16
|
-
#
|
17
|
-
# # with other methods
|
18
|
-
# Vedeu.method_name.other_method
|
19
|
-
#
|
20
|
-
module API
|
21
|
-
|
22
|
-
extend Forwardable
|
23
|
-
|
24
|
-
module_function
|
25
|
-
|
26
|
-
# @!method configure
|
27
|
-
# @see Vedeu::Configuration.configure
|
28
|
-
# @!method configuration
|
29
|
-
# @see Vedeu::Configuration.configuration
|
30
|
-
def_delegators Vedeu::Configuration, :configure, :configuration
|
31
|
-
|
32
|
-
# @!method cursor
|
33
|
-
# @return [Vedeu::Cursors::Cursor]
|
34
|
-
def_delegators Vedeu::Cursors::Repository, :cursor
|
35
|
-
|
36
|
-
# @!method drb_restart
|
37
|
-
# @see Vedeu::Distributed::Server#restart
|
38
|
-
# @!method drb_start
|
39
|
-
# @see Vedeu::Distributed::Server#start
|
40
|
-
# @!method drb_status
|
41
|
-
# @see Vedeu::Distributed::Server#status
|
42
|
-
# @!method drb_stop
|
43
|
-
# @see Vedeu::Distributed::Server#stop
|
44
|
-
def_delegators Vedeu::Distributed::Server, :drb_restart, :drb_start,
|
45
|
-
:drb_status, :drb_stop
|
46
|
-
|
47
|
-
# @!method border
|
48
|
-
# @see Vedeu::Borders::DSL.border
|
49
|
-
def_delegators Vedeu::Borders::DSL, :border
|
50
|
-
|
51
|
-
# @!method geometry
|
52
|
-
# @see Vedeu::Geometry::DSL.geometry
|
53
|
-
def_delegators Vedeu::Geometry::DSL, :geometry
|
54
|
-
|
55
|
-
# @!method group
|
56
|
-
# @see Vedeu::DSL::Group.group
|
57
|
-
def_delegators Vedeu::DSL::Group, :group
|
58
|
-
|
59
|
-
# @!method keymap
|
60
|
-
# @see Vedeu::DSL::Keymap.keymap
|
61
|
-
def_delegators Vedeu::DSL::Keymap, :keymap
|
62
|
-
|
63
|
-
# @!method interface
|
64
|
-
# @see Vedeu::DSL::Interface.interface
|
65
|
-
def_delegators Vedeu::DSL::Interface, :interface
|
66
|
-
|
67
|
-
# @!method render
|
68
|
-
# @see Vedeu::DSL::View.render
|
69
|
-
# @!method renders
|
70
|
-
# @see Vedeu::DSL::View.renders
|
71
|
-
# @!method views
|
72
|
-
# @see Vedeu::DSL::View.views
|
73
|
-
def_delegators Vedeu::DSL::View, :renders, :render, :views
|
74
|
-
|
75
|
-
# @!method bind
|
76
|
-
# @see Vedeu::Events::Event.bind
|
77
|
-
# @!method bound?
|
78
|
-
# @see Vedeu::Events::Event.bound?
|
79
|
-
# @!method unbind
|
80
|
-
# @see Vedeu::Events::Event.unbind
|
81
|
-
def_delegators Vedeu::Events::Event, :bind, :bound?, :unbind
|
82
|
-
|
83
|
-
# @!method bind_alias
|
84
|
-
# @see Vedeu::Events::Aliases#bind_alias
|
85
|
-
# @!method unbind_alias
|
86
|
-
# @see Vedeu::Events::Aliases#unbind_alias
|
87
|
-
def_delegators Vedeu::Events::Aliases, :bind_alias, :unbind_alias
|
88
|
-
|
89
|
-
# @!method focus
|
90
|
-
# @see Vedeu::Models::Focus#focus
|
91
|
-
# @!method focus_by_name
|
92
|
-
# @see Vedeu::Models::Focus#focus_by_name
|
93
|
-
# @!method focussed?
|
94
|
-
# @see Vedeu::Models::Focus#focussed?
|
95
|
-
# @!method focus_next
|
96
|
-
# @see Vedeu::Models::Focus#focus_next
|
97
|
-
# @!method focus_previous
|
98
|
-
# @see Vedeu::Models::Focus#focus_previous
|
99
|
-
def_delegators Vedeu::Models::Focus, :focus, :focus_by_name, :focussed?,
|
100
|
-
:focus_next, :focus_previous
|
101
|
-
|
102
|
-
# @!method log
|
103
|
-
# @see Vedeu::Logging::Log.log
|
104
|
-
# @!method log_stdout
|
105
|
-
# @see Vedeu::Logging::Log.log_stdout
|
106
|
-
# @!method log_stderr
|
107
|
-
# @see Vedeu::Logging::Log.log_stderr
|
108
|
-
def_delegators Vedeu::Logging::Log, :log, :log_stdout, :log_stderr
|
109
|
-
|
110
|
-
# @!method keypress
|
111
|
-
# @see Vedeu::Input::Mapper.keypress
|
112
|
-
def_delegators Vedeu::Input::Mapper, :keypress
|
113
|
-
|
114
|
-
# @!method menu
|
115
|
-
# @see Vedeu::Menus::Menu.menu
|
116
|
-
def_delegators Vedeu::Menus::Menu, :menu
|
117
|
-
|
118
|
-
# @!method goto
|
119
|
-
# @see Vedeu::Router#goto
|
120
|
-
def_delegators Vedeu::Router, :goto
|
121
|
-
|
122
|
-
# @!method height
|
123
|
-
# @see Vedeu::Terminal#height
|
124
|
-
def_delegators Vedeu::Terminal, :height
|
125
|
-
|
126
|
-
# @!method width
|
127
|
-
# @see Vedeu::Terminal#width
|
128
|
-
def_delegators Vedeu::Terminal, :width
|
129
|
-
|
130
|
-
# @!method trigger
|
131
|
-
# @see Vedeu::Events::Trigger.trigger
|
132
|
-
def_delegators Vedeu::Events::Trigger, :trigger
|
133
|
-
|
134
|
-
# @!method exit
|
135
|
-
# @see Vedeu::Runtime::Application.stop
|
136
|
-
def_delegators Vedeu::Runtime::Application, :exit
|
137
|
-
|
138
|
-
# @!method clear
|
139
|
-
# @see Vedeu::Terminal#clear
|
140
|
-
def_delegators Vedeu::Terminal, :clear
|
141
|
-
|
142
|
-
# @!method clear_by_name
|
143
|
-
# @see Vedeu::Clear::NamedInterface.render
|
144
|
-
def_delegators Vedeu::Clear::NamedInterface, :clear_by_name
|
145
|
-
|
146
|
-
# @!method clear_by_group
|
147
|
-
# @see Vedeu::Clear::NamedGroup.render
|
148
|
-
def_delegators Vedeu::Clear::NamedGroup, :clear_by_group
|
149
|
-
|
150
|
-
# @!method hide_cursor
|
151
|
-
# @see Vedeu::Cursors::Cursor#hide
|
152
|
-
def_delegators Vedeu::Cursors::Cursor, :hide_cursor
|
153
|
-
|
154
|
-
# @!method show_cursor
|
155
|
-
# @see Vedeu::Cursors::Cursor#show
|
156
|
-
def_delegators Vedeu::Cursors::Cursor, :show_cursor
|
157
|
-
|
158
|
-
# @!method toggle_cursor
|
159
|
-
# @see Vedeu::Cursors::Cursor#toggle
|
160
|
-
def_delegators Vedeu::Cursors::Cursor, :toggle_cursor
|
161
|
-
|
162
|
-
# @!method hide_group
|
163
|
-
# @see Vedeu::Models::Group#hide
|
164
|
-
def_delegators Vedeu::Models::Group, :hide_group
|
165
|
-
|
166
|
-
# @!method show_group
|
167
|
-
# @see Vedeu::Models::Group#show
|
168
|
-
def_delegators Vedeu::Models::Group, :show_group
|
169
|
-
|
170
|
-
# @!method toggle_group
|
171
|
-
# @see Vedeu::Models::Group#toggle
|
172
|
-
def_delegators Vedeu::Models::Group, :toggle_group
|
173
|
-
|
174
|
-
# @!method hide_interface
|
175
|
-
# @see Vedeu::Models::Interface#hide
|
176
|
-
def_delegators Vedeu::Models::Interface, :hide_interface
|
177
|
-
|
178
|
-
# @!method show_interface
|
179
|
-
# @see Vedeu::Models::Interface#show
|
180
|
-
def_delegators Vedeu::Models::Interface, :show_interface
|
181
|
-
|
182
|
-
# @!method toggle_interface
|
183
|
-
# @see Vedeu::Models::Interface#toggle
|
184
|
-
def_delegators Vedeu::Models::Interface, :toggle_interface
|
185
|
-
|
186
|
-
end # API
|
187
|
-
|
188
|
-
extend API
|
189
|
-
|
190
|
-
end # Vedeu
|
@@ -1,136 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module Buffers
|
4
|
-
|
5
|
-
# Represents a {Vedeu::Terminal} view as a grid of
|
6
|
-
# {Vedeu::Models::Cell} objects.
|
7
|
-
#
|
8
|
-
class VirtualBuffer
|
9
|
-
|
10
|
-
# @!attribute [rw] renderer
|
11
|
-
# @return [void]
|
12
|
-
attr_accessor :renderer
|
13
|
-
|
14
|
-
# @!attribute [r] height
|
15
|
-
# @return [Fixnum]
|
16
|
-
attr_reader :height
|
17
|
-
|
18
|
-
# @!attribute [r] width
|
19
|
-
# @return [Fixnum]
|
20
|
-
attr_reader :width
|
21
|
-
|
22
|
-
# @param data [Array<Array<Vedeu::Views::Char>>]
|
23
|
-
# @return [Array<Array<Vedeu::Views::Char>>]
|
24
|
-
# @see Vedeu::Buffers::VirtualBuffer#output
|
25
|
-
def self.output(data)
|
26
|
-
new(Vedeu.height, Vedeu.width, Vedeu::Renderers::HTML.new).output(data)
|
27
|
-
end
|
28
|
-
|
29
|
-
# Returns a new instance of Vedeu::Buffers::VirtualBuffer.
|
30
|
-
#
|
31
|
-
# @param height [Fixnum]
|
32
|
-
# @param width [Fixnum]
|
33
|
-
# @param renderer [Object|Vedeu::Renderers::HTML] An object
|
34
|
-
# responding to .render.
|
35
|
-
# @return [Vedeu::Buffers::VirtualBuffer]
|
36
|
-
def initialize(height, width, renderer = Vedeu::Renderers::HTML.new)
|
37
|
-
@height = height
|
38
|
-
@width = width
|
39
|
-
@renderer = renderer
|
40
|
-
end
|
41
|
-
|
42
|
-
# Return a grid of {Vedeu::Views::Char} objects defined by the
|
43
|
-
# height and width of this virtual terminal.
|
44
|
-
#
|
45
|
-
# @return [Array<Array<Vedeu::Views::Char>>]
|
46
|
-
def cells
|
47
|
-
@cells ||= new_virtual_buffer
|
48
|
-
end
|
49
|
-
|
50
|
-
# Read a single cell from the virtual terminal.
|
51
|
-
#
|
52
|
-
# @note
|
53
|
-
# Given two actual coordinates (y, x) e.g. (1, 1)
|
54
|
-
# Convert to coordinate indices (cy, cx) e.g. (0, 0)
|
55
|
-
# Fetch the row at cy and return the cell from cx
|
56
|
-
#
|
57
|
-
# @param y [Fixnum] The row/line coordinate.
|
58
|
-
# @param x [Fixnum] The column/character coordinate.
|
59
|
-
# @return [Vedeu::Views::Char]
|
60
|
-
def read(y, x)
|
61
|
-
cy, cx = Vedeu::Geometry::Position[y, x].as_indices
|
62
|
-
|
63
|
-
row = fetch(cells, cy)
|
64
|
-
cell = fetch(row, cx)
|
65
|
-
|
66
|
-
cell
|
67
|
-
end
|
68
|
-
|
69
|
-
# Write a collection of cells to the virtual terminal.
|
70
|
-
#
|
71
|
-
# @param data [Array<Array<Vedeu::Views::Char>>]
|
72
|
-
# @return [Array<Array<Vedeu::Views::Char>>]
|
73
|
-
def output(data)
|
74
|
-
Array(data).flatten.each do |char|
|
75
|
-
write(char.y, char.x, char) if char.is_a?(Vedeu::Views::Char)
|
76
|
-
end
|
77
|
-
|
78
|
-
cells
|
79
|
-
end
|
80
|
-
|
81
|
-
# Send the cells to the renderer and return the rendered result.
|
82
|
-
#
|
83
|
-
# @return [String|void] Most likely to be a String.
|
84
|
-
def render
|
85
|
-
renderer.render(cells)
|
86
|
-
end
|
87
|
-
|
88
|
-
# Removes all content from the virtual terminal; effectively
|
89
|
-
# clearing it.
|
90
|
-
#
|
91
|
-
# @return [Array<Array<Vedeu::Views::Char>>]
|
92
|
-
def reset
|
93
|
-
@cells = new_virtual_buffer
|
94
|
-
end
|
95
|
-
alias_method :clear, :reset
|
96
|
-
|
97
|
-
# Write a single cell to the virtual terminal.
|
98
|
-
#
|
99
|
-
# @note
|
100
|
-
# If the position (y, x) is nil; we're out of bounds.
|
101
|
-
# Otherwise, write the data to (cy, cx).
|
102
|
-
#
|
103
|
-
# @param y [Fixnum] The row/line coordinate.
|
104
|
-
# @param x [Fixnum] The column/character coordinate.
|
105
|
-
# @param data [Vedeu::Views::Char]
|
106
|
-
# @return [Vedeu::Views::Char]
|
107
|
-
def write(y, x, data)
|
108
|
-
return false unless read(y, x).is_a?(Vedeu::Models::Cell)
|
109
|
-
|
110
|
-
cy, cx = Vedeu::Geometry::Position[y, x].as_indices
|
111
|
-
cells[cy][cx] = data
|
112
|
-
|
113
|
-
true
|
114
|
-
end
|
115
|
-
|
116
|
-
private
|
117
|
-
|
118
|
-
# @param from [Array] An Array of rows, or an Array of cells.
|
119
|
-
# @param which [Fixnum] A Fixnum representing the index; the row
|
120
|
-
# number or the cell number for a row.
|
121
|
-
# @return [Array<Vedeu::Views::Char>|Array]
|
122
|
-
def fetch(from, which)
|
123
|
-
from[which] || []
|
124
|
-
end
|
125
|
-
|
126
|
-
# @return [Array<Array<Vedeu::Models::Cell>>]
|
127
|
-
# @see Vedeu::Buffers::VirtualBuffer#cells
|
128
|
-
def new_virtual_buffer
|
129
|
-
Array.new(height) { Array.new(width) { Vedeu::Models::Cell.new } }
|
130
|
-
end
|
131
|
-
|
132
|
-
end # VirtualBuffer
|
133
|
-
|
134
|
-
end # Buffers
|
135
|
-
|
136
|
-
end # Vedeu
|
@@ -1,77 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module Buffers
|
4
|
-
|
5
|
-
# Store and retrieve {Vedeu::Buffers::VirtualBuffer} objects.
|
6
|
-
#
|
7
|
-
# Each {Vedeu::Buffers::VirtualBuffer} object is a copy of the
|
8
|
-
# current terminal including content but not as String objects but
|
9
|
-
# {Vedeu::Views::Char} objects. Using {Vedeu::Views::Char} objects
|
10
|
-
# means that we can store the data used to make up the displayed
|
11
|
-
# character, complete with its colour, position and style.
|
12
|
-
#
|
13
|
-
# Once a {Vedeu::Views::Char} has been converted to a String, it
|
14
|
-
# is tricky to separate the escape sequences and string data. By
|
15
|
-
# deferring this conversion we can display the
|
16
|
-
# {Vedeu::Views::Char} in multiple ways (e.g. HTML) or in multiple
|
17
|
-
# formats (e.g. JSON), and render/use that in an appropriate way.
|
18
|
-
#
|
19
|
-
module VirtualBuffers
|
20
|
-
|
21
|
-
extend self
|
22
|
-
|
23
|
-
# Fetch the oldest stored virtual buffer first.
|
24
|
-
#
|
25
|
-
# @return [Array<Array<Vedeu::Views::Char>>|NilClass]
|
26
|
-
def retrieve
|
27
|
-
Vedeu.log(type: :drb, message: 'Retrieving output')
|
28
|
-
|
29
|
-
storage.pop
|
30
|
-
end
|
31
|
-
|
32
|
-
# Store a new virtual buffer.
|
33
|
-
#
|
34
|
-
# @return [Array<Array<Vedeu::Views::Char>>]
|
35
|
-
def store(data)
|
36
|
-
Vedeu.log(type: :drb, message: 'Storing output')
|
37
|
-
|
38
|
-
storage.unshift(data)
|
39
|
-
end
|
40
|
-
|
41
|
-
# Return the number of virtual buffers currently stored.
|
42
|
-
#
|
43
|
-
# @return [Fixnum]
|
44
|
-
def size
|
45
|
-
storage.size
|
46
|
-
end
|
47
|
-
|
48
|
-
# Destroy all virtual buffers currently stored.
|
49
|
-
#
|
50
|
-
# @return [Array]
|
51
|
-
def clear
|
52
|
-
@storage = in_memory
|
53
|
-
end
|
54
|
-
alias_method :reset, :clear
|
55
|
-
|
56
|
-
private
|
57
|
-
|
58
|
-
# Access to the storage for this repository.
|
59
|
-
#
|
60
|
-
# @return [Array]
|
61
|
-
def storage
|
62
|
-
@storage ||= in_memory
|
63
|
-
end
|
64
|
-
|
65
|
-
# Returns an empty collection ready for the storing of virtual
|
66
|
-
# buffers.
|
67
|
-
#
|
68
|
-
# @return [Array]
|
69
|
-
def in_memory
|
70
|
-
[]
|
71
|
-
end
|
72
|
-
|
73
|
-
end # VirtualBuffers
|
74
|
-
|
75
|
-
end # Buffers
|
76
|
-
|
77
|
-
end # Vedeu
|
data/lib/vedeu/internal_api.rb
DELETED
@@ -1,173 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
# Vedeu's internal API methods provide convenient ways to access
|
4
|
-
# Vedeu's internals. They are not supposed to be used by client
|
5
|
-
# applications as they have limited value there.
|
6
|
-
#
|
7
|
-
module InternalAPI
|
8
|
-
|
9
|
-
extend Forwardable
|
10
|
-
|
11
|
-
module_function
|
12
|
-
|
13
|
-
# Manipulate the repository of background colours.
|
14
|
-
#
|
15
|
-
# @example
|
16
|
-
# Vedeu.background_colours
|
17
|
-
#
|
18
|
-
# @!method background_colours
|
19
|
-
# @return [Vedeu::Colours::Backgrounds]
|
20
|
-
def_delegators Vedeu::Colours::Backgrounds, :background_colours
|
21
|
-
|
22
|
-
# Manipulate the repository of borders.
|
23
|
-
#
|
24
|
-
# @example
|
25
|
-
# Vedeu.borders
|
26
|
-
#
|
27
|
-
# @!method borders
|
28
|
-
# @return [Vedeu::Borders::Repository]
|
29
|
-
def_delegators Vedeu::Borders::Repository, :borders
|
30
|
-
|
31
|
-
# Manipulate the repository of buffers.
|
32
|
-
#
|
33
|
-
# @example
|
34
|
-
# Vedeu.buffers
|
35
|
-
#
|
36
|
-
# @!method buffers
|
37
|
-
# @return [Vedeu::Buffers::Repository]
|
38
|
-
def_delegators Vedeu::Buffers::Repository, :buffers
|
39
|
-
|
40
|
-
# Manipulate the repository of cursors.
|
41
|
-
#
|
42
|
-
# @example
|
43
|
-
# Vedeu.cursors
|
44
|
-
#
|
45
|
-
# @!method cursors
|
46
|
-
# @return [Vedeu::Cursors::Repository]
|
47
|
-
def_delegators Vedeu::Cursors::Repository, :cursors
|
48
|
-
|
49
|
-
# Allow debugging via the creation of stack traces courtesy of
|
50
|
-
# ruby-prof.
|
51
|
-
#
|
52
|
-
# @example
|
53
|
-
# Vedeu.debug
|
54
|
-
#
|
55
|
-
# @!method debug
|
56
|
-
# @return [Vedeu::Logging::Debug]
|
57
|
-
def_delegators Vedeu::Logging::Debug, :debug
|
58
|
-
|
59
|
-
# Manipulate the repository of documents.
|
60
|
-
#
|
61
|
-
# @example
|
62
|
-
# Vedeu.documents
|
63
|
-
#
|
64
|
-
# @!method documents
|
65
|
-
# @return [Vedeu::Editor::Documents]
|
66
|
-
def_delegators Vedeu::Editor::Documents, :documents
|
67
|
-
|
68
|
-
# Manipulate the repository of events.
|
69
|
-
#
|
70
|
-
# @example
|
71
|
-
# Vedeu.events
|
72
|
-
#
|
73
|
-
# @!method events
|
74
|
-
# @return [Vedeu::Events::Repository]
|
75
|
-
def_delegators Vedeu::Events::Repository, :events
|
76
|
-
|
77
|
-
# Manipulate the repository of foreground colours.
|
78
|
-
#
|
79
|
-
# @example
|
80
|
-
# Vedeu.foreground_colours
|
81
|
-
#
|
82
|
-
# @!method foreground_colours
|
83
|
-
# @return [Vedeu::Colours::Foregrounds]
|
84
|
-
def_delegators Vedeu::Colours::Foregrounds, :foreground_colours
|
85
|
-
|
86
|
-
# Manipulate the repository of geometries.
|
87
|
-
#
|
88
|
-
# @example
|
89
|
-
# Vedeu.geometries
|
90
|
-
#
|
91
|
-
# @!method geometries
|
92
|
-
# @return [Vedeu::Geometry::Repository]
|
93
|
-
def_delegators Vedeu::Geometry::Repository, :geometries
|
94
|
-
|
95
|
-
# Manipulate the repository of groups.
|
96
|
-
#
|
97
|
-
# @example
|
98
|
-
# Vedeu.groups
|
99
|
-
#
|
100
|
-
# @!method groups
|
101
|
-
# @return [Vedeu::Models::Groups]
|
102
|
-
def_delegators Vedeu::Models::Groups, :groups
|
103
|
-
|
104
|
-
# Manipulate the repository of interfaces.
|
105
|
-
#
|
106
|
-
# @example
|
107
|
-
# Vedeu.interfaces
|
108
|
-
#
|
109
|
-
# @!method interfaces
|
110
|
-
# @return [Vedeu::Models::Interfaces]
|
111
|
-
def_delegators Vedeu::Models::Interfaces, :interfaces
|
112
|
-
|
113
|
-
# Manipulate the repository of keymaps.
|
114
|
-
#
|
115
|
-
# @example
|
116
|
-
# Vedeu.keymaps
|
117
|
-
#
|
118
|
-
# @!method keymaps
|
119
|
-
# @return [Vedeu::Input::Keymaps]
|
120
|
-
def_delegators Vedeu::Input::Keymaps, :keymaps
|
121
|
-
|
122
|
-
# Manipulate the repository of menus.
|
123
|
-
#
|
124
|
-
# @example
|
125
|
-
# Vedeu.menus
|
126
|
-
#
|
127
|
-
# @!method menus
|
128
|
-
# @return [Vedeu::Menus::Repository]
|
129
|
-
def_delegators Vedeu::Menus::Repository, :menus
|
130
|
-
|
131
|
-
# Manipulate the internal flags.
|
132
|
-
#
|
133
|
-
# @!method ready?
|
134
|
-
# @!method ready!
|
135
|
-
# @return [Boolean]
|
136
|
-
def_delegators Vedeu::Runtime::Flags, :ready?, :ready!
|
137
|
-
|
138
|
-
# @example
|
139
|
-
# Vedeu.renderer
|
140
|
-
# Vedeu.renderers
|
141
|
-
#
|
142
|
-
# @!method renderer
|
143
|
-
# @see Vedeu::Renderers#renderer
|
144
|
-
# @!method renderers
|
145
|
-
# @see Vedeu::Renderers#renderers
|
146
|
-
def_delegators Vedeu::Renderers, :renderer, :renderers
|
147
|
-
|
148
|
-
# Instruct the terminal to resize. This will happen automatically
|
149
|
-
# as the terminal recieves SIGWINCH signals.
|
150
|
-
#
|
151
|
-
# @example
|
152
|
-
# Vedeu.resize
|
153
|
-
#
|
154
|
-
# @!method resize
|
155
|
-
# @see Vedeu::Terminal#resize
|
156
|
-
def_delegators Vedeu::Terminal, :resize
|
157
|
-
|
158
|
-
# Measure the execution time of the code in the given block.
|
159
|
-
#
|
160
|
-
# @example
|
161
|
-
# Vedeu.timer do
|
162
|
-
# # ... some code here ...
|
163
|
-
# end
|
164
|
-
#
|
165
|
-
# @!method timer
|
166
|
-
# @see Vedeu::Logging::Timer.timer
|
167
|
-
def_delegators Vedeu::Logging::Timer, :timer
|
168
|
-
|
169
|
-
end # InternalAPI
|
170
|
-
|
171
|
-
extend InternalAPI
|
172
|
-
|
173
|
-
end # Vedeu
|