vedeu 0.6.20 → 0.6.21
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/.yardopts +1 -1
- data/README.md +4 -0
- data/Rakefile +13 -0
- data/bin/vedeu_drb_server +6 -6
- data/docs/api.md +14 -0
- data/docs/dsl.md +12 -12
- data/docs/events/document.md +4 -2
- data/docs/events/drb.md +4 -0
- data/docs/events/focus.md +2 -0
- data/docs/events/menu.md +2 -0
- data/docs/events/movement.md +7 -5
- data/docs/events/refresh.md +2 -0
- data/docs/events/system.md +5 -0
- data/docs/events/view.md +2 -0
- data/docs/events/visibility.md +2 -0
- data/lib/vedeu.rb +0 -23
- data/lib/vedeu/all.rb +2 -4
- data/lib/vedeu/application/application_view.rb +1 -1
- data/lib/vedeu/borders/all.rb +3 -3
- data/lib/vedeu/borders/border.rb +2 -2
- data/lib/vedeu/borders/dsl.rb +21 -27
- data/lib/vedeu/borders/null.rb +2 -15
- data/lib/vedeu/borders/render.rb +1 -1
- data/lib/vedeu/borders/repository.rb +9 -0
- data/lib/vedeu/buffers/buffer.rb +2 -2
- data/lib/vedeu/buffers/null.rb +1 -31
- data/lib/vedeu/buffers/refresh.rb +8 -8
- data/lib/vedeu/buffers/repository.rb +9 -0
- data/lib/vedeu/colours/backgrounds.rb +9 -0
- data/lib/vedeu/colours/colour.rb +1 -1
- data/lib/vedeu/colours/foregrounds.rb +9 -0
- data/lib/vedeu/common.rb +22 -13
- data/lib/vedeu/configuration/configuration.rb +6 -0
- data/lib/vedeu/cursors/cursor.rb +13 -8
- data/lib/vedeu/cursors/refresh.rb +2 -2
- data/lib/vedeu/cursors/repository.rb +18 -1
- data/lib/vedeu/distributed/server.rb +23 -0
- data/lib/vedeu/distributed/templates/default_borders.vedeu +1 -1
- data/lib/vedeu/distributed/templates/default_geometries.vedeu +1 -1
- data/lib/vedeu/distributed/templates/default_interfaces.vedeu +1 -1
- data/lib/vedeu/distributed/templates/default_keymaps.vedeu +1 -1
- data/lib/vedeu/distributed/templates/default_menus.vedeu +1 -1
- data/lib/vedeu/distributed/templates/default_views.vedeu +1 -1
- data/lib/vedeu/dsl/composition.rb +7 -17
- data/lib/vedeu/dsl/dsl.rb +12 -0
- data/lib/vedeu/dsl/interface.rb +32 -33
- data/lib/vedeu/dsl/keymap.rb +13 -19
- data/lib/vedeu/dsl/line.rb +3 -13
- data/lib/vedeu/dsl/shared.rb +5 -5
- data/lib/vedeu/dsl/stream.rb +0 -10
- data/lib/vedeu/dsl/use.rb +6 -6
- data/lib/vedeu/dsl/view.rb +17 -19
- data/lib/vedeu/editor/cursor.rb +32 -10
- data/lib/vedeu/editor/document.rb +33 -35
- data/lib/vedeu/editor/editor.rb +3 -4
- data/lib/vedeu/editor/insert.rb +1 -1
- data/lib/vedeu/editor/line.rb +1 -8
- data/lib/vedeu/editor/lines.rb +1 -1
- data/lib/vedeu/editor/repository.rb +9 -0
- data/lib/vedeu/esc/esc.rb +2 -1
- data/lib/vedeu/events/aliases.rb +8 -1
- data/lib/vedeu/events/event.rb +8 -0
- data/lib/vedeu/events/repository.rb +9 -0
- data/lib/vedeu/events/trigger.rb +9 -5
- data/lib/vedeu/geometry/coordinate.rb +2 -2
- data/lib/vedeu/geometry/dsl.rb +32 -38
- data/lib/vedeu/geometry/generic_coordinate.rb +1 -1
- data/lib/vedeu/geometry/geometry.rb +3 -3
- data/lib/vedeu/geometry/null.rb +2 -24
- data/lib/vedeu/geometry/repository.rb +9 -0
- data/lib/vedeu/groups/clear.rb +7 -3
- data/lib/vedeu/groups/dsl.rb +29 -35
- data/lib/vedeu/groups/group.rb +28 -4
- data/lib/vedeu/groups/refresh.rb +3 -2
- data/lib/vedeu/groups/repository.rb +9 -0
- data/lib/vedeu/input/capture.rb +1 -1
- data/lib/vedeu/input/keymap.rb +2 -1
- data/lib/vedeu/input/keymaps.rb +9 -0
- data/lib/vedeu/input/mapper.rb +4 -0
- data/lib/vedeu/input/translator.rb +1 -1
- data/lib/vedeu/logging/debug.rb +13 -0
- data/lib/vedeu/logging/log.rb +8 -0
- data/lib/vedeu/logging/timer.rb +13 -0
- data/lib/vedeu/menus/dsl.rb +8 -18
- data/lib/vedeu/menus/menu.rb +8 -4
- data/lib/vedeu/menus/null.rb +1 -1
- data/lib/vedeu/menus/repository.rb +9 -0
- data/lib/vedeu/models/cell.rb +5 -0
- data/lib/vedeu/models/escape.rb +5 -0
- data/lib/vedeu/models/focus.rb +20 -5
- data/lib/vedeu/models/interface.rb +10 -1
- data/lib/vedeu/models/interfaces.rb +9 -0
- data/lib/vedeu/models/toggleable.rb +19 -4
- data/lib/vedeu/models/views/char.rb +6 -1
- data/lib/vedeu/models/views/html_char.rb +1 -4
- data/lib/vedeu/models/views/line.rb +1 -1
- data/lib/vedeu/models/views/view.rb +1 -1
- data/lib/vedeu/null/generic.rb +14 -2
- data/lib/vedeu/null/interface.rb +1 -1
- data/lib/vedeu/null/view.rb +1 -1
- data/lib/vedeu/output/clear/interface.rb +5 -1
- data/lib/vedeu/output/compressor.rb +8 -4
- data/lib/vedeu/output/direct.rb +4 -4
- data/lib/vedeu/output/presentation/all.rb +15 -0
- data/lib/vedeu/output/presentation/presentation.rb +0 -7
- data/lib/vedeu/output/refresh/refresh.rb +1 -3
- data/lib/vedeu/output/renderers/all.rb +10 -0
- data/lib/vedeu/output/renderers/terminal.rb +1 -3
- data/lib/vedeu/repositories/collection.rb +3 -3
- data/lib/vedeu/repositories/model.rb +1 -1
- data/lib/vedeu/repositories/repository.rb +8 -8
- data/lib/vedeu/repositories/store.rb +3 -2
- data/lib/vedeu/runtime/application.rb +4 -0
- data/lib/vedeu/runtime/bootstrap.rb +1 -1
- data/lib/vedeu/runtime/flags.rb +7 -0
- data/lib/vedeu/runtime/main_loop.rb +2 -0
- data/lib/vedeu/runtime/router.rb +4 -0
- data/lib/vedeu/templating/decoder.rb +1 -1
- data/lib/vedeu/templating/encoder.rb +1 -1
- data/lib/vedeu/templating/helpers.rb +2 -0
- data/lib/vedeu/templating/template.rb +1 -1
- data/lib/vedeu/terminal/buffer.rb +7 -0
- data/lib/vedeu/terminal/terminal.rb +8 -0
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/borders/dsl_test.rb +0 -6
- data/test/lib/vedeu/borders/null_test.rb +0 -12
- data/test/lib/vedeu/buffers/null_test.rb +0 -37
- data/test/lib/vedeu/common_test.rb +33 -0
- data/test/lib/vedeu/cursors/cursor_test.rb +1 -1
- data/test/lib/vedeu/dsl/composition_test.rb +0 -6
- data/test/lib/vedeu/dsl/dsl_test.rb +1 -0
- data/test/lib/vedeu/dsl/interface_test.rb +0 -6
- data/test/lib/vedeu/dsl/keymap_test.rb +0 -5
- data/test/lib/vedeu/dsl/line_test.rb +0 -7
- data/test/lib/vedeu/dsl/stream_test.rb +0 -7
- data/test/lib/vedeu/editor/cursor_test.rb +23 -8
- data/test/lib/vedeu/editor/document_test.rb +27 -23
- data/test/lib/vedeu/editor/line_test.rb +0 -30
- data/test/lib/vedeu/geometry/dsl_test.rb +0 -5
- data/test/lib/vedeu/geometry/null_test.rb +0 -30
- data/test/lib/vedeu/groups/dsl_test.rb +0 -6
- data/test/lib/vedeu/groups/group_test.rb +15 -7
- data/test/lib/vedeu/menus/dsl_test.rb +0 -5
- data/test/lib/vedeu/models/cell_test.rb +4 -0
- data/test/lib/vedeu/models/escape_test.rb +4 -0
- data/test/lib/vedeu/models/views/char_test.rb +4 -0
- data/test/lib/vedeu/null/generic_test.rb +13 -0
- data/test/lib/vedeu/terminal/buffer_test.rb +3 -2
- data/test/lib/vedeu_test.rb +81 -3
- data/test/support/examples/borders_app.rb +1 -3
- data/test/support/examples/drb_app.rb +1 -3
- data/test/support/examples/editor_app.rb +2 -4
- data/test/support/examples/focus_app.rb +1 -3
- data/test/support/examples/hello_world.rb +1 -6
- data/test/support/examples/material_colours_app.rb +1 -3
- data/test/support/examples/view_templates_app/view_templates_app.rb +1 -3
- data/test/support/helpers/model_test_class.rb +1 -5
- data/test/support/who.rb +29 -0
- data/test/test_helper.rb +0 -1
- metadata +5 -17
- data/lib/vedeu/api/all.rb +0 -15
- data/lib/vedeu/api/external.rb +0 -194
- data/lib/vedeu/api/internal.rb +0 -177
- data/test/lib/vedeu/api/external_test.rb +0 -74
- data/test/lib/vedeu/api/internal_test.rb +0 -33
- data/test/support/examples/typed_commands/command.erb +0 -1
- data/test/support/examples/typed_commands/output.erb +0 -1
- data/test/support/examples/typed_commands/status.erb +0 -1
- data/test/support/examples/typed_commands/typed_commands_app.rb +0 -94
data/lib/vedeu/dsl/keymap.rb
CHANGED
@@ -17,7 +17,7 @@ module Vedeu
|
|
17
17
|
# assumed to be global, meaning its action will happen
|
18
18
|
# regardless of the interface in focus.
|
19
19
|
#
|
20
|
-
# Vedeu.keymap
|
20
|
+
# Vedeu.keymap :my_interface do
|
21
21
|
# key('s') { Vedeu.trigger(:save) }
|
22
22
|
# key('h', :left) { Vedeu.trigger(:left) }
|
23
23
|
# key('j', :down) { Vedeu.trigger(:down) }
|
@@ -29,13 +29,13 @@ module Vedeu
|
|
29
29
|
#
|
30
30
|
# # or...
|
31
31
|
#
|
32
|
-
# Vedeu.keys
|
32
|
+
# Vedeu.keys :my_interface do
|
33
33
|
# # ... some code
|
34
34
|
# end
|
35
35
|
#
|
36
36
|
# # or...
|
37
37
|
#
|
38
|
-
# Vedeu.interface
|
38
|
+
# Vedeu.interface :my_interface do
|
39
39
|
# keymap do
|
40
40
|
# # ... some code
|
41
41
|
# end # or...
|
@@ -45,8 +45,8 @@ module Vedeu
|
|
45
45
|
# end
|
46
46
|
# end
|
47
47
|
#
|
48
|
-
# @param name [String] The name of the interface which
|
49
|
-
# keymap relates to.
|
48
|
+
# @param name [String|Symbol] The name of the interface which
|
49
|
+
# this keymap relates to.
|
50
50
|
# @param block [Proc]
|
51
51
|
# @raise [Vedeu::Error::RequiresBlock]
|
52
52
|
# @return [Vedeu::Input::Keymap]
|
@@ -58,16 +58,6 @@ module Vedeu
|
|
58
58
|
Vedeu::Input::Keymap.build(name: name, &block).store
|
59
59
|
end
|
60
60
|
|
61
|
-
# Returns an instance of DSL::Keymap.
|
62
|
-
#
|
63
|
-
# @param model [Vedeu::Input::Keymap]
|
64
|
-
# @param client [Object]
|
65
|
-
# @return [Vedeu::DSL::Keymap]
|
66
|
-
def initialize(model, client = nil)
|
67
|
-
@model = model
|
68
|
-
@client = client
|
69
|
-
end
|
70
|
-
|
71
61
|
# Define keypress(es) to perform an action.
|
72
62
|
#
|
73
63
|
# @param values [Array<String>|Array<Symbol>|String|Symbol]
|
@@ -104,16 +94,16 @@ module Vedeu
|
|
104
94
|
# To only allow certain keys to work with specific interfaces,
|
105
95
|
# use the same name as the interface.
|
106
96
|
#
|
107
|
-
# When the name
|
97
|
+
# When the name :_global_ is used, all keys in the keymap block
|
108
98
|
# will be available to all interfaces. Once a key has been
|
109
|
-
# defined in the
|
99
|
+
# defined in the :_global_ keymap, it cannot be used for a
|
110
100
|
# specific interface.
|
111
101
|
#
|
112
102
|
# Vedeu.keymap do
|
113
|
-
# name
|
103
|
+
# name :some_interface
|
114
104
|
# end
|
115
105
|
#
|
116
|
-
# @param value [String]
|
106
|
+
# @param value [String|Symbol]
|
117
107
|
# @return [String]
|
118
108
|
def name(value)
|
119
109
|
model.name = value
|
@@ -124,4 +114,8 @@ module Vedeu
|
|
124
114
|
|
125
115
|
end # DSL
|
126
116
|
|
117
|
+
# @!method keymap
|
118
|
+
# @see Vedeu::DSL::Keymap.keymap
|
119
|
+
def_delegators Vedeu::DSL::Keymap, :keymap
|
120
|
+
|
127
121
|
end # Vedeu
|
data/lib/vedeu/dsl/line.rb
CHANGED
@@ -5,7 +5,7 @@ module Vedeu
|
|
5
5
|
# Provides methods to be used to define views.
|
6
6
|
#
|
7
7
|
# Vedeu.renders do
|
8
|
-
# view
|
8
|
+
# view :my_interface do
|
9
9
|
# lines do
|
10
10
|
# background '#000000'
|
11
11
|
# foreground '#ffffff'
|
@@ -36,20 +36,10 @@ module Vedeu
|
|
36
36
|
include Vedeu::DSL::Presentation
|
37
37
|
include Vedeu::DSL::Text
|
38
38
|
|
39
|
-
# Returns an instance of DSL::Line.
|
40
|
-
#
|
41
|
-
# @param model [Vedeu::Views::Line]
|
42
|
-
# @param client [Object]
|
43
|
-
# @return [Vedeu::DSL::Line]
|
44
|
-
def initialize(model, client = nil)
|
45
|
-
@model = model
|
46
|
-
@client = client
|
47
|
-
end
|
48
|
-
|
49
39
|
# Specify a single line in a view.
|
50
40
|
#
|
51
41
|
# Vedeu.renders do
|
52
|
-
# view
|
42
|
+
# view :my_interface do
|
53
43
|
# line 'some text...'
|
54
44
|
# # ... some code
|
55
45
|
#
|
@@ -85,7 +75,7 @@ module Vedeu
|
|
85
75
|
# required block.
|
86
76
|
#
|
87
77
|
# Vedeu.renders do
|
88
|
-
# view
|
78
|
+
# view :my_interface do
|
89
79
|
# line do
|
90
80
|
# streams do
|
91
81
|
# # ... some code
|
data/lib/vedeu/dsl/shared.rb
CHANGED
@@ -10,14 +10,14 @@ module Vedeu
|
|
10
10
|
# Allows the setting of a border for the interface.
|
11
11
|
#
|
12
12
|
# @example
|
13
|
-
# Vedeu.interface
|
13
|
+
# Vedeu.interface :my_interface do
|
14
14
|
# border do
|
15
15
|
# # ... see Vedeu::Borders::DSL for DSL methods for
|
16
16
|
# # borders.
|
17
17
|
# end
|
18
18
|
# end
|
19
19
|
#
|
20
|
-
# @param name [String] The name of the interface; this is
|
20
|
+
# @param name [String|Symbol] The name of the interface; this is
|
21
21
|
# already provided when we define the interface or view,
|
22
22
|
# setting it here is just mirroring functionality of
|
23
23
|
# {Vedeu::Borders::DSL.border}.
|
@@ -39,7 +39,7 @@ module Vedeu
|
|
39
39
|
# Applies the default border to the interface.
|
40
40
|
#
|
41
41
|
# @example
|
42
|
-
# Vedeu.interface
|
42
|
+
# Vedeu.interface :my_interface do
|
43
43
|
# border!
|
44
44
|
#
|
45
45
|
# # ... some code
|
@@ -55,14 +55,14 @@ module Vedeu
|
|
55
55
|
# Define the geometry for an interface.
|
56
56
|
#
|
57
57
|
# @example
|
58
|
-
# Vedeu.interface
|
58
|
+
# Vedeu.interface :my_interface do
|
59
59
|
# geometry do
|
60
60
|
# # ... see Vedeu::Geometry::DSL for DSL methods for
|
61
61
|
# # geometries.
|
62
62
|
# end
|
63
63
|
# end
|
64
64
|
#
|
65
|
-
# @param name [String] The name of the interface; this is
|
65
|
+
# @param name [String|Symbol] The name of the interface; this is
|
66
66
|
# already provided when we define the interface or view,
|
67
67
|
# setting it here is just mirroring functionality of
|
68
68
|
# {Vedeu::Geometry::DSL.geometry}.
|
data/lib/vedeu/dsl/stream.rb
CHANGED
@@ -10,16 +10,6 @@ module Vedeu
|
|
10
10
|
include Vedeu::DSL::Presentation
|
11
11
|
include Vedeu::DSL::Text
|
12
12
|
|
13
|
-
# Returns an instance of Vedeu::DSL::Stream.
|
14
|
-
#
|
15
|
-
# @param model [Vedeu::Views::Stream]
|
16
|
-
# @param client [Object]
|
17
|
-
# @return [Vedeu::DSL::Stream]
|
18
|
-
def initialize(model, client = nil)
|
19
|
-
@model = model
|
20
|
-
@client = client
|
21
|
-
end
|
22
|
-
|
23
13
|
# @param block [Proc]
|
24
14
|
# @raise [Vedeu::Error::RequiresBlock]
|
25
15
|
# @return [void]
|
data/lib/vedeu/dsl/use.rb
CHANGED
@@ -14,10 +14,10 @@ module Vedeu
|
|
14
14
|
# Border, Geometry and Interface.
|
15
15
|
#
|
16
16
|
# @example
|
17
|
-
# # Here the character used for
|
18
|
-
# #
|
19
|
-
# Vedeu.border
|
20
|
-
# top_right use(
|
17
|
+
# # Here the character used for :my_border is used in
|
18
|
+
# # :my_other_border.
|
19
|
+
# Vedeu.border :my_other_border do
|
20
|
+
# top_right use(:my_border).top_right
|
21
21
|
# end
|
22
22
|
#
|
23
23
|
# @note
|
@@ -27,8 +27,8 @@ module Vedeu
|
|
27
27
|
# exception may be raised, or the request for an attribute
|
28
28
|
# may raise a NoMethodError exception.
|
29
29
|
#
|
30
|
-
# @param name [String] The name of the model with the
|
31
|
-
# wish to use.
|
30
|
+
# @param name [String|Symbol] The name of the model with the
|
31
|
+
# value you wish to use.
|
32
32
|
# @raise
|
33
33
|
# [Vedeu::Error::ModelNotFound|Vedeu::Error::NoMethodError]
|
34
34
|
# The model or attribute cannot be found.
|
data/lib/vedeu/dsl/view.rb
CHANGED
@@ -15,7 +15,7 @@ module Vedeu
|
|
15
15
|
# you use these examples, ensure your terminal is at least 70
|
16
16
|
# characters in width and 5 lines in height.)
|
17
17
|
#
|
18
|
-
# Vedeu.interface
|
18
|
+
# Vedeu.interface :main do
|
19
19
|
# geometry do
|
20
20
|
# centred!
|
21
21
|
# height 4
|
@@ -23,7 +23,7 @@ module Vedeu
|
|
23
23
|
# end
|
24
24
|
# end
|
25
25
|
#
|
26
|
-
# Vedeu.interface
|
26
|
+
# Vedeu.interface :title do
|
27
27
|
# geometry do
|
28
28
|
# height 1
|
29
29
|
# width 50
|
@@ -100,7 +100,7 @@ module Vedeu
|
|
100
100
|
# triggered when needed.
|
101
101
|
#
|
102
102
|
# Vedeu.renders do
|
103
|
-
# view
|
103
|
+
# view :some_interface do
|
104
104
|
# line do
|
105
105
|
# stream do
|
106
106
|
# left 'Title goes here', width: 35
|
@@ -110,7 +110,7 @@ module Vedeu
|
|
110
110
|
# end
|
111
111
|
# end
|
112
112
|
# end
|
113
|
-
# view
|
113
|
+
# view :other_interface do
|
114
114
|
# lines do
|
115
115
|
# line 'This is content for the main interface.'
|
116
116
|
# line ''
|
@@ -123,7 +123,7 @@ module Vedeu
|
|
123
123
|
# # or...
|
124
124
|
#
|
125
125
|
# Vedeu.render do
|
126
|
-
# view
|
126
|
+
# view :my_interface do
|
127
127
|
# # ... some code
|
128
128
|
# end
|
129
129
|
# end
|
@@ -153,7 +153,7 @@ module Vedeu
|
|
153
153
|
# here will be rendered to {Vedeu::Terminal#output}.
|
154
154
|
#
|
155
155
|
# Vedeu.views do
|
156
|
-
# view
|
156
|
+
# view :some_interface do
|
157
157
|
# line do
|
158
158
|
# stream do
|
159
159
|
# left 'Title goes here', width: 35
|
@@ -163,7 +163,7 @@ module Vedeu
|
|
163
163
|
# end
|
164
164
|
# end
|
165
165
|
# end
|
166
|
-
# view
|
166
|
+
# view :other_interface do
|
167
167
|
# lines do
|
168
168
|
# line 'This is content for the main interface.'
|
169
169
|
# line ''
|
@@ -220,28 +220,18 @@ module Vedeu
|
|
220
220
|
|
221
221
|
end # Eigenclass
|
222
222
|
|
223
|
-
# Returns an instance of Vedeu::DSL::View.
|
224
|
-
#
|
225
|
-
# @param model [Vedeu::DSL::View]
|
226
|
-
# @param client [Object]
|
227
|
-
# @return [Vedeu::DSL::View]
|
228
|
-
def initialize(model, client = nil)
|
229
|
-
@model = model
|
230
|
-
@client = client
|
231
|
-
end
|
232
|
-
|
233
223
|
# Specify multiple lines in a view.
|
234
224
|
#
|
235
225
|
# @param block [Proc]
|
236
226
|
#
|
237
227
|
# @example
|
238
|
-
# Vedeu.view
|
228
|
+
# Vedeu.view :my_interface do
|
239
229
|
# lines do
|
240
230
|
# # ... see {Vedeu::DSL::Line} and {Vedeu::DSL::Stream}
|
241
231
|
# end
|
242
232
|
# end
|
243
233
|
#
|
244
|
-
# Vedeu.view
|
234
|
+
# Vedeu.view :my_interface do
|
245
235
|
# line do
|
246
236
|
# # ... see {Vedeu::DSL::Line} and {Vedeu::DSL::Stream}
|
247
237
|
# end
|
@@ -260,4 +250,12 @@ module Vedeu
|
|
260
250
|
|
261
251
|
end # DSL
|
262
252
|
|
253
|
+
# @!method render
|
254
|
+
# @see Vedeu::DSL::View.render
|
255
|
+
# @!method renders
|
256
|
+
# @see Vedeu::DSL::View.renders
|
257
|
+
# @!method views
|
258
|
+
# @see Vedeu::DSL::View.views
|
259
|
+
def_delegators Vedeu::DSL::View, :renders, :render, :views
|
260
|
+
|
263
261
|
end # Vedeu
|
data/lib/vedeu/editor/cursor.rb
CHANGED
@@ -23,6 +23,10 @@ module Vedeu
|
|
23
23
|
# @return [Fixnum]
|
24
24
|
attr_accessor :byn
|
25
25
|
|
26
|
+
# @!attribute [r] name
|
27
|
+
# @return [String|Symbol]
|
28
|
+
attr_reader :name
|
29
|
+
|
26
30
|
# @!attribute [rw] ox
|
27
31
|
# @return [Fixnum]
|
28
32
|
attr_accessor :ox
|
@@ -49,6 +53,7 @@ module Vedeu
|
|
49
53
|
# @option attributes bx [Fixnum]
|
50
54
|
# @option attributes byn [Fixnum]
|
51
55
|
# @option attributes bxn [Fixnum]
|
56
|
+
# @option attributes name [String|Symbol]
|
52
57
|
# @option attributes oy [Fixnum]
|
53
58
|
# @option attributes ox [Fixnum]
|
54
59
|
# @return [Vedeu::Editor::Cursor]
|
@@ -87,6 +92,22 @@ module Vedeu
|
|
87
92
|
self
|
88
93
|
end
|
89
94
|
|
95
|
+
# Overwrite the cursor of the same name. This ensure that on
|
96
|
+
# refresh the cursor stays in the correct position for the
|
97
|
+
# document being edited.
|
98
|
+
#
|
99
|
+
# @return [Vedeu::Editor::Cursor]
|
100
|
+
def store
|
101
|
+
Vedeu::Cursors::Cursor.store(name: name,
|
102
|
+
x: real_x,
|
103
|
+
y: real_y,
|
104
|
+
ox: 0,
|
105
|
+
oy: 0,
|
106
|
+
visible: true)
|
107
|
+
|
108
|
+
self
|
109
|
+
end
|
110
|
+
|
90
111
|
# Move the virtual cursor to the origin (0, 0).
|
91
112
|
#
|
92
113
|
# @return [Vedeu::Editor::Cursor]
|
@@ -108,8 +129,8 @@ module Vedeu
|
|
108
129
|
self
|
109
130
|
end
|
110
131
|
|
111
|
-
# Return the escape sequence for setting the cursor
|
112
|
-
# show the cursor.
|
132
|
+
# Return the escape sequence as a string for setting the cursor
|
133
|
+
# position and show the cursor.
|
113
134
|
#
|
114
135
|
# @return [String]
|
115
136
|
def to_s
|
@@ -149,14 +170,15 @@ module Vedeu
|
|
149
170
|
# @return [Hash<Symbol => Fixnum|NilClass>]
|
150
171
|
def defaults
|
151
172
|
{
|
152
|
-
y:
|
153
|
-
x:
|
154
|
-
by:
|
155
|
-
bx:
|
156
|
-
byn:
|
157
|
-
bxn:
|
158
|
-
|
159
|
-
|
173
|
+
y: 0,
|
174
|
+
x: 0,
|
175
|
+
by: nil,
|
176
|
+
bx: nil,
|
177
|
+
byn: nil,
|
178
|
+
bxn: nil,
|
179
|
+
name: '',
|
180
|
+
ox: 0,
|
181
|
+
oy: 0,
|
160
182
|
}
|
161
183
|
end
|
162
184
|
|
@@ -24,6 +24,10 @@ module Vedeu
|
|
24
24
|
:x,
|
25
25
|
:y
|
26
26
|
|
27
|
+
def_delegators :interface,
|
28
|
+
:colour,
|
29
|
+
:style
|
30
|
+
|
27
31
|
# @!attribute [r] attributes
|
28
32
|
# @return [Hash]
|
29
33
|
attr_reader :attributes
|
@@ -33,14 +37,14 @@ module Vedeu
|
|
33
37
|
attr_accessor :data
|
34
38
|
|
35
39
|
# @!attribute [rw] name
|
36
|
-
# @return [String]
|
40
|
+
# @return [String|Symbol]
|
37
41
|
attr_accessor :name
|
38
42
|
|
39
43
|
# Returns a new instance of Vedeu::Editor::Document.
|
40
44
|
#
|
41
45
|
# @param attributes [Hash]
|
42
46
|
# @option attributes data [String]
|
43
|
-
# @option attributes name [String]
|
47
|
+
# @option attributes name [String|Symbol]
|
44
48
|
# @option attributes repository
|
45
49
|
# [Vedeu::Repositories::Repository]
|
46
50
|
# @return [Vedeu::Editor::Document]
|
@@ -54,7 +58,7 @@ module Vedeu
|
|
54
58
|
#
|
55
59
|
# @return [void]
|
56
60
|
def clear
|
57
|
-
Vedeu
|
61
|
+
Vedeu.trigger(:_clear_view_, name)
|
58
62
|
end
|
59
63
|
|
60
64
|
# Deletes the character from the line where the cursor is
|
@@ -76,8 +80,6 @@ module Vedeu
|
|
76
80
|
@lines = lines.delete_line(y)
|
77
81
|
|
78
82
|
up
|
79
|
-
|
80
|
-
refresh
|
81
83
|
end
|
82
84
|
|
83
85
|
# Move the virtual cursor down.
|
@@ -116,8 +118,6 @@ module Vedeu
|
|
116
118
|
@lines = lines.insert_character(character, y, x)
|
117
119
|
|
118
120
|
right
|
119
|
-
|
120
|
-
refresh
|
121
121
|
end
|
122
122
|
|
123
123
|
# Insert an empty line.
|
@@ -163,7 +163,7 @@ module Vedeu
|
|
163
163
|
def render
|
164
164
|
clear
|
165
165
|
|
166
|
-
Vedeu::Output::
|
166
|
+
Vedeu::Output::Output.render(output)
|
167
167
|
end
|
168
168
|
|
169
169
|
# Reset the document to the empty state.
|
@@ -217,24 +217,14 @@ module Vedeu
|
|
217
217
|
@border ||= Vedeu.borders.by_name(name)
|
218
218
|
end
|
219
219
|
|
220
|
-
#
|
221
|
-
|
222
|
-
|
223
|
-
# @return [String]
|
224
|
-
def clear_output
|
225
|
-
clear_output = ''
|
226
|
-
|
227
|
-
(by..byn).each do |row|
|
228
|
-
clear_output << "\e[#{row};#{bx}H" + (' ' * width)
|
229
|
-
end
|
230
|
-
|
231
|
-
# reset cursor to top left of document
|
232
|
-
clear_output << "\e[#{by};#{bx}H"
|
220
|
+
# @return [Vedeu::Models::Interface]
|
221
|
+
def interface
|
222
|
+
@interface ||= Vedeu.interfaces.by_name(name)
|
233
223
|
end
|
234
224
|
|
235
225
|
# Returns the default options/attributes for this class.
|
236
226
|
#
|
237
|
-
# @return [Hash]
|
227
|
+
# @return [Hash<Symbol => void|Symbol]
|
238
228
|
def defaults
|
239
229
|
{
|
240
230
|
data: Vedeu::Editor::Lines.new([Vedeu::Editor::Line.new]),
|
@@ -247,16 +237,23 @@ module Vedeu
|
|
247
237
|
#
|
248
238
|
# @return [String]
|
249
239
|
def output
|
250
|
-
|
240
|
+
out = []
|
241
|
+
|
242
|
+
visible_lines.each_with_index do |line, y_index|
|
243
|
+
line.chars.each_with_index do |char, x_index|
|
244
|
+
position = [(by + y_index), (bx + x_index)]
|
251
245
|
|
252
|
-
|
253
|
-
|
254
|
-
|
246
|
+
out << Vedeu::Views::Char.new(value: char,
|
247
|
+
parent: interface,
|
248
|
+
position: position)
|
249
|
+
end
|
255
250
|
end
|
256
251
|
|
257
|
-
|
252
|
+
out << border.render
|
253
|
+
|
254
|
+
cursor.store
|
258
255
|
|
259
|
-
|
256
|
+
out.flatten
|
260
257
|
end
|
261
258
|
|
262
259
|
# Return a virtual cursor to track the cursor position within
|
@@ -264,19 +261,20 @@ module Vedeu
|
|
264
261
|
#
|
265
262
|
# @return [Vedeu::Editor::Cursor]
|
266
263
|
def cursor
|
267
|
-
@cursor ||= Vedeu::Editor::Cursor.new(y:
|
268
|
-
x:
|
269
|
-
by:
|
270
|
-
bx:
|
271
|
-
byn:
|
272
|
-
bxn:
|
264
|
+
@cursor ||= Vedeu::Editor::Cursor.new(y: 0,
|
265
|
+
x: 0,
|
266
|
+
by: by,
|
267
|
+
bx: bx,
|
268
|
+
byn: byn,
|
269
|
+
bxn: bxn,
|
270
|
+
name: name)
|
273
271
|
end
|
274
272
|
|
275
273
|
# Return only the visible lines for the document based on the
|
276
274
|
# current virtual cursor position.
|
277
275
|
#
|
278
276
|
# @return [Vedeu::Editor::Lines]
|
279
|
-
def
|
277
|
+
def visible_lines
|
280
278
|
Vedeu::Editor::Cropper.new(lines: lines,
|
281
279
|
height: height,
|
282
280
|
width: width,
|