vedeu 0.4.13 → 0.4.14
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/.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/events/event.rb
CHANGED
@@ -40,7 +40,7 @@ module Vedeu
|
|
40
40
|
# Register an event by name with optional delay (throttling) which when
|
41
41
|
# triggered will execute the code contained within the passed block.
|
42
42
|
#
|
43
|
-
# @param name [Symbol] The name of the event
|
43
|
+
# @param name [Symbol] The name of the event to be triggered later.
|
44
44
|
# @param options [Hash] The options to register the event with.
|
45
45
|
# @option options :delay [Fixnum|Float] Limits the execution of the
|
46
46
|
# triggered event to only execute when first triggered, with subsequent
|
@@ -49,8 +49,8 @@ module Vedeu
|
|
49
49
|
# triggered event to only execute once the debounce has expired.
|
50
50
|
# Subsequent triggers before debounce expiry are ignored.
|
51
51
|
# @param block [Proc] The event to be executed when triggered. This block
|
52
|
-
# could be a method call, or the triggering of another event, or
|
53
|
-
# of either/both.
|
52
|
+
# could be a method call, or the triggering of another event, or
|
53
|
+
# sequence of either/both.
|
54
54
|
#
|
55
55
|
# @example
|
56
56
|
# Vedeu.bind :my_event do |some, args|
|
@@ -218,7 +218,7 @@ module Vedeu
|
|
218
218
|
def debouncing?
|
219
219
|
set_time
|
220
220
|
|
221
|
-
set_deadline unless
|
221
|
+
set_deadline unless deadline?
|
222
222
|
|
223
223
|
options[:debounce] > 0
|
224
224
|
end
|
@@ -259,7 +259,7 @@ module Vedeu
|
|
259
259
|
# Returns a boolean indicating if this event has a deadline.
|
260
260
|
#
|
261
261
|
# @return [Boolean]
|
262
|
-
def
|
262
|
+
def deadline?
|
263
263
|
@deadline > 0
|
264
264
|
end
|
265
265
|
|
data/lib/vedeu/geometry/all.rb
CHANGED
@@ -1,16 +1,11 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
require 'vedeu/geometry/position'
|
13
|
-
require 'vedeu/geometry/position_validator'
|
14
|
-
|
15
|
-
module Vedeu
|
16
|
-
end # Vedeu
|
1
|
+
require_relative 'area'
|
2
|
+
require_relative 'canvas'
|
3
|
+
require_relative 'coordinate'
|
4
|
+
require_relative 'dimension'
|
5
|
+
require_relative 'geometry'
|
6
|
+
require_relative 'grid'
|
7
|
+
require_relative 'index_position'
|
8
|
+
require_relative 'null_geometry'
|
9
|
+
require_relative 'position_index'
|
10
|
+
require_relative 'position'
|
11
|
+
require_relative 'position_validator'
|
data/lib/vedeu/geometry/area.rb
CHANGED
@@ -58,11 +58,8 @@ module Vedeu
|
|
58
58
|
# @param other [Vedeu::Area]
|
59
59
|
# @return [Boolean]
|
60
60
|
def eql?(other)
|
61
|
-
self.class == other.class &&
|
62
|
-
|
63
|
-
yn == other.yn &&
|
64
|
-
x == other.x &&
|
65
|
-
xn == other.xn
|
61
|
+
self.class == other.class && y == other.y && yn == other.yn &&
|
62
|
+
x == other.x && xn == other.xn
|
66
63
|
end
|
67
64
|
alias_method :==, :eql?
|
68
65
|
|
@@ -1,5 +1,3 @@
|
|
1
|
-
require 'singleton'
|
2
|
-
|
3
1
|
module Vedeu
|
4
2
|
|
5
3
|
# The size of the terminal is a limitation. Defining a canvas means we have
|
@@ -9,6 +7,18 @@ module Vedeu
|
|
9
7
|
|
10
8
|
include Singleton
|
11
9
|
|
10
|
+
# @!attribute [r] yn
|
11
|
+
# @return [Fixnum]
|
12
|
+
attr_reader :yn
|
13
|
+
alias_method :bottom, :yn
|
14
|
+
alias_method :height, :yn
|
15
|
+
|
16
|
+
# @!attribute [r] xn
|
17
|
+
# @return [Fixnum]
|
18
|
+
attr_reader :xn
|
19
|
+
alias_method :right, :xn
|
20
|
+
alias_method :width, :xn
|
21
|
+
|
12
22
|
# @return [Vedeu::Canvas]
|
13
23
|
def self.canvas
|
14
24
|
instance
|
@@ -64,26 +74,12 @@ module Vedeu
|
|
64
74
|
end
|
65
75
|
alias_method :top, :y
|
66
76
|
|
67
|
-
# @return [Fixnum]
|
68
|
-
def yn
|
69
|
-
@yn
|
70
|
-
end
|
71
|
-
alias_method :bottom, :yn
|
72
|
-
alias_method :height, :yn
|
73
|
-
|
74
77
|
# @return [Fixnum]
|
75
78
|
def x
|
76
79
|
1
|
77
80
|
end
|
78
81
|
alias_method :left, :x
|
79
82
|
|
80
|
-
# @return [Fixnum]
|
81
|
-
def xn
|
82
|
-
@xn
|
83
|
-
end
|
84
|
-
alias_method :right, :xn
|
85
|
-
alias_method :width, :xn
|
86
|
-
|
87
83
|
end # Canvas
|
88
84
|
|
89
85
|
end # Vedeu
|
@@ -45,50 +45,51 @@ module Vedeu
|
|
45
45
|
private
|
46
46
|
|
47
47
|
# @!attribute [r] d
|
48
|
-
# @return [Fixnum]
|
48
|
+
# @return [Fixnum|NilClass]
|
49
49
|
attr_reader :d
|
50
50
|
|
51
51
|
# @!attribute [r] dn
|
52
|
-
# @return [Fixnum]
|
52
|
+
# @return [Fixnum|NilClass]
|
53
53
|
attr_reader :dn
|
54
54
|
|
55
55
|
# @!attribute [r] d_dn
|
56
|
-
# @return [Fixnum]
|
56
|
+
# @return [Fixnum|NilClass]
|
57
57
|
attr_reader :d_dn
|
58
58
|
|
59
59
|
# @!attribute [r] default
|
60
|
-
# @return [Fixnum]
|
60
|
+
# @return [Fixnum|NilClass]
|
61
61
|
attr_reader :default
|
62
62
|
|
63
63
|
# @return [Array<Fixnum>]
|
64
64
|
def dimension
|
65
65
|
@dimension ||= if centred? && length?
|
66
|
-
|
66
|
+
[(default / 2) - (length / 2),
|
67
|
+
(default / 2) + (length / 2)]
|
67
68
|
|
68
|
-
|
69
|
-
|
69
|
+
elsif d && dn
|
70
|
+
[d, dn]
|
70
71
|
|
71
|
-
|
72
|
-
|
72
|
+
elsif d && d_dn
|
73
|
+
[d, ((d + d_dn) - 1)]
|
73
74
|
|
74
|
-
|
75
|
-
|
75
|
+
elsif d_dn
|
76
|
+
[1, d_dn]
|
76
77
|
|
77
|
-
|
78
|
-
|
78
|
+
elsif d
|
79
|
+
[d, default]
|
79
80
|
|
80
|
-
|
81
|
-
|
81
|
+
elsif dn
|
82
|
+
[1, dn]
|
82
83
|
|
83
|
-
|
84
|
-
|
84
|
+
else
|
85
|
+
[1, default]
|
85
86
|
|
86
|
-
|
87
|
+
end
|
87
88
|
end
|
88
89
|
|
89
90
|
# @return [Boolean]
|
90
91
|
def length?
|
91
|
-
|
92
|
+
default && length
|
92
93
|
end
|
93
94
|
|
94
95
|
# @return [Fixnum|NilClass]
|
@@ -102,9 +103,6 @@ module Vedeu
|
|
102
103
|
elsif default
|
103
104
|
default
|
104
105
|
|
105
|
-
else
|
106
|
-
nil
|
107
|
-
|
108
106
|
end
|
109
107
|
end
|
110
108
|
|
@@ -33,24 +33,24 @@ module Vedeu
|
|
33
33
|
include Vedeu::Model
|
34
34
|
|
35
35
|
def_delegators :area,
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
36
|
+
:north,
|
37
|
+
:east,
|
38
|
+
:south,
|
39
|
+
:west,
|
40
|
+
:top,
|
41
|
+
:right,
|
42
|
+
:bottom,
|
43
|
+
:left,
|
44
|
+
:y,
|
45
|
+
:xn,
|
46
|
+
:yn,
|
47
|
+
:x,
|
48
|
+
:height,
|
49
|
+
:width,
|
50
|
+
:top_left,
|
51
|
+
:top_right,
|
52
|
+
:bottom_left,
|
53
|
+
:bottom_right
|
54
54
|
|
55
55
|
# @!attribute [rw] centred
|
56
56
|
# @return [Boolean]
|
@@ -122,22 +122,20 @@ module Vedeu
|
|
122
122
|
|
123
123
|
# @return [Array<Fixnum>]
|
124
124
|
def x_xn
|
125
|
-
@x_xn ||= Vedeu::Dimension.pair(
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
})
|
125
|
+
@x_xn ||= Vedeu::Dimension.pair(d: _x,
|
126
|
+
dn: _xn,
|
127
|
+
d_dn: @width,
|
128
|
+
default: Vedeu::Terminal.width,
|
129
|
+
options: { centred: centred })
|
131
130
|
end
|
132
131
|
|
133
132
|
# @return [Array<Fixnum>]
|
134
133
|
def y_yn
|
135
|
-
@y_yn ||= Vedeu::Dimension.pair(
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
})
|
134
|
+
@y_yn ||= Vedeu::Dimension.pair(d: _y,
|
135
|
+
dn: _yn,
|
136
|
+
d_dn: @height,
|
137
|
+
default: Vedeu::Terminal.height,
|
138
|
+
options: { centred: centred })
|
141
139
|
end
|
142
140
|
|
143
141
|
# Returns the row/line start position for the interface.
|
data/lib/vedeu/geometry/grid.rb
CHANGED
@@ -51,6 +51,13 @@ module Vedeu
|
|
51
51
|
Vedeu::Position.new(y, x)
|
52
52
|
end
|
53
53
|
|
54
|
+
# @param other [Vedeu::IndexPosition]
|
55
|
+
# @return [Boolean]
|
56
|
+
def eql?(other)
|
57
|
+
self.class == other.class && (x == other.x && y == other.y)
|
58
|
+
end
|
59
|
+
alias_method :==, :eql?
|
60
|
+
|
54
61
|
# @return [Fixnum]
|
55
62
|
def y
|
56
63
|
(iy <= 0) ? oy : (iy + oy)
|
@@ -0,0 +1,61 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
# Provides geometry for interfaces that do not have geometry defined.
|
4
|
+
#
|
5
|
+
class NullGeometry
|
6
|
+
|
7
|
+
extend Forwardable
|
8
|
+
|
9
|
+
def_delegators :area,
|
10
|
+
:north,
|
11
|
+
:east,
|
12
|
+
:south,
|
13
|
+
:west,
|
14
|
+
:top,
|
15
|
+
:right,
|
16
|
+
:bottom,
|
17
|
+
:left,
|
18
|
+
:y,
|
19
|
+
:xn,
|
20
|
+
:yn,
|
21
|
+
:x,
|
22
|
+
:height,
|
23
|
+
:width,
|
24
|
+
:top_left,
|
25
|
+
:top_right,
|
26
|
+
:bottom_left,
|
27
|
+
:bottom_right
|
28
|
+
|
29
|
+
# @return [Vedeu::NullGeometry]
|
30
|
+
def initialize; end
|
31
|
+
|
32
|
+
# @return [FalseClass]
|
33
|
+
def centred
|
34
|
+
false
|
35
|
+
end
|
36
|
+
|
37
|
+
# @return [Vedeu::NullGeometry]
|
38
|
+
def store
|
39
|
+
self
|
40
|
+
end
|
41
|
+
|
42
|
+
private
|
43
|
+
|
44
|
+
# @return [Vedeu::Area]
|
45
|
+
def area
|
46
|
+
@area ||= Vedeu::Area.from_dimensions(y_yn: y_yn, x_xn: x_xn)
|
47
|
+
end
|
48
|
+
|
49
|
+
# @return [Array<Fixnum>]
|
50
|
+
def x_xn
|
51
|
+
@x_xn ||= Vedeu::Dimension.pair(default: Vedeu::Terminal.width)
|
52
|
+
end
|
53
|
+
|
54
|
+
# @return [Array<Fixnum>]
|
55
|
+
def y_yn
|
56
|
+
@y_yn ||= Vedeu::Dimension.pair(default: Vedeu::Terminal.height)
|
57
|
+
end
|
58
|
+
|
59
|
+
end # NullGeometry
|
60
|
+
|
61
|
+
end # Vedeu
|
@@ -35,6 +35,13 @@ module Vedeu
|
|
35
35
|
[y, x]
|
36
36
|
end
|
37
37
|
|
38
|
+
# @param other [Vedeu::PositionIndex]
|
39
|
+
# @return [Boolean]
|
40
|
+
def eql?(other)
|
41
|
+
self.class == other.class && (x == other.x && y == other.y)
|
42
|
+
end
|
43
|
+
alias_method :==, :eql?
|
44
|
+
|
38
45
|
# @return [Vedeu::Position]
|
39
46
|
def to_position
|
40
47
|
Vedeu::Position.new(y, x)
|
@@ -3,34 +3,30 @@ require 'vedeu/support/terminal'
|
|
3
3
|
module Vedeu
|
4
4
|
|
5
5
|
# Validates that the provided coordinates are within the terminal and
|
6
|
-
# interface (with or without a border).
|
6
|
+
# interface's geometry (with or without a border).
|
7
7
|
#
|
8
8
|
class PositionValidator
|
9
9
|
|
10
10
|
extend Forwardable
|
11
11
|
|
12
|
-
def_delegators
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
def_delegators :interface,
|
19
|
-
:border?,
|
20
|
-
:border,
|
21
|
-
:geometry
|
12
|
+
def_delegators :terminal,
|
13
|
+
:tx,
|
14
|
+
:ty,
|
15
|
+
:txn,
|
16
|
+
:tyn
|
22
17
|
|
23
18
|
def_delegators :border,
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
19
|
+
:enabled?,
|
20
|
+
:left?,
|
21
|
+
:right?,
|
22
|
+
:top?,
|
23
|
+
:bottom?
|
28
24
|
|
29
25
|
def_delegators :geometry,
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
26
|
+
:left,
|
27
|
+
:right,
|
28
|
+
:top,
|
29
|
+
:bottom
|
34
30
|
|
35
31
|
# @!attribute [rw] x
|
36
32
|
# @return [Fixnum]
|
@@ -41,36 +37,41 @@ module Vedeu
|
|
41
37
|
attr_accessor :y
|
42
38
|
|
43
39
|
# @param (see #initialize)
|
44
|
-
def self.validate(
|
45
|
-
new(
|
40
|
+
def self.validate(name, x, y)
|
41
|
+
new(name, x, y).validate
|
46
42
|
end
|
47
43
|
|
48
44
|
# Returns a new instance of Vedeu::PositionValidator.
|
49
45
|
#
|
50
|
-
# @param
|
46
|
+
# @param name [String]
|
51
47
|
# @param x [Fixnum]
|
52
48
|
# @param y [Fixnum]
|
53
49
|
# @return [PositionValidator]
|
54
|
-
def initialize(
|
55
|
-
@
|
56
|
-
@x
|
57
|
-
@y
|
50
|
+
def initialize(name, x, y)
|
51
|
+
@name = name
|
52
|
+
@x = x
|
53
|
+
@y = y
|
58
54
|
end
|
59
55
|
|
60
56
|
# @return [PositionValidator]
|
61
57
|
def validate
|
62
58
|
terminal_validation
|
63
59
|
interface_validation
|
64
|
-
border_validation if
|
60
|
+
border_validation if enabled?
|
65
61
|
|
66
62
|
self
|
67
63
|
end
|
68
64
|
|
69
65
|
private
|
70
66
|
|
71
|
-
# @!attribute [r]
|
72
|
-
# @return [
|
73
|
-
attr_reader :
|
67
|
+
# @!attribute [r] name
|
68
|
+
# @return [String]
|
69
|
+
attr_reader :name
|
70
|
+
|
71
|
+
# @return [Vedeu::Terminal]
|
72
|
+
def terminal
|
73
|
+
Vedeu::Terminal
|
74
|
+
end
|
74
75
|
|
75
76
|
# Validate the x and y coordinates are within the dimensions of the
|
76
77
|
# terminal.
|
@@ -103,14 +104,24 @@ module Vedeu
|
|
103
104
|
#
|
104
105
|
# @return [PositionValidator]
|
105
106
|
def border_validation
|
106
|
-
@x = left + 1 if left?
|
107
|
-
@x = right - 2 if right?
|
108
|
-
@y = top + 1 if top?
|
107
|
+
@x = left + 1 if left? && x < (left + 1)
|
108
|
+
@x = right - 2 if right? && x > (right - 1)
|
109
|
+
@y = top + 1 if top? && y < (top + 1)
|
109
110
|
@y = bottom - 2 if bottom? && y > (bottom - 1)
|
110
111
|
|
111
112
|
self
|
112
113
|
end
|
113
114
|
|
115
|
+
# @return [Vedeu::Border|Vedeu::NullBorder|NilClass]
|
116
|
+
def border
|
117
|
+
@border ||= Vedeu.borders.by_name(name)
|
118
|
+
end
|
119
|
+
|
120
|
+
# @return [Vedeu::Geometry|Vedeu::NullGeometry]
|
121
|
+
def geometry
|
122
|
+
@geometry ||= Vedeu.geometries.by_name(name)
|
123
|
+
end
|
124
|
+
|
114
125
|
end # PositionValidator
|
115
126
|
|
116
127
|
end # Vedeu
|
data/lib/vedeu/input/all.rb
CHANGED
@@ -1,8 +1,9 @@
|
|
1
1
|
require 'vedeu/repositories/all'
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
2
|
+
|
3
|
+
require_relative 'mapper'
|
4
|
+
require_relative 'key'
|
5
|
+
require_relative 'input'
|
6
|
+
require_relative 'keymap'
|
6
7
|
|
7
8
|
module Vedeu
|
8
9
|
|
data/lib/vedeu/input/keymap.rb
CHANGED
data/lib/vedeu/input/mapper.rb
CHANGED
data/lib/vedeu/launcher.rb
CHANGED
@@ -20,11 +20,7 @@ module Vedeu
|
|
20
20
|
stdout = STDOUT,
|
21
21
|
stderr = STDERR,
|
22
22
|
kernel = Kernel)
|
23
|
-
new(argv,
|
24
|
-
stdin = STDIN,
|
25
|
-
stdout = STDOUT,
|
26
|
-
stderr = STDERR,
|
27
|
-
kernel = Kernel).debug_execute!
|
23
|
+
new(argv, stdin, stdout, stderr, kernel).debug_execute!
|
28
24
|
end
|
29
25
|
|
30
26
|
# Returns a new instance of Vedeu::Launcher.
|
@@ -72,7 +68,6 @@ module Vedeu
|
|
72
68
|
rescue StandardError => uncaught_exception
|
73
69
|
puts uncaught_exception.message
|
74
70
|
puts uncaught_exception.backtrace.join("\n") if configuration.debug?
|
75
|
-
|
76
71
|
end
|
77
72
|
|
78
73
|
private
|
@@ -85,13 +80,17 @@ module Vedeu
|
|
85
80
|
#
|
86
81
|
# @return [void]
|
87
82
|
def terminate!
|
88
|
-
Vedeu.log(type: :info, message:
|
83
|
+
Vedeu.log(type: :info, message: 'Exiting gracefully.')
|
89
84
|
|
90
85
|
$stdin, $stdout, $stderr = STDIN, STDOUT, STDERR
|
91
86
|
|
92
87
|
@kernel.exit(exit_code)
|
93
88
|
end
|
94
89
|
|
90
|
+
# Use the arguments passed on the command-line along with those defined by
|
91
|
+
# the client application and Vedeu's defaults to configure the client
|
92
|
+
# application.
|
93
|
+
#
|
95
94
|
# @return [Vedeu::Configuration]
|
96
95
|
def configuration
|
97
96
|
Vedeu::Configuration.configure(argv)
|
data/lib/vedeu/main_loop.rb
CHANGED
data/lib/vedeu/models/all.rb
CHANGED
data/lib/vedeu/models/cell.rb
CHANGED
@@ -30,7 +30,8 @@ module Vedeu
|
|
30
30
|
|
31
31
|
# Returns a new instance of Vedeu::Cell.
|
32
32
|
#
|
33
|
-
# @param attributes [Hash<Symbol => Array<Symbol|String>,
|
33
|
+
# @param attributes [Hash<Symbol => Array<Symbol|String>,
|
34
|
+
# Fixnum, String, Symbol]
|
34
35
|
# @option attributes background [NilClass|String]
|
35
36
|
# @option attributes foreground [NilClass|String]
|
36
37
|
# @option attributes style [NilClass|Array<Symbol|String>|Symbol|String]
|
@@ -50,13 +51,9 @@ module Vedeu
|
|
50
51
|
# @param other [Vedeu::Cell]
|
51
52
|
# @return [Boolean]
|
52
53
|
def eql?(other)
|
53
|
-
self.class == other.class
|
54
|
-
|
55
|
-
|
56
|
-
style == other.style &&
|
57
|
-
value == other.value &&
|
58
|
-
x == other.x &&
|
59
|
-
y == other.y
|
54
|
+
self.class == other.class && background == other.background &&
|
55
|
+
foreground == other.foreground && style == other.style &&
|
56
|
+
value == other.value && x == other.x && y == other.y
|
60
57
|
end
|
61
58
|
alias_method :==, :eql?
|
62
59
|
|