vedeu 0.7.4 → 0.8.0
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 +3 -0
- data/docs/api.md +5 -1
- data/docs/borders.md +2 -26
- data/docs/dsl.md +4 -4
- data/docs/dsl_elements.md +100 -0
- data/docs/events/by_name/action.md +3 -0
- data/docs/events/by_name/cursor_hide.md +3 -0
- data/docs/events/by_name/cursor_reset.md +3 -0
- data/docs/events/by_name/cursor_show.md +3 -0
- data/docs/events/by_name/geometry_down.md +3 -0
- data/docs/events/by_name/geometry_left.md +3 -0
- data/docs/events/by_name/geometry_right.md +3 -0
- data/docs/events/by_name/geometry_up.md +3 -0
- data/docs/events/by_name/hide_view.md +3 -0
- data/docs/events/by_name/set_border_caption.md +13 -0
- data/docs/events/by_name/set_border_title.md +13 -0
- data/docs/events/by_name/show_view.md +3 -0
- data/docs/events/by_name/standalone.md +3 -0
- data/docs/events/by_name/toggle_view.md +3 -0
- data/docs/events/by_name/view_down.md +4 -0
- data/docs/events/by_name/view_left.md +4 -0
- data/docs/events/by_name/view_right.md +4 -0
- data/docs/events/by_name/view_up.md +4 -0
- data/examples/views/empty_template.rb +46 -0
- data/examples/views/expected/line.out +1 -0
- data/examples/views/expected/lines.out +1 -0
- data/examples/views/expected/lines_alignment.out +1 -0
- data/examples/views/line.rb +220 -0
- data/examples/views/lines.rb +281 -0
- data/examples/views/lines_alignment.rb +231 -0
- data/examples/views/lines_line_stream.rb +99 -0
- data/examples/views/lines_line_streams.rb +73 -0
- data/examples/views/lines_line_streams_stream.rb +83 -0
- data/examples/views/lines_line_streams_stream_stream.rb +53 -0
- data/examples/views/lines_streams.rb +50 -0
- data/examples/views/lines_streams_stream.rb +51 -0
- data/examples/views/runner.sh +27 -0
- data/lib/vedeu/all.rb +6 -2
- data/lib/vedeu/application/controller.rb +1 -1
- data/lib/vedeu/boolean.rb +35 -0
- data/lib/vedeu/borders/border.rb +3 -3
- data/lib/vedeu/borders/caption.rb +1 -1
- data/lib/vedeu/borders/dsl.rb +1 -20
- data/lib/vedeu/borders/title.rb +6 -8
- data/lib/vedeu/buffers/buffer.rb +2 -2
- data/lib/vedeu/buffers/refresh.rb +1 -1
- data/lib/vedeu/cells/border.rb +0 -11
- data/lib/vedeu/cells/empty.rb +4 -4
- data/lib/vedeu/{geometries/alignment → coercers}/alignment.rb +50 -53
- data/lib/vedeu/coercers/all.rb +16 -0
- data/lib/vedeu/coercers/colour.rb +78 -0
- data/lib/vedeu/coercers/colour_attributes.rb +122 -0
- data/lib/vedeu/coercers/horizontal_alignment.rb +28 -0
- data/lib/vedeu/coercers/vertical_alignment.rb +27 -0
- data/lib/vedeu/colours/all.rb +1 -0
- data/lib/vedeu/colours/background.rb +13 -2
- data/lib/vedeu/colours/colour.rb +16 -31
- data/lib/vedeu/colours/foreground.rb +13 -2
- data/lib/vedeu/colours/translator.rb +21 -59
- data/lib/vedeu/colours/validator.rb +84 -0
- data/lib/vedeu/common.rb +52 -0
- data/lib/vedeu/configuration/api.rb +4 -10
- data/lib/vedeu/configuration/configuration.rb +4 -4
- data/lib/vedeu/cursors/coordinate.rb +1 -1
- data/lib/vedeu/cursors/cursor.rb +1 -1
- data/lib/vedeu/cursors/dsl.rb +1 -28
- data/lib/vedeu/dsl/all.rb +7 -7
- data/lib/vedeu/dsl/attributes.rb +224 -0
- data/lib/vedeu/dsl/border.rb +127 -0
- data/lib/vedeu/dsl/cursors.rb +44 -0
- data/lib/vedeu/dsl/dsl.rb +9 -0
- data/lib/vedeu/dsl/elements.rb +335 -0
- data/lib/vedeu/dsl/geometry.rb +113 -0
- data/lib/vedeu/dsl/string/align.rb +127 -0
- data/lib/vedeu/dsl/string/all.rb +14 -0
- data/lib/vedeu/dsl/string/text.rb +107 -0
- data/lib/vedeu/dsl/string/truncate.rb +111 -0
- data/lib/vedeu/{output → dsl/string}/wordwrap.rb +10 -6
- data/lib/vedeu/dsl/view.rb +124 -248
- data/lib/vedeu/dsl/views.rb +244 -0
- data/lib/vedeu/editor/cursor.rb +1 -1
- data/lib/vedeu/editor/delete.rb +3 -1
- data/lib/vedeu/editor/insert.rb +22 -6
- data/lib/vedeu/editor/line.rb +15 -9
- data/lib/vedeu/editor/lines.rb +27 -18
- data/lib/vedeu/esc/actions.rb +73 -26
- data/lib/vedeu/esc/all.rb +2 -0
- data/lib/vedeu/esc/background.rb +219 -0
- data/lib/vedeu/esc/borders.rb +72 -26
- data/lib/vedeu/esc/colours.rb +26 -27
- data/lib/vedeu/esc/esc.rb +4 -4
- data/lib/vedeu/esc/foreground.rb +219 -0
- data/lib/vedeu/esc/mouse.rb +16 -13
- data/lib/vedeu/events/aliases.rb +2 -2
- data/lib/vedeu/events/event.rb +1 -1
- data/lib/vedeu/geometries/all.rb +0 -1
- data/lib/vedeu/geometries/area/dimension.rb +2 -2
- data/lib/vedeu/geometries/dsl/dsl.rb +3 -51
- data/lib/vedeu/geometries/dsl/validator.rb +4 -4
- data/lib/vedeu/geometries/geometry.rb +10 -10
- data/lib/vedeu/geometries/move.rb +4 -4
- data/lib/vedeu/groups/dsl.rb +1 -0
- data/lib/vedeu/groups/group.rb +1 -1
- data/lib/vedeu/input/all.rb +1 -0
- data/lib/vedeu/input/capture.rb +14 -10
- data/lib/vedeu/input/dsl.rb +20 -26
- data/lib/vedeu/input/key.rb +0 -6
- data/lib/vedeu/input/keymap.rb +4 -9
- data/lib/vedeu/input/keys.rb +13 -0
- data/lib/vedeu/input/mapper.rb +29 -14
- data/lib/vedeu/input/read.rb +4 -2
- data/lib/vedeu/interfaces/dsl.rb +23 -22
- data/lib/vedeu/interfaces/interface.rb +2 -2
- data/lib/vedeu/logging/debug.rb +33 -0
- data/lib/vedeu/logging/log.rb +42 -33
- data/lib/vedeu/menus/dsl.rb +7 -18
- data/lib/vedeu/menus/menu.rb +1 -1
- data/lib/vedeu/models/focus.rb +1 -1
- data/lib/vedeu/models/toggleable.rb +4 -4
- data/lib/vedeu/null/generic.rb +2 -2
- data/lib/vedeu/output/all.rb +0 -2
- data/lib/vedeu/output/compressor_cache.rb +1 -1
- data/lib/vedeu/output/output.rb +5 -20
- data/lib/vedeu/presentation/colour.rb +39 -7
- data/lib/vedeu/presentation/style.rb +25 -11
- data/lib/vedeu/renderers/html.rb +11 -11
- data/lib/vedeu/repositories/assemblage.rb +9 -0
- data/lib/vedeu/repositories/collection.rb +1 -0
- data/lib/vedeu/repositories/defaults.rb +4 -1
- data/lib/vedeu/repositories/model.rb +7 -37
- data/lib/vedeu/repositories/parent.rb +6 -6
- data/lib/vedeu/repositories/registerable.rb +16 -2
- data/lib/vedeu/repositories/repositories.rb +1 -1
- data/lib/vedeu/repositories/repository.rb +2 -12
- data/lib/vedeu/runtime/flags.rb +1 -1
- data/lib/vedeu/terminal/terminal.rb +7 -2
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu/views/all.rb +4 -1
- data/lib/vedeu/views/char.rb +5 -4
- data/lib/vedeu/views/chars.rb +42 -0
- data/lib/vedeu/views/composition.rb +15 -30
- data/lib/vedeu/views/default_attributes.rb +74 -0
- data/lib/vedeu/views/html_char.rb +2 -2
- data/lib/vedeu/views/line.rb +27 -53
- data/lib/vedeu/views/lines.rb +31 -0
- data/lib/vedeu/views/stream.rb +31 -78
- data/lib/vedeu/views/streams.rb +42 -0
- data/lib/vedeu/views/value.rb +150 -0
- data/lib/vedeu/views/view.rb +32 -36
- data/lib/vedeu/views/{view_collection.rb → views.rb} +2 -2
- data/test/lib/vedeu/application/application_controller_test.rb +5 -0
- data/test/lib/vedeu/application/controller_test.rb +22 -28
- data/test/lib/vedeu/boolean_test.rb +57 -0
- data/test/lib/vedeu/borders/border_test.rb +130 -36
- data/test/lib/vedeu/borders/dsl_test.rb +63 -10
- data/test/lib/vedeu/borders/title_test.rb +16 -5
- data/test/lib/vedeu/buffers/buffer_test.rb +26 -10
- data/test/lib/vedeu/buffers/empty_test.rb +1 -1
- data/test/lib/vedeu/cells/border_test.rb +0 -6
- data/test/lib/vedeu/cells/clear_test.rb +2 -0
- data/test/lib/vedeu/cells/empty_test.rb +12 -2
- data/test/lib/vedeu/cells/escape_test.rb +7 -2
- data/test/lib/vedeu/{geometries/alignment → coercers}/alignment_test.rb +44 -19
- data/test/lib/vedeu/coercers/colour_attributes_test.rb +168 -0
- data/test/lib/vedeu/coercers/colour_test.rb +75 -0
- data/test/lib/vedeu/{geometries/alignment → coercers}/horizontal_alignment_test.rb +6 -6
- data/test/lib/vedeu/{geometries/alignment → coercers}/vertical_alignment_test.rb +6 -6
- data/test/lib/vedeu/colours/background_test.rb +17 -1
- data/test/lib/vedeu/colours/colour_test.rb +74 -2
- data/test/lib/vedeu/colours/foreground_test.rb +17 -1
- data/test/lib/vedeu/colours/repository_test.rb +1 -1
- data/test/lib/vedeu/colours/translator_test.rb +8 -1
- data/test/lib/vedeu/colours/validator_test.rb +60 -0
- data/test/lib/vedeu/common_test.rb +138 -0
- data/test/lib/vedeu/configuration/api_test.rb +96 -51
- data/test/lib/vedeu/cursors/coordinate_test.rb +58 -117
- data/test/lib/vedeu/cursors/cursor_test.rb +46 -17
- data/test/lib/vedeu/cursors/dsl_test.rb +19 -5
- data/test/lib/vedeu/distributed/client_test.rb +8 -3
- data/test/lib/vedeu/distributed/server_test.rb +8 -0
- data/test/lib/vedeu/distributed/test_application_test.rb +62 -19
- data/test/lib/vedeu/distributed/uri_test.rb +4 -2
- data/test/lib/vedeu/dsl/attributes_test.rb +212 -0
- data/test/lib/vedeu/dsl/border_test.rb +51 -0
- data/test/lib/vedeu/dsl/{lines_test.rb → cursors_test.rb} +2 -2
- data/test/lib/vedeu/dsl/dsl_test.rb +44 -0
- data/test/lib/vedeu/dsl/elements_test.rb +118 -0
- data/test/lib/vedeu/dsl/geometry_test.rb +35 -0
- data/test/lib/vedeu/dsl/presentation_test.rb +52 -11
- data/test/lib/vedeu/dsl/string/align_test.rb +147 -0
- data/test/lib/vedeu/dsl/string/text_test.rb +213 -0
- data/test/lib/vedeu/dsl/string/truncate_test.rb +97 -0
- data/test/lib/vedeu/{output → dsl/string}/wordwrap_test.rb +3 -3
- data/test/lib/vedeu/dsl/view_test.rb +30 -42
- data/test/lib/vedeu/dsl/views_test.rb +61 -0
- data/test/lib/vedeu/editor/cursor_test.rb +30 -12
- data/test/lib/vedeu/editor/document_test.rb +18 -10
- data/test/lib/vedeu/editor/line_test.rb +4 -1
- data/test/lib/vedeu/editor/lines_test.rb +11 -3
- data/test/lib/vedeu/esc/actions_test.rb +42 -4
- data/test/lib/vedeu/esc/background_test.rb +185 -0
- data/test/lib/vedeu/esc/borders_test.rb +37 -9
- data/test/lib/vedeu/esc/colours_test.rb +0 -59
- data/test/lib/vedeu/esc/foreground_test.rb +185 -0
- data/test/lib/vedeu/esc/mouse_test.rb +9 -4
- data/test/lib/vedeu/geometries/area/area_test.rb +34 -11
- data/test/lib/vedeu/geometries/dsl/dsl_test.rb +52 -61
- data/test/lib/vedeu/geometries/geometry_test.rb +62 -18
- data/test/lib/vedeu/geometries/position_test.rb +14 -7
- data/test/lib/vedeu/groups/dsl_test.rb +24 -15
- data/test/lib/vedeu/groups/group_test.rb +18 -8
- data/test/lib/vedeu/input/dsl_test.rb +33 -16
- data/test/lib/vedeu/input/key_test.rb +8 -1
- data/test/lib/vedeu/input/keymap_test.rb +4 -1
- data/test/lib/vedeu/input/keys_test.rb +16 -0
- data/test/lib/vedeu/interfaces/dsl_test.rb +24 -30
- data/test/lib/vedeu/interfaces/interface_test.rb +79 -24
- data/test/lib/vedeu/logging/ips_test.rb +10 -1
- data/test/lib/vedeu/menus/dsl_test.rb +24 -23
- data/test/lib/vedeu/menus/menu_test.rb +18 -8
- data/test/lib/vedeu/models/page_test.rb +5 -1
- data/test/lib/vedeu/models/row_test.rb +4 -0
- data/test/lib/vedeu/models/toggleable_test.rb +10 -6
- data/test/lib/vedeu/null/generic_test.rb +90 -1
- data/test/lib/vedeu/output/viewport_test.rb +11 -10
- data/test/lib/vedeu/plugins/plugin_test.rb +22 -9
- data/test/lib/vedeu/presentation/colour_test.rb +2 -1
- data/test/lib/vedeu/presentation/presentation_test.rb +13 -8
- data/test/lib/vedeu/presentation/style_test.rb +28 -13
- data/test/lib/vedeu/renderers/file_test.rb +4 -2
- data/test/lib/vedeu/renderers/options_test.rb +1 -1
- data/test/lib/vedeu/repositories/assemblage_test.rb +18 -0
- data/test/lib/vedeu/repositories/collection_test.rb +34 -10
- data/test/lib/vedeu/repositories/defaults_test.rb +6 -0
- data/test/lib/vedeu/repositories/model_test.rb +4 -13
- data/test/lib/vedeu/repositories/repository_test.rb +12 -5
- data/test/lib/vedeu/repositories/store_test.rb +9 -0
- data/test/lib/vedeu/runtime/flags_test.rb +6 -4
- data/test/lib/vedeu/runtime/launcher_test.rb +1 -1
- data/test/lib/vedeu/templating/helpers_test.rb +93 -65
- data/test/lib/vedeu/templating/view_template_test.rb +26 -26
- data/test/lib/vedeu/views/char_test.rb +36 -11
- data/test/lib/vedeu/views/chars_test.rb +71 -0
- data/test/lib/vedeu/views/composition_test.rb +17 -16
- data/test/lib/vedeu/views/default_attributes_test.rb +97 -0
- data/test/lib/vedeu/views/line_test.rb +20 -75
- data/test/lib/vedeu/views/lines_test.rb +47 -0
- data/test/lib/vedeu/views/stream_test.rb +38 -63
- data/test/lib/vedeu/views/streams_test.rb +9 -0
- data/test/lib/vedeu/views/value_test.rb +112 -0
- data/test/lib/vedeu/views/view_test.rb +67 -45
- data/test/lib/vedeu/views/views_test.rb +22 -0
- data/test/support/examples/material_colours_app.rb +2 -2
- data/test/support/helpers/model_test_class.rb +1 -0
- data/test/test_helper.rb +3 -1
- data/vedeu.gemspec +2 -2
- metadata +124 -58
- data/lib/vedeu/dsl/composition.rb +0 -150
- data/lib/vedeu/dsl/line.rb +0 -119
- data/lib/vedeu/dsl/lines.rb +0 -23
- data/lib/vedeu/dsl/shared.rb +0 -85
- data/lib/vedeu/dsl/stream.rb +0 -40
- data/lib/vedeu/dsl/streams.rb +0 -23
- data/lib/vedeu/dsl/text.rb +0 -98
- data/lib/vedeu/geometries/alignment/all.rb +0 -11
- data/lib/vedeu/geometries/alignment/horizontal_alignment.rb +0 -27
- data/lib/vedeu/geometries/alignment/vertical_alignment.rb +0 -27
- data/lib/vedeu/output/text.rb +0 -275
- data/test/lib/vedeu/dsl/composition_test.rb +0 -67
- data/test/lib/vedeu/dsl/line_test.rb +0 -85
- data/test/lib/vedeu/dsl/shared_test.rb +0 -66
- data/test/lib/vedeu/dsl/stream_test.rb +0 -30
- data/test/lib/vedeu/dsl/streams_test.rb +0 -13
- data/test/lib/vedeu/dsl/text_test.rb +0 -122
- data/test/lib/vedeu/output/text_test.rb +0 -156
- data/test/lib/vedeu/views/view_collection_test.rb +0 -13
data/lib/vedeu/esc/mouse.rb
CHANGED
@@ -30,25 +30,28 @@ module Vedeu
|
|
30
30
|
|
31
31
|
extend self
|
32
32
|
|
33
|
-
# @return [
|
34
|
-
def
|
35
|
-
|
36
|
-
mouse_x10_on: "\e[?9h".freeze,
|
37
|
-
mouse_x10_off: "\e[?9l".freeze,
|
38
|
-
mouse_on: "\e[?1000h".freeze,
|
39
|
-
mouse_off: "\e[?1000l".freeze,
|
40
|
-
}
|
33
|
+
# @return [String]
|
34
|
+
def mouse_x10_on
|
35
|
+
"\e[?9h".freeze
|
41
36
|
end
|
42
37
|
|
43
|
-
# @return [
|
44
|
-
def
|
45
|
-
|
38
|
+
# @return [String]
|
39
|
+
def mouse_x10_off
|
40
|
+
"\e[?9l".freeze
|
41
|
+
end
|
42
|
+
|
43
|
+
# @return [String]
|
44
|
+
def mouse_on
|
45
|
+
"\e[?1000h".freeze
|
46
|
+
end
|
47
|
+
|
48
|
+
# @return [String]
|
49
|
+
def mouse_off
|
50
|
+
"\e[?1000l".freeze
|
46
51
|
end
|
47
52
|
|
48
53
|
end # Mouse
|
49
54
|
|
50
55
|
end # EscapeSequences
|
51
56
|
|
52
|
-
Vedeu::EscapeSequences::Mouse.setup!
|
53
|
-
|
54
57
|
end # Vedeu
|
data/lib/vedeu/events/aliases.rb
CHANGED
@@ -58,7 +58,7 @@ module Vedeu
|
|
58
58
|
# Vedeu.unbind_alias(alias_name)
|
59
59
|
#
|
60
60
|
# @param alias_name [Symbol] The name of the alias.
|
61
|
-
# @return [
|
61
|
+
# @return [Boolean|Hash<Symbol => Array<Symbol>>]
|
62
62
|
def unbind_alias(alias_name)
|
63
63
|
return false if empty?
|
64
64
|
return false unless registered?(alias_name)
|
@@ -83,7 +83,7 @@ module Vedeu
|
|
83
83
|
|
84
84
|
# @param alias_name [Symbol]
|
85
85
|
# @param args [void]
|
86
|
-
# @return [
|
86
|
+
# @return [Boolean|Array<void>|void]
|
87
87
|
def trigger(alias_name, *args)
|
88
88
|
return [] unless registered?(alias_name)
|
89
89
|
|
data/lib/vedeu/events/event.rb
CHANGED
data/lib/vedeu/geometries/all.rb
CHANGED
@@ -76,9 +76,9 @@ module Vedeu
|
|
76
76
|
|
77
77
|
private
|
78
78
|
|
79
|
-
# @return [Vedeu::
|
79
|
+
# @return [Vedeu::Coercers::Alignment]
|
80
80
|
def alignment
|
81
|
-
Vedeu::
|
81
|
+
@_alignment ||= Vedeu::Coercers::Alignment.coerce(@alignment)
|
82
82
|
end
|
83
83
|
|
84
84
|
# Return the dimension.
|
@@ -74,58 +74,10 @@ module Vedeu
|
|
74
74
|
class DSL
|
75
75
|
|
76
76
|
include Vedeu::DSL
|
77
|
+
include Vedeu::DSL::Geometry
|
77
78
|
include Vedeu::DSL::Use
|
78
79
|
include Vedeu::Geometries::Validator
|
79
80
|
|
80
|
-
# Specify the geometry of an interface or view with a simple
|
81
|
-
# DSL.
|
82
|
-
#
|
83
|
-
# Vedeu.geometry :some_interface do
|
84
|
-
# # ...
|
85
|
-
# end
|
86
|
-
#
|
87
|
-
# @param name [String|Symbol] The name of the interface or view
|
88
|
-
# to which this geometry belongs.
|
89
|
-
# @param block [Proc]
|
90
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
91
|
-
# @return [Vedeu::Geometries::Geometry]
|
92
|
-
def self.geometry(name, &block)
|
93
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
94
|
-
|
95
|
-
Vedeu::Geometries::Geometry.build(name: name, &block).store
|
96
|
-
end
|
97
|
-
|
98
|
-
# Instructs Vedeu to align the interface/view either left,
|
99
|
-
# centre or right. A width is also required so that required
|
100
|
-
# coordinates are calculated correctly.
|
101
|
-
#
|
102
|
-
# Vedeu.geometry :some_interface do
|
103
|
-
# # :some_value must be one of: :left, :none, :center,
|
104
|
-
# # :centre, or :right
|
105
|
-
# # `width` is a positive integer, e.g. 30
|
106
|
-
# alignment(:some_value, width)
|
107
|
-
#
|
108
|
-
# # ... some code
|
109
|
-
# end
|
110
|
-
#
|
111
|
-
# @param value [Symbol] One of :center, :centre, :left, :none,
|
112
|
-
# :right.
|
113
|
-
# @param width [Fixnum] The width of the aligned interface/view.
|
114
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the value or width
|
115
|
-
# is not given.
|
116
|
-
# @return [Vedeu::Geometries::Geometry]
|
117
|
-
# def alignment(value, width)
|
118
|
-
# fail Vedeu::Error::InvalidSyntax,
|
119
|
-
# 'No alignment given. Valid values are :center, :centre, ' \
|
120
|
-
# ':left, :none, :right.'.freeze unless present?(value)
|
121
|
-
# fail Vedeu::Error::InvalidSyntax,
|
122
|
-
# 'No width given.'.freeze unless present?(width)
|
123
|
-
|
124
|
-
# model.alignment = Vedeu::Geometries::Alignment.align(value)
|
125
|
-
# model.width = width
|
126
|
-
# model
|
127
|
-
# end
|
128
|
-
|
129
81
|
# Align the interface/view horizontally or vertically within
|
130
82
|
# the terminal.
|
131
83
|
#
|
@@ -164,7 +116,7 @@ module Vedeu
|
|
164
116
|
validate_horizontal_alignment!(value)
|
165
117
|
validate_width!(width)
|
166
118
|
|
167
|
-
model.horizontal_alignment = Vedeu::
|
119
|
+
model.horizontal_alignment = Vedeu::Coercers::HorizontalAlignment
|
168
120
|
.coerce(value)
|
169
121
|
model.width = width
|
170
122
|
model
|
@@ -177,7 +129,7 @@ module Vedeu
|
|
177
129
|
validate_vertical_alignment!(value)
|
178
130
|
validate_height!(height)
|
179
131
|
|
180
|
-
model.vertical_alignment = Vedeu::
|
132
|
+
model.vertical_alignment = Vedeu::Coercers::VerticalAlignment
|
181
133
|
.coerce(value)
|
182
134
|
model.height = height
|
183
135
|
model
|
@@ -12,7 +12,7 @@ module Vedeu
|
|
12
12
|
|
13
13
|
# @param value [Fixnum] The number of lines/rows.
|
14
14
|
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
15
|
-
# @return [
|
15
|
+
# @return [Boolean]
|
16
16
|
def validate_height!(value)
|
17
17
|
fail Vedeu::Error::InvalidSyntax,
|
18
18
|
'No height given.'.freeze if absent?(value)
|
@@ -23,7 +23,7 @@ module Vedeu
|
|
23
23
|
# @param value [Symbol] One of :center, :centre, :left,
|
24
24
|
# :none, :right.
|
25
25
|
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
26
|
-
# @return [
|
26
|
+
# @return [Boolean]
|
27
27
|
def validate_horizontal_alignment!(value)
|
28
28
|
fail Vedeu::Error::InvalidSyntax,
|
29
29
|
'No horizontal alignment given. Valid values are :center, ' \
|
@@ -34,7 +34,7 @@ module Vedeu
|
|
34
34
|
|
35
35
|
# @param value [Symbol] One of :bottom, :middle, :none, :top.
|
36
36
|
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
37
|
-
# @return [
|
37
|
+
# @return [Boolean]
|
38
38
|
def validate_vertical_alignment!(value)
|
39
39
|
fail Vedeu::Error::InvalidSyntax,
|
40
40
|
'No vertical alignment given. Valid values are :bottom, ' \
|
@@ -45,7 +45,7 @@ module Vedeu
|
|
45
45
|
|
46
46
|
# @param value [Fixnum] The number of characters/columns.
|
47
47
|
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
48
|
-
# @return [
|
48
|
+
# @return [Boolean]
|
49
49
|
def validate_width!(value)
|
50
50
|
fail Vedeu::Error::InvalidSyntax,
|
51
51
|
'No width given.'.freeze if absent?(value)
|
@@ -108,13 +108,13 @@ module Vedeu
|
|
108
108
|
# Vedeu::Geometries::Repository]
|
109
109
|
def attributes
|
110
110
|
{
|
111
|
-
client:
|
111
|
+
client: client,
|
112
112
|
height: height,
|
113
|
-
horizontal_alignment:
|
114
|
-
maximised:
|
115
|
-
name:
|
116
|
-
repository:
|
117
|
-
vertical_alignment:
|
113
|
+
horizontal_alignment: horizontal_alignment,
|
114
|
+
maximised: maximised,
|
115
|
+
name: name,
|
116
|
+
repository: repository,
|
117
|
+
vertical_alignment: vertical_alignment,
|
118
118
|
width: width,
|
119
119
|
x: x,
|
120
120
|
xn: xn,
|
@@ -189,16 +189,16 @@ module Vedeu
|
|
189
189
|
|
190
190
|
# @return [Vedeu::Geometries::Area]
|
191
191
|
def area
|
192
|
-
|
192
|
+
Vedeu::Geometries::Area.from_attributes(area_attributes)
|
193
193
|
end
|
194
194
|
|
195
195
|
# @return [Hash<Symbol => Boolean|Fixnum>]
|
196
196
|
def area_attributes
|
197
197
|
{
|
198
|
-
horizontal_alignment:
|
199
|
-
maximised:
|
198
|
+
horizontal_alignment: horizontal_alignment,
|
199
|
+
maximised: maximised,
|
200
200
|
name: name,
|
201
|
-
vertical_alignment:
|
201
|
+
vertical_alignment: vertical_alignment,
|
202
202
|
x: @x.is_a?(Proc) ? @x.call : @x,
|
203
203
|
xn: @xn.is_a?(Proc) ? @xn.call : @xn,
|
204
204
|
x_xn: @width.is_a?(Proc) ? @width.call : @width,
|
@@ -27,13 +27,13 @@ module Vedeu
|
|
27
27
|
:y,
|
28
28
|
:yn
|
29
29
|
|
30
|
-
# @param
|
31
|
-
# @return
|
30
|
+
# @param (see #initialize)
|
31
|
+
# @return (see #move)
|
32
32
|
def self.move(attributes = {})
|
33
33
|
new(attributes).move
|
34
34
|
end
|
35
35
|
|
36
|
-
# @return [
|
36
|
+
# @return [Boolean|Vedeu::Geometries::Geometry]
|
37
37
|
def move
|
38
38
|
return false unless valid?
|
39
39
|
|
@@ -64,7 +64,7 @@ module Vedeu
|
|
64
64
|
def defaults
|
65
65
|
{
|
66
66
|
direction: :none,
|
67
|
-
name: '',
|
67
|
+
name: ''.freeze,
|
68
68
|
offset: 1,
|
69
69
|
}
|
70
70
|
end
|
data/lib/vedeu/groups/dsl.rb
CHANGED
@@ -57,6 +57,7 @@ module Vedeu
|
|
57
57
|
# @raise [Vedeu::Error::RequiresBlock]
|
58
58
|
# @return [Vedeu::Groups::Group]
|
59
59
|
def self.group(name, &block)
|
60
|
+
fail Vedeu::Error::MissingRequired unless name
|
60
61
|
fail Vedeu::Error::RequiresBlock unless block_given?
|
61
62
|
|
62
63
|
Vedeu::Groups::Group.build(name: name, &block).store
|
data/lib/vedeu/groups/group.rb
CHANGED
data/lib/vedeu/input/all.rb
CHANGED
data/lib/vedeu/input/capture.rb
CHANGED
@@ -54,7 +54,10 @@ module Vedeu
|
|
54
54
|
elsif fake_mode?
|
55
55
|
@key ||= keypress
|
56
56
|
|
57
|
-
if
|
57
|
+
if @key.nil?
|
58
|
+
nil
|
59
|
+
|
60
|
+
elsif click?(@key)
|
58
61
|
Vedeu.trigger(:_mouse_event_, @key)
|
59
62
|
|
60
63
|
elsif Vedeu::Input::Mapper.registered?(@key, name)
|
@@ -63,9 +66,6 @@ module Vedeu
|
|
63
66
|
elsif interface.editable?
|
64
67
|
Vedeu.trigger(:_editor_, @key)
|
65
68
|
|
66
|
-
elsif @key.nil?
|
67
|
-
nil
|
68
|
-
|
69
69
|
else
|
70
70
|
Vedeu.trigger(:key, @key)
|
71
71
|
|
@@ -93,9 +93,13 @@ module Vedeu
|
|
93
93
|
def input
|
94
94
|
keys = Vedeu::Input::Raw.read
|
95
95
|
|
96
|
-
|
96
|
+
if click?(keys)
|
97
|
+
Vedeu::Input::Mouse.click(keys)
|
98
|
+
|
99
|
+
else
|
100
|
+
keys
|
97
101
|
|
98
|
-
|
102
|
+
end
|
99
103
|
end
|
100
104
|
|
101
105
|
# @return [Vedeu::Interfaces::Interface]
|
@@ -106,12 +110,12 @@ module Vedeu
|
|
106
110
|
# Returns a boolean indicating whether a mouse click was
|
107
111
|
# received.
|
108
112
|
#
|
109
|
-
# @param
|
113
|
+
# @param keys [NilClass|String|Symbol|Vedeu::Cursors::Cursor]
|
110
114
|
# @return [Boolean]
|
111
|
-
def click?(
|
112
|
-
return false if
|
115
|
+
def click?(keys)
|
116
|
+
return false if keys.nil? || keys.is_a?(Symbol)
|
113
117
|
|
114
|
-
|
118
|
+
keys.is_a?(Vedeu::Cursors::Cursor) || keys.start_with?("\e[M".freeze)
|
115
119
|
end
|
116
120
|
|
117
121
|
# @return [IO]
|
data/lib/vedeu/input/dsl.rb
CHANGED
@@ -45,15 +45,30 @@ module Vedeu
|
|
45
45
|
# end
|
46
46
|
# end
|
47
47
|
#
|
48
|
+
# @note
|
49
|
+
# If a keymap with this name does not already exist,
|
50
|
+
# pre-register it, otherwise we have no way of knowing if a
|
51
|
+
# key defined in the DSL for this keymap has already been
|
52
|
+
# registered. This protects the client application from
|
53
|
+
# attempting to define the same key more than once for the
|
54
|
+
# same keymap.
|
55
|
+
#
|
56
|
+
# This is also used when defining the '_global_' keymap.
|
57
|
+
#
|
48
58
|
# @param name [String|Symbol] The name of the interface which
|
49
59
|
# this keymap relates to.
|
50
60
|
# @param block [Proc]
|
51
|
-
# @raise [Vedeu::Error::
|
61
|
+
# @raise [Vedeu::Error::MissingRequired|
|
62
|
+
# Vedeu::Error::RequiresBlock] When a name or block
|
63
|
+
# respectively are not given.
|
52
64
|
# @return [Vedeu::Input::Keymap]
|
53
|
-
# @todo Try to remember why we need to pre-create the keymap in
|
54
|
-
# the repository.
|
55
65
|
def self.keymap(name, &block)
|
56
|
-
Vedeu::
|
66
|
+
fail Vedeu::Error::MissingRequired unless name
|
67
|
+
fail Vedeu::Error::RequiresBlock unless block_given?
|
68
|
+
|
69
|
+
unless Vedeu.keymaps.registered?(name)
|
70
|
+
Vedeu::Input::Keymap.new(name: name).store
|
71
|
+
end
|
57
72
|
|
58
73
|
Vedeu::Input::Keymap.build(name: name, &block).store
|
59
74
|
end
|
@@ -84,32 +99,11 @@ module Vedeu
|
|
84
99
|
'An invalid value for `key` was encountered.'.freeze
|
85
100
|
end
|
86
101
|
|
87
|
-
model.add(
|
102
|
+
model.add(Vedeu::Input::Key.new(value, &block))
|
88
103
|
end
|
89
104
|
end
|
90
105
|
alias_method :key=, :key
|
91
106
|
|
92
|
-
# Define the name of the keymap.
|
93
|
-
#
|
94
|
-
# To only allow certain keys to work with specific interfaces,
|
95
|
-
# use the same name as the interface.
|
96
|
-
#
|
97
|
-
# When the name :_global_ is used, all keys in the keymap block
|
98
|
-
# will be available to all interfaces. Once a key has been
|
99
|
-
# defined in the :_global_ keymap, it cannot be used for a
|
100
|
-
# specific interface.
|
101
|
-
#
|
102
|
-
# Vedeu.keymap do
|
103
|
-
# name :some_interface
|
104
|
-
# end
|
105
|
-
#
|
106
|
-
# @param value [String|Symbol]
|
107
|
-
# @return [String]
|
108
|
-
def name(value)
|
109
|
-
model.name = value
|
110
|
-
end
|
111
|
-
alias_method :name=, :name
|
112
|
-
|
113
107
|
end # DSL
|
114
108
|
|
115
109
|
end # Input
|
data/lib/vedeu/input/key.rb
CHANGED
data/lib/vedeu/input/keymap.rb
CHANGED
@@ -9,9 +9,6 @@ module Vedeu
|
|
9
9
|
|
10
10
|
include Vedeu::Repositories::Model
|
11
11
|
|
12
|
-
collection Vedeu::Input::Keys
|
13
|
-
member Vedeu::Input::Key
|
14
|
-
|
15
12
|
# @!attribute [rw] name
|
16
13
|
# @return [String]
|
17
14
|
attr_accessor :name
|
@@ -59,7 +56,7 @@ module Vedeu
|
|
59
56
|
#
|
60
57
|
# @return [Vedeu::Input::Keys]
|
61
58
|
def keys
|
62
|
-
|
59
|
+
Vedeu::Input::Keys.coerce(@keys, self)
|
63
60
|
end
|
64
61
|
|
65
62
|
# Check whether the key is already defined for this keymap.
|
@@ -75,14 +72,12 @@ module Vedeu
|
|
75
72
|
# method triggers the action associated with the key.
|
76
73
|
#
|
77
74
|
# @param input [String|Symbol]
|
78
|
-
# @return [Array|
|
75
|
+
# @return [Array|Boolean]
|
79
76
|
def use(input)
|
80
77
|
return false unless key_defined?(input)
|
81
78
|
|
82
79
|
Vedeu.log(type: :input, message: "Key pressed: '#{input}'".freeze)
|
83
80
|
|
84
|
-
Vedeu.trigger(:key, input)
|
85
|
-
|
86
81
|
keys.select { |key| key.input == input }.map(&:press)
|
87
82
|
end
|
88
83
|
|
@@ -93,9 +88,9 @@ module Vedeu
|
|
93
88
|
# @return [Hash<Symbol => Array|String|Vedeu::Input::Repository]
|
94
89
|
def defaults
|
95
90
|
{
|
96
|
-
name: '',
|
91
|
+
name: ''.freeze,
|
97
92
|
keys: [],
|
98
|
-
repository: Vedeu
|
93
|
+
repository: Vedeu.keymaps,
|
99
94
|
}
|
100
95
|
end
|
101
96
|
|