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/input/mapper.rb
CHANGED
@@ -20,20 +20,21 @@ module Vedeu
|
|
20
20
|
# @param (see #initialize)
|
21
21
|
# @return [Boolean]
|
22
22
|
def keypress(key = nil, name = nil)
|
23
|
-
Vedeu.trigger(:key, key)
|
24
|
-
|
25
|
-
return false unless key
|
26
|
-
|
27
23
|
new(key, name).keypress
|
28
24
|
end
|
29
25
|
|
26
|
+
# @param key [String|Symbol] The keypress.
|
27
|
+
# @param name [String|Symbol] The keymap name.
|
28
|
+
# @raise [Vedeu::Error::MissingRequired] When the key or name
|
29
|
+
# params are missing.
|
30
|
+
# @return [Boolean]
|
30
31
|
def registered?(key = nil, name = nil)
|
31
32
|
fail Vedeu::Error::MissingRequired,
|
32
33
|
'Cannot check whether a key is registered to a keymap without ' \
|
33
|
-
'the key.' if absent?(key)
|
34
|
+
'the key.'.freeze if absent?(key)
|
34
35
|
fail Vedeu::Error::MissingRequired,
|
35
36
|
'Cannot check whether a key is registered to a keymap without ' \
|
36
|
-
'the keymap name.' if absent?(name)
|
37
|
+
'the keymap name.'.freeze if absent?(name)
|
37
38
|
|
38
39
|
new(key, name).registered?
|
39
40
|
end
|
@@ -69,13 +70,15 @@ module Vedeu
|
|
69
70
|
#
|
70
71
|
# @return [Boolean]
|
71
72
|
def keypress
|
73
|
+
Vedeu.trigger(:key, key)
|
74
|
+
|
72
75
|
return false unless key
|
73
76
|
|
74
77
|
return true if key_defined? && keymap.use(key)
|
75
78
|
|
76
79
|
return true if global_key? && keymap('_global_').use(key)
|
77
80
|
|
78
|
-
Vedeu.log(type: :input, message:
|
81
|
+
Vedeu.log(type: :input, message: log_message(key))
|
79
82
|
|
80
83
|
false
|
81
84
|
end
|
@@ -102,7 +105,7 @@ module Vedeu
|
|
102
105
|
protected
|
103
106
|
|
104
107
|
# @!attribute [r] key
|
105
|
-
# @return [String|Symbol]
|
108
|
+
# @return [NilClass|String|Symbol|Vedeu::Cursors::Cursor]
|
106
109
|
attr_reader :key
|
107
110
|
|
108
111
|
# @!attribute [r] repository
|
@@ -135,6 +138,18 @@ module Vedeu
|
|
135
138
|
repository.registered?(named)
|
136
139
|
end
|
137
140
|
|
141
|
+
# @param key [NilClass|String|Symbol|Vedeu::Cursors::Cursor]
|
142
|
+
# @return [String]
|
143
|
+
def log_message(key)
|
144
|
+
if key.is_a?(Vedeu::Cursors::Cursor)
|
145
|
+
"Click detected: x: #{key.x} y: #{key.y}".freeze
|
146
|
+
|
147
|
+
else
|
148
|
+
"Key detected: #{key.inspect}".freeze
|
149
|
+
|
150
|
+
end
|
151
|
+
end
|
152
|
+
|
138
153
|
# With a name, we check the keymap with that name, otherwise we
|
139
154
|
# use the name of the interface currently in focus.
|
140
155
|
#
|
@@ -158,8 +173,6 @@ module Vedeu
|
|
158
173
|
# See {file:docs/events/system.md#\_keypress_}
|
159
174
|
Vedeu.bind(:_keypress_) do |key, name|
|
160
175
|
Vedeu.timer('Executing keypress') do
|
161
|
-
Vedeu.trigger(:key, key)
|
162
|
-
|
163
176
|
Vedeu.add_keypress(key)
|
164
177
|
|
165
178
|
Vedeu.keypress(key, name)
|
@@ -170,10 +183,12 @@ module Vedeu
|
|
170
183
|
Vedeu.bind(:_drb_input_) do |data, type|
|
171
184
|
Vedeu.log(type: :drb, message: "Sending input (#{type})".freeze)
|
172
185
|
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
else
|
186
|
+
if type == :command
|
187
|
+
Vedeu.trigger(:_command_, data)
|
188
|
+
|
189
|
+
else
|
190
|
+
Vedeu.trigger(:_keypress_, data)
|
191
|
+
|
177
192
|
end
|
178
193
|
end
|
179
194
|
|
data/lib/vedeu/input/read.rb
CHANGED
@@ -116,8 +116,10 @@ module Vedeu
|
|
116
116
|
|
117
117
|
# @return [Symbol]
|
118
118
|
def mode
|
119
|
-
|
120
|
-
|
119
|
+
unless valid_mode?
|
120
|
+
fail Vedeu::Error::InvalidSyntax,
|
121
|
+
':mode must be `:raw`, `:fake` or `:cooked`.'.freeze
|
122
|
+
end
|
121
123
|
|
122
124
|
options[:mode]
|
123
125
|
end
|
data/lib/vedeu/interfaces/dsl.rb
CHANGED
@@ -8,10 +8,10 @@ module Vedeu
|
|
8
8
|
|
9
9
|
include Vedeu::Common
|
10
10
|
include Vedeu::DSL
|
11
|
-
include Vedeu::Cursors
|
11
|
+
include Vedeu::DSL::Cursors
|
12
|
+
include Vedeu::DSL::Border
|
13
|
+
include Vedeu::DSL::Geometry
|
12
14
|
include Vedeu::DSL::Presentation
|
13
|
-
include Vedeu::DSL::Shared
|
14
|
-
include Vedeu::DSL::Text
|
15
15
|
include Vedeu::DSL::Use
|
16
16
|
|
17
17
|
class << self
|
@@ -36,9 +36,8 @@ module Vedeu
|
|
36
36
|
# @return [Vedeu::Interfaces::Interface]
|
37
37
|
# @todo More documentation required.
|
38
38
|
def interface(name, &block)
|
39
|
+
fail Vedeu::Error::MissingRequired unless name
|
39
40
|
fail Vedeu::Error::RequiresBlock unless block_given?
|
40
|
-
fail Vedeu::Error::MissingRequired,
|
41
|
-
'name not given'.freeze unless present?(name)
|
42
41
|
|
43
42
|
attributes = { client: client(&block), name: name }
|
44
43
|
|
@@ -50,6 +49,7 @@ module Vedeu
|
|
50
49
|
add_cursor!(name)
|
51
50
|
add_editor!(name) if interface.editable?
|
52
51
|
add_focusable!(name)
|
52
|
+
add_keymap!(name)
|
53
53
|
|
54
54
|
interface
|
55
55
|
end
|
@@ -87,11 +87,20 @@ module Vedeu
|
|
87
87
|
# registered.
|
88
88
|
#
|
89
89
|
# @param name [String|Symbol]
|
90
|
-
# @return [
|
90
|
+
# @return [Array<String|Symbol>]
|
91
91
|
def add_focusable!(name)
|
92
92
|
Vedeu::Models::Focus.add(name)
|
93
93
|
end
|
94
94
|
|
95
|
+
# Registers a new keymap for the interface unless already
|
96
|
+
# registered.
|
97
|
+
#
|
98
|
+
# @param name [String|Symbol]
|
99
|
+
# @return [NilClass|Vedeu::Input::Keymap]
|
100
|
+
def add_keymap!(name)
|
101
|
+
Vedeu::Input::Keymap.store(name: name) unless keymap?(name)
|
102
|
+
end
|
103
|
+
|
95
104
|
# Returns the client object which called the DSL method.
|
96
105
|
#
|
97
106
|
# @param block [Proc]
|
@@ -100,6 +109,14 @@ module Vedeu
|
|
100
109
|
eval('self', block.binding)
|
101
110
|
end
|
102
111
|
|
112
|
+
private
|
113
|
+
|
114
|
+
# @param name [String|Symbol]
|
115
|
+
# @return [Boolean]
|
116
|
+
def keymap?(name)
|
117
|
+
Vedeu.keymaps.registered?(name)
|
118
|
+
end
|
119
|
+
|
103
120
|
end # Eigenclass
|
104
121
|
|
105
122
|
# To maintain performance interfaces can be delayed from
|
@@ -213,22 +230,6 @@ module Vedeu
|
|
213
230
|
end
|
214
231
|
alias_method :keys, :keymap
|
215
232
|
|
216
|
-
# The name of the interface. Used to reference the interface
|
217
|
-
# throughout your application's execution lifetime.
|
218
|
-
#
|
219
|
-
# @param value [String|Symbol]
|
220
|
-
#
|
221
|
-
# @example
|
222
|
-
# Vedeu.interface do
|
223
|
-
# name :my_interface
|
224
|
-
# # ...
|
225
|
-
# end
|
226
|
-
#
|
227
|
-
# @return [String|Symbol]
|
228
|
-
def name(value)
|
229
|
-
model.name = value
|
230
|
-
end
|
231
|
-
|
232
233
|
# Set the interface to visible.
|
233
234
|
#
|
234
235
|
# @example
|
data/lib/vedeu/logging/debug.rb
CHANGED
@@ -9,6 +9,28 @@ module Vedeu
|
|
9
9
|
|
10
10
|
extend self
|
11
11
|
|
12
|
+
# @param binding [Binding]
|
13
|
+
# @param obj [Object]
|
14
|
+
# @return [void]
|
15
|
+
def debug(binding = nil, obj = nil)
|
16
|
+
require 'pry'
|
17
|
+
|
18
|
+
if obj
|
19
|
+
message = ::Pry::ColorPrinter.pp(obj, '')
|
20
|
+
|
21
|
+
Vedeu.log(type: :debug, message: "#{message}")
|
22
|
+
|
23
|
+
elsif binding
|
24
|
+
Vedeu::Terminal.cooked_mode!
|
25
|
+
Vedeu::Terminal.open do
|
26
|
+
Vedeu::Terminal.debugging!
|
27
|
+
|
28
|
+
binding.pry
|
29
|
+
end
|
30
|
+
Vedeu::Terminal.raw_mode!
|
31
|
+
end
|
32
|
+
end
|
33
|
+
|
12
34
|
# :nocov:
|
13
35
|
# Helps to profile a running application by providing a stack
|
14
36
|
# trace of its execution upon exiting.
|
@@ -99,4 +121,15 @@ module Vedeu
|
|
99
121
|
def_delegators Vedeu::Logging::Debug,
|
100
122
|
:profile
|
101
123
|
|
124
|
+
# Drop into a debugging session within a running client application,
|
125
|
+
# courtesy of pry.
|
126
|
+
#
|
127
|
+
# @example
|
128
|
+
# Vedeu.debug
|
129
|
+
#
|
130
|
+
# @!method debug
|
131
|
+
# @return [void]
|
132
|
+
def_delegators Vedeu::Logging::Debug,
|
133
|
+
:debug
|
134
|
+
|
102
135
|
end # Vedeu
|
data/lib/vedeu/logging/log.rb
CHANGED
@@ -22,7 +22,7 @@ module Vedeu
|
|
22
22
|
# @param type [Symbol] Colour code messages in the log file
|
23
23
|
# depending on their source. See {message_types}
|
24
24
|
#
|
25
|
-
# @return [
|
25
|
+
# @return [String]
|
26
26
|
def log(message:, force: false, type: :info)
|
27
27
|
output = log_entry(type, message)
|
28
28
|
|
@@ -38,7 +38,7 @@ module Vedeu
|
|
38
38
|
# @example
|
39
39
|
# Vedeu.log_stdout
|
40
40
|
#
|
41
|
-
# @return [
|
41
|
+
# @return [String]
|
42
42
|
def log_stdout(type: :info, message:)
|
43
43
|
$stdout.puts log_entry(type, message)
|
44
44
|
end
|
@@ -48,7 +48,7 @@ module Vedeu
|
|
48
48
|
# @example
|
49
49
|
# Vedeu.log_stderr
|
50
50
|
#
|
51
|
-
# @return [
|
51
|
+
# @return [String]
|
52
52
|
def log_stderr(type: :info, message:)
|
53
53
|
$stderr.puts log_entry(type, message)
|
54
54
|
end
|
@@ -73,7 +73,7 @@ module Vedeu
|
|
73
73
|
|
74
74
|
private
|
75
75
|
|
76
|
-
# @return [
|
76
|
+
# @return [Boolean]
|
77
77
|
def logger
|
78
78
|
MonoLogger.new(log_file).tap do |log|
|
79
79
|
log.formatter = proc do |_, _, _, message|
|
@@ -120,9 +120,17 @@ module Vedeu
|
|
120
120
|
# @param body [String] The log message itself.
|
121
121
|
# @return [String]
|
122
122
|
def message_body(type, body)
|
123
|
-
|
124
|
-
|
125
|
-
|
123
|
+
message_colour(type, -1) { body }
|
124
|
+
end
|
125
|
+
|
126
|
+
# @param type [Symbol] The type of log message.
|
127
|
+
# @param index [Fixnum] Either 0 or -1.
|
128
|
+
# @param block [Proc]
|
129
|
+
# @return [String]
|
130
|
+
def message_colour(type, index, &block)
|
131
|
+
Vedeu::EscapeSequences::Esc.send(
|
132
|
+
message_types.fetch(type, :default)[index]) do
|
133
|
+
yield if block_given?
|
126
134
|
end
|
127
135
|
end
|
128
136
|
|
@@ -132,10 +140,7 @@ module Vedeu
|
|
132
140
|
# @param type [Symbol] The type of log message.
|
133
141
|
# @return [String]
|
134
142
|
def message_type(type)
|
135
|
-
|
136
|
-
.send(message_types.fetch(type, :default)[0]) do
|
137
|
-
"[#{type}]".ljust(11)
|
138
|
-
end
|
143
|
+
message_colour(type, 0) { "[#{type}]".ljust(11) }
|
139
144
|
end
|
140
145
|
|
141
146
|
# The defined message types for Vedeu with their respective
|
@@ -147,40 +152,44 @@ module Vedeu
|
|
147
152
|
# value array, whilst the 'message' will be shown using the
|
148
153
|
# last colour.
|
149
154
|
#
|
150
|
-
# Valid types available:
|
151
|
-
#
|
152
|
-
# :config, :create, :debug, :error, :drb, :event, :info,
|
153
|
-
# :input, :output, :reset, :store, :test, :timer, :update
|
154
|
-
#
|
155
155
|
# @return [Hash<Symbol => Array<Symbol>>]
|
156
156
|
def message_types
|
157
157
|
{
|
158
|
-
create:
|
159
|
-
store:
|
160
|
-
update:
|
161
|
-
reset:
|
158
|
+
create: [:light_cyan, :cyan],
|
159
|
+
store: [:light_cyan, :cyan],
|
160
|
+
update: [:light_cyan, :cyan],
|
161
|
+
reset: [:light_cyan, :cyan],
|
162
162
|
|
163
|
-
event:
|
163
|
+
event: [:light_magenta, :magenta],
|
164
164
|
|
165
|
-
timer:
|
165
|
+
timer: [:light_blue, :blue],
|
166
166
|
|
167
|
-
info:
|
168
|
-
test:
|
169
|
-
debug:
|
167
|
+
info: [:white, :light_grey],
|
168
|
+
test: [:white, :light_grey],
|
169
|
+
debug: [:white, :light_grey],
|
170
|
+
compress: [:white, :light_grey],
|
170
171
|
|
171
|
-
input:
|
172
|
+
input: [:light_yellow, :yellow],
|
173
|
+
output: [:light_yellow, :yellow],
|
172
174
|
|
173
|
-
compress: [:white, :light_grey],
|
174
175
|
cursor: [:light_green, :green],
|
175
|
-
|
176
|
+
buffer: [:light_green, :green],
|
176
177
|
render: [:light_green, :green],
|
177
178
|
|
178
|
-
error:
|
179
|
+
error: [:light_red, :red],
|
180
|
+
|
181
|
+
config: [:light_blue, :blue],
|
182
|
+
dsl: [:light_blue, :blue],
|
183
|
+
editor: [:light_blue, :blue],
|
184
|
+
drb: [:light_blue, :blue],
|
179
185
|
|
180
|
-
|
181
|
-
|
182
|
-
|
183
|
-
|
186
|
+
blue: [:light_blue, :blue],
|
187
|
+
cyan: [:light_cyan, :cyan],
|
188
|
+
green: [:light_green, :green],
|
189
|
+
magenta: [:light_magenta, :magenta],
|
190
|
+
red: [:light_red, :red],
|
191
|
+
white: [:white, :light_grey],
|
192
|
+
yellow: [:light_yellow, :yellow],
|
184
193
|
}
|
185
194
|
end
|
186
195
|
|
data/lib/vedeu/menus/dsl.rb
CHANGED
@@ -15,7 +15,8 @@ module Vedeu
|
|
15
15
|
# items for your users to select; and provide interactivity
|
16
16
|
# within your application.
|
17
17
|
#
|
18
|
-
# @param name [String|Symbol]
|
18
|
+
# @param name [String|Symbol] The name of the interface or
|
19
|
+
# view to which this menu belongs.
|
19
20
|
# @param block [Proc] A set of attributes which define the
|
20
21
|
# features of the menu. See {Vedeu::Menus::DSL#items} and
|
21
22
|
# {Vedeu::Menus::DSL#name}.
|
@@ -32,9 +33,12 @@ module Vedeu
|
|
32
33
|
# # ...
|
33
34
|
# end
|
34
35
|
#
|
35
|
-
# @raise [Vedeu::Error::
|
36
|
+
# @raise [Vedeu::Error::MissingRequired|
|
37
|
+
# Vedeu::Error::RequiresBlock] When a name or block
|
38
|
+
# respectively are not given.
|
36
39
|
# @return [API::Menu]
|
37
|
-
def menu(name
|
40
|
+
def menu(name, &block)
|
41
|
+
fail Vedeu::Error::MissingRequired unless name
|
38
42
|
fail Vedeu::Error::RequiresBlock unless block_given?
|
39
43
|
|
40
44
|
attributes = { client: client(&block), name: name }
|
@@ -92,21 +96,6 @@ module Vedeu
|
|
92
96
|
end
|
93
97
|
alias_method :items=, :items
|
94
98
|
|
95
|
-
# The name of the menu. Used to reference the menu throughout
|
96
|
-
# your application's execution lifetime.
|
97
|
-
#
|
98
|
-
# Vedeu.menu do
|
99
|
-
# name :my_menu
|
100
|
-
# # ...
|
101
|
-
# end
|
102
|
-
#
|
103
|
-
# @param name [String|Symbol]
|
104
|
-
# @return [String]
|
105
|
-
def name(name)
|
106
|
-
model.name = name
|
107
|
-
end
|
108
|
-
alias_method :name=, :name
|
109
|
-
|
110
99
|
end # DSL
|
111
100
|
|
112
101
|
end # Menus
|