vedeu 0.4.13 → 0.4.14
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +2 -1
- data/.travis.yml +2 -1
- data/Guardfile +6 -5
- data/README.md +3 -30
- data/Rakefile +5 -5
- data/bin/vedeu_drb_client +1 -1
- data/bin/vedeu_drb_server +91 -89
- data/bin/vedeu_test +4 -0
- data/config/rubocop_enabled.yml +5 -10
- data/examples/borders_app.rb +2 -1
- data/examples/colours_app.rb +13 -8
- data/examples/configuration_app.rb +3 -2
- data/examples/cursor_app.rb +16 -11
- data/examples/drb_app.rb +88 -89
- data/examples/focus_app.rb +31 -32
- data/examples/geometry_app.rb +2 -1
- data/examples/hello_world.rb +2 -1
- data/examples/lines_app.rb +2 -1
- data/examples/material_colours_app.rb +126 -0
- data/examples/typed_commands/typed_commands_app.rb +5 -1
- data/examples/view_templates_app/view_templates_app.rb +6 -3
- data/lib/vedeu/all.rb +1 -1
- data/lib/vedeu/api.rb +18 -10
- data/lib/vedeu/application.rb +0 -1
- data/lib/vedeu/bindings.rb +77 -16
- data/lib/vedeu/buffers/all.rb +2 -5
- data/lib/vedeu/buffers/buffer.rb +69 -25
- data/lib/vedeu/buffers/display_buffer.rb +3 -7
- data/lib/vedeu/configuration/all.rb +3 -6
- data/lib/vedeu/configuration/api.rb +28 -4
- data/lib/vedeu/configuration/cli.rb +9 -9
- data/lib/vedeu/configuration/configuration.rb +11 -7
- data/lib/vedeu/cursor/all.rb +3 -6
- data/lib/vedeu/cursor/cursor.rb +22 -14
- data/lib/vedeu/cursor/move.rb +32 -22
- data/lib/vedeu/cursor/refresh_cursor.rb +1 -1
- data/lib/vedeu/debug.rb +2 -1
- data/lib/vedeu/distributed/client.rb +1 -7
- data/lib/vedeu/distributed/server.rb +0 -4
- data/lib/vedeu/distributed/subprocess.rb +1 -1
- data/lib/vedeu/distributed/templates/default_configuration.vedeu +1 -1
- data/lib/vedeu/distributed/test_application.rb +3 -5
- data/lib/vedeu/distributed/uri.rb +2 -2
- data/lib/vedeu/dsl/all.rb +6 -6
- data/lib/vedeu/dsl/components/all.rb +0 -3
- data/lib/vedeu/dsl/components/border.rb +20 -12
- data/lib/vedeu/dsl/components/geometry.rb +68 -3
- data/lib/vedeu/dsl/components/keymap.rb +1 -2
- data/lib/vedeu/dsl/composition.rb +8 -1
- data/lib/vedeu/dsl/interface.rb +61 -11
- data/lib/vedeu/dsl/line.rb +12 -12
- data/lib/vedeu/dsl/shared/all.rb +4 -7
- data/lib/vedeu/dsl/shared/colour.rb +2 -2
- data/lib/vedeu/dsl/shared/text.rb +2 -35
- data/lib/vedeu/dsl/shared/use.rb +2 -2
- data/lib/vedeu/dsl/view.rb +4 -4
- data/lib/vedeu/events/all.rb +3 -5
- data/lib/vedeu/events/event.rb +5 -5
- data/lib/vedeu/geometry/all.rb +11 -16
- data/lib/vedeu/geometry/area.rb +2 -5
- data/lib/vedeu/geometry/canvas.rb +12 -16
- data/lib/vedeu/geometry/dimension.rb +20 -22
- data/lib/vedeu/geometry/geometry.rb +28 -30
- data/lib/vedeu/geometry/grid.rb +1 -1
- data/lib/vedeu/geometry/index_position.rb +7 -0
- data/lib/vedeu/geometry/null_geometry.rb +61 -0
- data/lib/vedeu/geometry/position.rb +0 -3
- data/lib/vedeu/geometry/position_index.rb +7 -0
- data/lib/vedeu/geometry/position_validator.rb +44 -33
- data/lib/vedeu/input/all.rb +5 -4
- data/lib/vedeu/input/keymap.rb +0 -1
- data/lib/vedeu/input/mapper.rb +1 -3
- data/lib/vedeu/launcher.rb +6 -7
- data/lib/vedeu/main_loop.rb +1 -2
- data/lib/vedeu/models/all.rb +1 -0
- data/lib/vedeu/models/cell.rb +5 -8
- data/lib/vedeu/models/char.rb +50 -15
- data/lib/vedeu/models/composition.rb +8 -1
- data/lib/vedeu/models/focus.rb +4 -4
- data/lib/vedeu/models/group.rb +3 -3
- data/lib/vedeu/models/interface.rb +62 -46
- data/lib/vedeu/models/line.rb +1 -1
- data/lib/vedeu/models/null.rb +48 -0
- data/lib/vedeu/models/stream.rb +5 -5
- data/lib/vedeu/output/all.rb +20 -30
- data/lib/vedeu/output/border.rb +93 -40
- data/lib/vedeu/output/clear.rb +100 -15
- data/lib/vedeu/output/colour.rb +56 -12
- data/lib/vedeu/output/compressor.rb +59 -0
- data/lib/vedeu/output/html_char.rb +4 -2
- data/lib/vedeu/output/null_border.rb +16 -4
- data/lib/vedeu/output/output.rb +13 -21
- data/lib/vedeu/output/presentation.rb +28 -23
- data/lib/vedeu/output/refresh.rb +2 -2
- data/lib/vedeu/output/renderers/all.rb +80 -3
- data/lib/vedeu/output/renderers/file_renderer.rb +38 -2
- data/lib/vedeu/output/renderers/html_renderer.rb +6 -4
- data/lib/vedeu/output/renderers/json_renderer.rb +52 -0
- data/lib/vedeu/output/renderers/null_renderer.rb +14 -0
- data/lib/vedeu/output/renderers/terminal_renderer.rb +2 -12
- data/lib/vedeu/output/style.rb +33 -3
- data/lib/vedeu/output/text.rb +98 -1
- data/lib/vedeu/output/translator.rb +30 -7
- data/lib/vedeu/output/viewport.rb +43 -79
- data/lib/vedeu/output/wordwrap.rb +4 -4
- data/lib/vedeu/repositories/all.rb +22 -179
- data/lib/vedeu/repositories/collection.rb +11 -13
- data/lib/vedeu/repositories/collections/all.rb +8 -0
- data/lib/vedeu/repositories/collections/chars.rb +9 -0
- data/lib/vedeu/repositories/collections/events.rb +9 -0
- data/lib/vedeu/repositories/collections/interfaces.rb +9 -0
- data/lib/vedeu/repositories/collections/keys.rb +9 -0
- data/lib/vedeu/repositories/collections/lines.rb +9 -0
- data/lib/vedeu/repositories/collections/streams.rb +9 -0
- data/lib/vedeu/repositories/model.rb +7 -2
- data/lib/vedeu/repositories/repositories/all.rb +14 -0
- data/lib/vedeu/repositories/repositories/background_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/borders.rb +38 -0
- data/lib/vedeu/repositories/repositories/buffers.rb +36 -0
- data/lib/vedeu/repositories/repositories/colours.rb +63 -0
- data/lib/vedeu/repositories/repositories/cursors.rb +29 -0
- data/lib/vedeu/repositories/repositories/events_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/foreground_colours.rb +14 -0
- data/lib/vedeu/repositories/repositories/geometries.rb +37 -0
- data/lib/vedeu/repositories/repositories/groups.rb +24 -0
- data/lib/vedeu/repositories/repositories/interfaces_repository.rb +24 -0
- data/lib/vedeu/repositories/repositories/keymaps.rb +24 -0
- data/lib/vedeu/repositories/repositories/menus.rb +24 -0
- data/lib/vedeu/repositories/repository.rb +29 -47
- data/lib/vedeu/storage/all.rb +6 -0
- data/lib/vedeu/storage/associative_store.rb +47 -0
- data/lib/vedeu/storage/conveyor_store.rb +69 -0
- data/lib/vedeu/storage/fifo_store.rb +37 -0
- data/lib/vedeu/storage/store.rb +58 -0
- data/lib/vedeu/support/all.rb +5 -10
- data/lib/vedeu/support/common.rb +0 -8
- data/lib/vedeu/support/log.rb +13 -24
- data/lib/vedeu/support/template.rb +4 -1
- data/lib/vedeu/support/terminal.rb +10 -10
- data/lib/vedeu/support/trace.rb +15 -88
- data/lib/vedeu/support/visibility.rb +73 -0
- data/lib/vedeu.rb +37 -0
- data/test/lib/vedeu/api_test.rb +7 -3
- data/test/lib/vedeu/application_test.rb +9 -3
- data/test/lib/vedeu/bindings_test.rb +21 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +110 -134
- data/test/lib/vedeu/buffers/display_buffer_test.rb +8 -0
- data/test/lib/vedeu/configuration/api_test.rb +5 -1
- data/test/lib/vedeu/configuration/configuration_test.rb +4 -6
- data/test/lib/vedeu/cursor/cursor_test.rb +25 -17
- data/test/lib/vedeu/cursor/move_test.rb +7 -7
- data/test/lib/vedeu/distributed/client_test.rb +1 -1
- data/test/lib/vedeu/distributed/subprocess_test.rb +3 -1
- data/test/lib/vedeu/distributed/uri_test.rb +5 -5
- data/test/lib/vedeu/dsl/components/geometry_test.rb +43 -0
- data/test/lib/vedeu/dsl/components/keymap_test.rb +1 -1
- data/test/lib/vedeu/dsl/composition_test.rb +6 -5
- data/test/lib/vedeu/dsl/interface_test.rb +81 -16
- data/test/lib/vedeu/dsl/shared/colour_test.rb +4 -4
- data/test/lib/vedeu/dsl/shared/text_test.rb +87 -9
- data/test/lib/vedeu/dsl/stream_test.rb +1 -1
- data/test/lib/vedeu/events/event_test.rb +3 -1
- data/test/lib/vedeu/events/trigger_test.rb +8 -4
- data/test/lib/vedeu/geometry/dimension_test.rb +1 -1
- data/test/lib/vedeu/geometry/geometry_test.rb +5 -3
- data/test/lib/vedeu/geometry/index_position_test.rb +30 -7
- data/test/lib/vedeu/geometry/null_geometry_test.rb +57 -0
- data/test/lib/vedeu/geometry/position_index_test.rb +14 -0
- data/test/lib/vedeu/geometry/position_validator_test.rb +17 -3
- data/test/lib/vedeu/input/keymap_test.rb +3 -1
- data/test/lib/vedeu/input/mapper_test.rb +8 -4
- data/test/lib/vedeu/launcher_test.rb +1 -1
- data/test/lib/vedeu/models/cell_test.rb +10 -8
- data/test/lib/vedeu/models/char_test.rb +52 -28
- data/test/lib/vedeu/models/composition_test.rb +26 -4
- data/test/lib/vedeu/models/group_test.rb +11 -5
- data/test/lib/vedeu/models/interface_test.rb +32 -19
- data/test/lib/vedeu/models/line_test.rb +21 -25
- data/test/lib/vedeu/models/menu_test.rb +10 -6
- data/test/lib/vedeu/models/null_test.rb +66 -0
- data/test/lib/vedeu/models/stream_test.rb +13 -10
- data/test/lib/vedeu/output/border_test.rb +29 -8
- data/test/lib/vedeu/output/clear_test.rb +23 -4
- data/test/lib/vedeu/output/colour_test.rb +20 -4
- data/test/lib/vedeu/output/compressor_test.rb +43 -0
- data/test/lib/vedeu/output/html_char_test.rb +29 -17
- data/test/lib/vedeu/output/null_border_test.rb +2 -1
- data/test/lib/vedeu/output/output_test.rb +20 -30
- data/test/lib/vedeu/output/presentation_test.rb +39 -16
- data/test/lib/vedeu/output/refresh_test.rb +14 -10
- data/test/lib/vedeu/output/renderers/all_test.rb +96 -0
- data/test/lib/vedeu/output/renderers/file_renderer_test.rb +1 -1
- data/test/lib/vedeu/output/renderers/html_renderer_test.rb +13 -9
- data/test/lib/vedeu/output/renderers/json_renderer_test.rb +52 -0
- data/test/lib/vedeu/output/renderers/null_renderer_test.rb +19 -0
- data/test/lib/vedeu/output/style_test.rb +41 -1
- data/test/lib/vedeu/output/text_test.rb +61 -10
- data/test/lib/vedeu/output/translator_test.rb +14 -0
- data/test/lib/vedeu/output/viewport_test.rb +22 -3
- data/test/lib/vedeu/output/virtual_terminal_test.rb +3 -3
- data/test/lib/vedeu/output/wordwrap_test.rb +58 -45
- data/test/lib/vedeu/repositories/collections/chars_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/events_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/interfaces_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/keys_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/lines_test.rb +16 -0
- data/test/lib/vedeu/repositories/collections/streams_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/background_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/borders_test.rb +51 -0
- data/test/lib/vedeu/repositories/repositories/buffers_test.rb +52 -0
- data/test/lib/vedeu/repositories/repositories/colours_test.rb +16 -0
- data/test/lib/vedeu/repositories/repositories/cursors_test.rb +39 -0
- data/test/lib/vedeu/repositories/repositories/events_repository_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/foreground_colours_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/geometries_test.rb +42 -0
- data/test/lib/vedeu/repositories/repositories/groups_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/interfaces_repositories_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/keymaps_test.rb +17 -0
- data/test/lib/vedeu/repositories/repositories/menus_test.rb +17 -0
- data/test/lib/vedeu/repositories/repository_test.rb +16 -36
- data/test/lib/vedeu/storage/associative_store_test.rb +69 -0
- data/test/lib/vedeu/storage/conveyor_store_test.rb +135 -0
- data/test/lib/vedeu/storage/fifo_store_test.rb +47 -0
- data/test/lib/vedeu/storage/store_test.rb +123 -0
- data/test/lib/vedeu/support/common_test.rb +0 -9
- data/test/lib/vedeu/support/terminal_test.rb +78 -55
- data/test/lib/vedeu/support/visibility_test.rb +80 -0
- data/test/test_helper.rb +13 -11
- data/vedeu.gemspec +4 -3
- metadata +92 -32
- data/lib/vedeu/cursor/toggle.rb +0 -55
- data/lib/vedeu/exceptions.rb +0 -37
- data/lib/vedeu/geometry/centre.rb +0 -85
- data/lib/vedeu/geometry/content.rb +0 -70
- data/lib/vedeu/geometry/limit.rb +0 -58
- data/lib/vedeu/output/compositor.rb +0 -62
- data/lib/vedeu/repositories/collections.rb +0 -41
- data/lib/vedeu/support/coercions.rb +0 -60
- data/lib/vedeu/support/sentence.rb +0 -91
- data/lib/vedeu/support/visible.rb +0 -90
- data/test/lib/vedeu/cursor/toggle_test.rb +0 -63
- data/test/lib/vedeu/geometry/centre_test.rb +0 -58
- data/test/lib/vedeu/geometry/content_test.rb +0 -98
- data/test/lib/vedeu/geometry/limit_test.rb +0 -30
- data/test/lib/vedeu/output/compositor_test.rb +0 -48
- data/test/lib/vedeu/repositories/all_test.rb +0 -135
- data/test/lib/vedeu/repositories/collections_test.rb +0 -71
- data/test/lib/vedeu/support/coercions_test.rb +0 -84
- data/test/lib/vedeu/support/sentence_test.rb +0 -56
- data/test/lib/vedeu/support/visible_test.rb +0 -161
data/lib/vedeu/debug.rb
CHANGED
@@ -45,7 +45,8 @@ module Vedeu
|
|
45
45
|
# - Creates a call graph report in HTML (separate files per thread)
|
46
46
|
# RubyProf::GraphHtmlPrinter
|
47
47
|
|
48
|
-
# - Creates a call graph report in GraphViz's DOT format which can be
|
48
|
+
# - Creates a call graph report in GraphViz's DOT format which can be
|
49
|
+
# converted to an image
|
49
50
|
# RubyProf::DotPrinter
|
50
51
|
|
51
52
|
# - Creates a call tree report compatible with KCachegrind.
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'drb'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
module Distributed
|
@@ -39,7 +37,6 @@ module Vedeu
|
|
39
37
|
puts 'Could not connect to DRb server, URI may be bad.'
|
40
38
|
|
41
39
|
:drb_bad_uri
|
42
|
-
|
43
40
|
end
|
44
41
|
|
45
42
|
# Send input to the DRb server.
|
@@ -51,7 +48,6 @@ module Vedeu
|
|
51
48
|
|
52
49
|
rescue DRb::DRbConnError
|
53
50
|
drb_connection_error
|
54
|
-
|
55
51
|
end
|
56
52
|
alias_method :read, :input
|
57
53
|
|
@@ -63,7 +59,6 @@ module Vedeu
|
|
63
59
|
|
64
60
|
rescue DRb::DRbConnError
|
65
61
|
drb_connection_error
|
66
|
-
|
67
62
|
end
|
68
63
|
alias_method :write, :output
|
69
64
|
|
@@ -77,7 +72,7 @@ module Vedeu
|
|
77
72
|
def shutdown
|
78
73
|
server.shutdown
|
79
74
|
|
80
|
-
Process.kill(
|
75
|
+
Process.kill('KILL', server.pid)
|
81
76
|
|
82
77
|
rescue DRb::DRbConnError
|
83
78
|
drb_connection_error
|
@@ -87,7 +82,6 @@ module Vedeu
|
|
87
82
|
|
88
83
|
ensure
|
89
84
|
:shutdown
|
90
|
-
|
91
85
|
end
|
92
86
|
|
93
87
|
private
|
@@ -68,22 +68,20 @@ module Vedeu
|
|
68
68
|
def initialize(attributes = {})
|
69
69
|
@attributes = defaults.merge!(attributes)
|
70
70
|
|
71
|
-
@attributes.each
|
72
|
-
instance_variable_set("@#{k.to_s}", @attributes[k])
|
73
|
-
end
|
71
|
+
@attributes.each { |k, _| instance_variable_set("@#{k}", @attributes[k]) }
|
74
72
|
end
|
75
73
|
|
76
74
|
# @param block [Proc]
|
77
75
|
# @return [String]
|
78
76
|
def build(&block)
|
79
|
-
|
77
|
+
instance_eval(&block) if block_given?
|
80
78
|
|
81
79
|
Vedeu::Template.parse(self, template)
|
82
80
|
end
|
83
81
|
|
84
82
|
# @return [String]
|
85
83
|
def lib_dir
|
86
|
-
File.dirname(__FILE__) +
|
84
|
+
File.dirname(__FILE__) + '/../../../lib'
|
87
85
|
end
|
88
86
|
|
89
87
|
private
|
@@ -20,9 +20,9 @@ module Vedeu
|
|
20
20
|
# @param host [String] Hostname or IP address.
|
21
21
|
# @param port [Fixnum|String]
|
22
22
|
# @return [Uri]
|
23
|
-
def initialize(host = 'localhost', port =
|
23
|
+
def initialize(host = 'localhost', port = 21_420)
|
24
24
|
@host = host || 'localhost'
|
25
|
-
@port = port ||
|
25
|
+
@port = port || 21_420
|
26
26
|
end
|
27
27
|
|
28
28
|
# @example
|
data/lib/vedeu/dsl/all.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'vedeu/dsl/components/all'
|
2
2
|
require 'vedeu/dsl/shared/all'
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
4
|
+
require_relative 'composition'
|
5
|
+
require_relative 'group'
|
6
|
+
require_relative 'interface'
|
7
|
+
require_relative 'line'
|
8
|
+
require_relative 'stream'
|
9
|
+
require_relative 'view'
|
10
10
|
|
11
11
|
module Vedeu
|
12
12
|
|
@@ -117,11 +117,13 @@ module Vedeu
|
|
117
117
|
# # ... or
|
118
118
|
# show_bottom!
|
119
119
|
#
|
120
|
-
# @param
|
120
|
+
# @param value [Boolean] All values evaluate as true except nil and
|
121
121
|
# false.
|
122
122
|
# @return [Boolean]
|
123
|
-
def bottom(
|
124
|
-
|
123
|
+
def bottom(value)
|
124
|
+
boolean = value ? true : false
|
125
|
+
|
126
|
+
model.show_bottom = boolean
|
125
127
|
end
|
126
128
|
alias_method :show_bottom, :bottom
|
127
129
|
|
@@ -147,11 +149,13 @@ module Vedeu
|
|
147
149
|
# # ... or
|
148
150
|
# show_left!
|
149
151
|
#
|
150
|
-
# @param
|
152
|
+
# @param value [Boolean] All values evaluate as true except nil and
|
151
153
|
# false.
|
152
154
|
# @return [Boolean]
|
153
|
-
def left(
|
154
|
-
|
155
|
+
def left(value)
|
156
|
+
boolean = value ? true : false
|
157
|
+
|
158
|
+
model.show_left = boolean
|
155
159
|
end
|
156
160
|
alias_method :show_left, :left
|
157
161
|
|
@@ -177,11 +181,13 @@ module Vedeu
|
|
177
181
|
# # ... or
|
178
182
|
# show_right!
|
179
183
|
#
|
180
|
-
# @param
|
184
|
+
# @param value [Boolean] All values evaluate as true except nil and
|
181
185
|
# false.
|
182
186
|
# @return [Boolean]
|
183
|
-
def right(
|
184
|
-
|
187
|
+
def right(value)
|
188
|
+
boolean = value ? true : false
|
189
|
+
|
190
|
+
model.show_right = boolean
|
185
191
|
end
|
186
192
|
alias_method :show_right, :right
|
187
193
|
|
@@ -225,11 +231,13 @@ module Vedeu
|
|
225
231
|
# # ... or
|
226
232
|
# show_top!
|
227
233
|
#
|
228
|
-
# @param
|
234
|
+
# @param value [Boolean] All values evaluate as true except nil and
|
229
235
|
# false.
|
230
236
|
# @return [Boolean]
|
231
|
-
def top(
|
232
|
-
|
237
|
+
def top(value)
|
238
|
+
boolean = value ? true : false
|
239
|
+
|
240
|
+
model.show_top = boolean
|
233
241
|
end
|
234
242
|
alias_method :show_top, :top
|
235
243
|
|
@@ -56,7 +56,9 @@ module Vedeu
|
|
56
56
|
#
|
57
57
|
# @return [Boolean]
|
58
58
|
def centred(value = true)
|
59
|
-
|
59
|
+
boolean = value ? true : false
|
60
|
+
|
61
|
+
model.centred = boolean
|
60
62
|
end
|
61
63
|
alias_method :centred!, :centred
|
62
64
|
|
@@ -76,6 +78,53 @@ module Vedeu
|
|
76
78
|
model.height = value
|
77
79
|
end
|
78
80
|
|
81
|
+
# Use the geometry of another interface as the basis for the geometry you
|
82
|
+
# are creating.
|
83
|
+
#
|
84
|
+
# @example
|
85
|
+
# geometry 'some_interface' do
|
86
|
+
# use 'other_interface' # will fetch the geometry of 'other_interface'
|
87
|
+
# # ...
|
88
|
+
#
|
89
|
+
# geometry 'other_interface' do
|
90
|
+
# centred!
|
91
|
+
# height 4
|
92
|
+
# # ...
|
93
|
+
#
|
94
|
+
# geometry 'some_interface' do
|
95
|
+
# use 'other_interface' # will fetch the geometry of 'other_interface'
|
96
|
+
# centred false
|
97
|
+
# # ...
|
98
|
+
#
|
99
|
+
# @note
|
100
|
+
# - When using 'use', the 'other_interface' (from the example) must
|
101
|
+
# already exist.
|
102
|
+
# - When using 'use', note that geometry defined before it's invocation
|
103
|
+
# will be overwritten by 'other_interface',
|
104
|
+
# - and geometry defined after will overwrite the inherited geometry.
|
105
|
+
# - Special geometry settings, like 'centred' also cause unexpected
|
106
|
+
# behaviour. If 'other_interface' was centred, then 'some_interface'
|
107
|
+
# will also be centred, to disable this, declare 'some_interface' to
|
108
|
+
# not be centred.
|
109
|
+
#
|
110
|
+
# @param name [String] The name of the interface you wish to use the
|
111
|
+
# geometry of.
|
112
|
+
# @raise [ModelNotFound] When the geometry to be used does not exist yet.
|
113
|
+
# @return [Vedeu::Geometry]
|
114
|
+
# def use(name)
|
115
|
+
# if Vedeu.geometries.registered?(name)
|
116
|
+
# other = Vedeu.geometries.find(name).dup
|
117
|
+
# other.name = name
|
118
|
+
# @model = other
|
119
|
+
# @model.store
|
120
|
+
|
121
|
+
# else
|
122
|
+
# fail ModelNotFound, "Cannot use the geometry of '#{name}', as it " \
|
123
|
+
# "is not yet defined."
|
124
|
+
|
125
|
+
# end
|
126
|
+
# end
|
127
|
+
|
79
128
|
# Specify the number of characters/columns wide the interface will be.
|
80
129
|
#
|
81
130
|
# @param value [Fixnum]
|
@@ -122,12 +171,20 @@ module Vedeu
|
|
122
171
|
# xn 37 # end at column 37.
|
123
172
|
# # ...
|
124
173
|
#
|
174
|
+
# geometry 'some_interface' do
|
175
|
+
# xn { use('other_interface').right } # if `other_interface` changes
|
176
|
+
# # ... # position, `some_interface`
|
177
|
+
# # will too.
|
178
|
+
#
|
125
179
|
# @note
|
126
180
|
# This value will override `width`.
|
127
181
|
#
|
128
182
|
# @param value [Fixnum]
|
183
|
+
# @param block [Proc]
|
129
184
|
# @return [Fixnum]
|
130
|
-
def xn(value)
|
185
|
+
def xn(value = 1, &block)
|
186
|
+
return model.xn = block if block_given?
|
187
|
+
|
131
188
|
model.xn = value
|
132
189
|
end
|
133
190
|
|
@@ -160,12 +217,20 @@ module Vedeu
|
|
160
217
|
# yn 24 # end at row 24.
|
161
218
|
# # ...
|
162
219
|
#
|
220
|
+
# geometry 'some_interface' do
|
221
|
+
# yn { use('other_interface').bottom } # if `other_interface` changes
|
222
|
+
# # ... # position, `some_interface`
|
223
|
+
# # will too.
|
224
|
+
#
|
163
225
|
# @note
|
164
226
|
# This value will override `height`.
|
165
227
|
#
|
166
228
|
# @param value [Fixnum]
|
229
|
+
# @param block [Proc]
|
167
230
|
# @return [Fixnum]
|
168
|
-
def yn(value)
|
231
|
+
def yn(value = 1, &block)
|
232
|
+
return model.yn = block if block_given?
|
233
|
+
|
169
234
|
model.yn = value
|
170
235
|
end
|
171
236
|
|
@@ -1,4 +1,3 @@
|
|
1
|
-
require 'vedeu/exceptions'
|
2
1
|
require 'vedeu/support/common'
|
3
2
|
require 'vedeu/input/key'
|
4
3
|
|
@@ -51,7 +50,7 @@ module Vedeu
|
|
51
50
|
# @todo Try to remember why we need to pre-create the keymap in the
|
52
51
|
# repository.
|
53
52
|
def self.keymap(name, &block)
|
54
|
-
Vedeu::Keymap.new(
|
53
|
+
Vedeu::Keymap.new(name: name).store
|
55
54
|
|
56
55
|
Vedeu::Keymap.build({ name: name }, &block).store
|
57
56
|
end
|
@@ -69,7 +69,7 @@ module Vedeu
|
|
69
69
|
content = Vedeu::Template.parse(object, filename)
|
70
70
|
lines = Vedeu::Wordwrap.for(content, options)
|
71
71
|
|
72
|
-
new_model = model.member.build(
|
72
|
+
new_model = model.member.build(template_attributes(name, lines))
|
73
73
|
|
74
74
|
model.add(new_model)
|
75
75
|
end
|
@@ -84,6 +84,13 @@ module Vedeu
|
|
84
84
|
# @return [Composition]
|
85
85
|
attr_reader :model
|
86
86
|
|
87
|
+
# @param name [String]
|
88
|
+
# @param lines [Vedeu::Lines]
|
89
|
+
# @return [Hash]
|
90
|
+
def template_attributes(name, lines)
|
91
|
+
new_attributes(name).merge!(lines: lines)
|
92
|
+
end
|
93
|
+
|
87
94
|
# @param name [String] The name of the interface.
|
88
95
|
# @return [Hash]
|
89
96
|
def new_attributes(name)
|
data/lib/vedeu/dsl/interface.rb
CHANGED
@@ -33,14 +33,19 @@ module Vedeu
|
|
33
33
|
|
34
34
|
# Allows the setting of a border for the interface.
|
35
35
|
#
|
36
|
+
# @param name [String] The name of the interface; this is already provided
|
37
|
+
# when we define the interface or view, setting it here is just
|
38
|
+
# mirroring functionality of {Vedeu::DSL::Border.border}.
|
36
39
|
# @param block [Proc]
|
37
40
|
# @raise [InvalidSyntax] The required block was not given.
|
38
41
|
# @return [Vedeu::Border]
|
39
|
-
def border(&block)
|
42
|
+
def border(name = nil, &block)
|
40
43
|
fail InvalidSyntax, 'block not given' unless block_given?
|
41
44
|
|
42
|
-
|
43
|
-
|
45
|
+
model_name = name ? name : model.name
|
46
|
+
|
47
|
+
border_attrs = attributes.merge!(enabled: true,
|
48
|
+
name: model_name)
|
44
49
|
|
45
50
|
Vedeu::Border.build(border_attrs, &block).store
|
46
51
|
end
|
@@ -67,8 +72,7 @@ module Vedeu
|
|
67
72
|
# # ...
|
68
73
|
#
|
69
74
|
# cursor false # => hide the cursor for this interface
|
70
|
-
# cursor
|
71
|
-
# cursor nil #
|
75
|
+
# cursor nil # => as above
|
72
76
|
# # ...
|
73
77
|
#
|
74
78
|
# view 'my_interface' do
|
@@ -77,7 +81,9 @@ module Vedeu
|
|
77
81
|
#
|
78
82
|
# @return [Cursor]
|
79
83
|
def cursor(value = true)
|
80
|
-
|
84
|
+
boolean = value ? true : false
|
85
|
+
|
86
|
+
Vedeu::Cursor.new(name: model.name, visible: boolean).store
|
81
87
|
end
|
82
88
|
|
83
89
|
# Set the cursor to visible for the interface.
|
@@ -115,20 +121,24 @@ module Vedeu
|
|
115
121
|
|
116
122
|
# Define the geometry for an interface.
|
117
123
|
#
|
118
|
-
# @param block [Proc]
|
119
|
-
#
|
120
124
|
# @example
|
121
125
|
# interface 'my_interface' do
|
122
126
|
# geometry do
|
123
127
|
# # ...
|
124
128
|
#
|
129
|
+
# @param name [String] The name of the interface; this is already provided
|
130
|
+
# when we define the interface or view, setting it here is just
|
131
|
+
# mirroring functionality of {Vedeu::DSL::Geometry.geometry}.
|
132
|
+
# @param block [Proc]
|
125
133
|
# @raise [InvalidSyntax] The required block was not given.
|
126
134
|
# @return [Geometry]
|
127
135
|
# @see Vedeu::DSL::Geometry
|
128
|
-
def geometry(&block)
|
136
|
+
def geometry(name = nil, &block)
|
129
137
|
fail InvalidSyntax, 'block not given' unless block_given?
|
130
138
|
|
131
|
-
|
139
|
+
model_name = name ? name : model.name
|
140
|
+
|
141
|
+
Vedeu::Geometry.build({ name: model_name }, &block).store
|
132
142
|
end
|
133
143
|
|
134
144
|
# Specify a group for an interface. Interfaces of the same group can be
|
@@ -151,7 +161,7 @@ module Vedeu
|
|
151
161
|
Vedeu.groups.find(name).add(model.name)
|
152
162
|
|
153
163
|
else
|
154
|
-
new_group = Vedeu::Group.new(
|
164
|
+
new_group = Vedeu::Group.new(name: name)
|
155
165
|
new_group.add(model.name)
|
156
166
|
|
157
167
|
end
|
@@ -204,6 +214,46 @@ module Vedeu
|
|
204
214
|
model.name = value
|
205
215
|
end
|
206
216
|
|
217
|
+
# Set the interface to visible.
|
218
|
+
#
|
219
|
+
# @return [void]
|
220
|
+
def show!
|
221
|
+
visible(true)
|
222
|
+
end
|
223
|
+
|
224
|
+
# Set the interface to invisible.
|
225
|
+
#
|
226
|
+
# @return [void]
|
227
|
+
def hide!
|
228
|
+
visible(false)
|
229
|
+
end
|
230
|
+
|
231
|
+
# Set the visibility of the interface.
|
232
|
+
#
|
233
|
+
# @param value [Boolean] Any value other than nil or false will evaluate
|
234
|
+
# to true.
|
235
|
+
#
|
236
|
+
# @example
|
237
|
+
# interface 'my_interface' do
|
238
|
+
# visible true # => show the interface
|
239
|
+
# show! # => as above
|
240
|
+
# # ...
|
241
|
+
#
|
242
|
+
# visible false # => hide the interface
|
243
|
+
# hide! # => as above
|
244
|
+
# # ...
|
245
|
+
#
|
246
|
+
# view 'my_interface' do
|
247
|
+
# visible false
|
248
|
+
# # ...
|
249
|
+
#
|
250
|
+
# @return [void]
|
251
|
+
def visible(value = true)
|
252
|
+
boolean = value ? true : false
|
253
|
+
|
254
|
+
model.visible = boolean
|
255
|
+
end
|
256
|
+
|
207
257
|
private
|
208
258
|
|
209
259
|
# @!attribute [r] client
|
data/lib/vedeu/dsl/line.rb
CHANGED
@@ -67,21 +67,21 @@ module Vedeu
|
|
67
67
|
# @return [Vedeu::Lines]
|
68
68
|
def line(value = '', &block)
|
69
69
|
content = if block_given?
|
70
|
-
|
71
|
-
|
70
|
+
Vedeu::Line.build({ client: client,
|
71
|
+
parent: model.parent }, &block)
|
72
72
|
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
73
|
+
elsif value
|
74
|
+
stream = Vedeu::Stream.build(client: client,
|
75
|
+
parent: model,
|
76
|
+
value: value)
|
77
|
+
Vedeu::Line.build(client: client,
|
78
|
+
parent: model.parent,
|
79
|
+
streams: [stream])
|
80
80
|
|
81
|
-
|
82
|
-
|
81
|
+
else
|
82
|
+
fail InvalidSyntax, 'block not given'
|
83
83
|
|
84
|
-
|
84
|
+
end
|
85
85
|
|
86
86
|
model.parent.add(content)
|
87
87
|
end
|
data/lib/vedeu/dsl/shared/all.rb
CHANGED
@@ -1,7 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
module Vedeu
|
7
|
-
end # Vedeu
|
1
|
+
require_relative 'colour'
|
2
|
+
require_relative 'style'
|
3
|
+
require_relative 'text'
|
4
|
+
require_relative 'use'
|
@@ -36,14 +36,14 @@ module Vedeu
|
|
36
36
|
#
|
37
37
|
# @return [String]
|
38
38
|
def background(value = '')
|
39
|
-
colour(
|
39
|
+
colour(background: value)
|
40
40
|
end
|
41
41
|
alias_method :bg, :background
|
42
42
|
alias_method :bgcolor, :background
|
43
43
|
|
44
44
|
# @see Vedeu::DSL::Colour#background
|
45
45
|
def foreground(value = '')
|
46
|
-
colour(
|
46
|
+
colour(foreground: value)
|
47
47
|
end
|
48
48
|
alias_method :fg, :foreground
|
49
49
|
alias_method :fgcolor, :foreground
|
@@ -55,24 +55,9 @@ module Vedeu
|
|
55
55
|
# than the specified width.
|
56
56
|
# @return [String]
|
57
57
|
def text(value = '', options = {})
|
58
|
-
|
58
|
+
options.merge!(anchor: __callee__, model: model)
|
59
59
|
|
60
|
-
|
61
|
-
stream = stream_builder({ value: output })
|
62
|
-
Vedeu::Line.build({ streams: [stream], parent: model })
|
63
|
-
|
64
|
-
elsif model.is_a?(Vedeu::Line)
|
65
|
-
stream_builder({ value: output })
|
66
|
-
|
67
|
-
elsif model.is_a?(Vedeu::Stream)
|
68
|
-
stream_builder({ value: output, parent: model.parent })
|
69
|
-
|
70
|
-
else
|
71
|
-
# should never get here
|
72
|
-
|
73
|
-
end
|
74
|
-
|
75
|
-
model.add(content)
|
60
|
+
Vedeu::Text.add(value, options)
|
76
61
|
end
|
77
62
|
alias_method :align, :text
|
78
63
|
alias_method :center, :text
|
@@ -80,24 +65,6 @@ module Vedeu
|
|
80
65
|
alias_method :left, :text
|
81
66
|
alias_method :right, :text
|
82
67
|
|
83
|
-
private
|
84
|
-
|
85
|
-
# @param attrs [Hash]
|
86
|
-
# @return [Vedeu::Stream]
|
87
|
-
def stream_builder(attrs)
|
88
|
-
Vedeu::Stream.build(stream_attributes(attrs))
|
89
|
-
end
|
90
|
-
|
91
|
-
# @param attrs [Hash]
|
92
|
-
# @return [Hash]
|
93
|
-
def stream_attributes(attrs)
|
94
|
-
{
|
95
|
-
colour: model.colour,
|
96
|
-
parent: model,
|
97
|
-
style: model.style,
|
98
|
-
}.merge!(attrs)
|
99
|
-
end
|
100
|
-
|
101
68
|
end # Text
|
102
69
|
|
103
70
|
end # DSL
|
data/lib/vedeu/dsl/shared/use.rb
CHANGED
@@ -36,8 +36,8 @@ module Vedeu
|
|
36
36
|
def use(value)
|
37
37
|
if Vedeu.interfaces.registered?(value) == false
|
38
38
|
fail ModelNotFound, "The properties of this interface (#{value}) " \
|
39
|
-
|
40
|
-
|
39
|
+
'cannot be used, since the interface has not ' \
|
40
|
+
'been defined.'
|
41
41
|
end
|
42
42
|
|
43
43
|
Vedeu.interfaces.find(value)
|
data/lib/vedeu/dsl/view.rb
CHANGED
@@ -69,12 +69,12 @@ module Vedeu
|
|
69
69
|
#
|
70
70
|
# @note The views declared within this block are stored in their
|
71
71
|
# respective interface back buffers until a refresh event occurs. When
|
72
|
-
# the refresh event is triggered, the back buffers are swapped into
|
73
|
-
# front buffers and the content here will be rendered to
|
72
|
+
# the refresh event is triggered, the back buffers are swapped into
|
73
|
+
# the front buffers and the content here will be rendered to
|
74
74
|
# {Vedeu::Terminal.output}.
|
75
75
|
#
|
76
|
-
# @param block [Proc] The directives you wish to send to render.
|
77
|
-
# includes `view` with associated sub-directives.
|
76
|
+
# @param block [Proc] The directives you wish to send to render.
|
77
|
+
# Typically includes `view` with associated sub-directives.
|
78
78
|
#
|
79
79
|
# @example
|
80
80
|
# Vedeu.views do
|
data/lib/vedeu/events/all.rb
CHANGED