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.
- 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
|