vedeu 0.6.39 → 0.6.40
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/docs/events/system.md +28 -0
- data/examples/dsl_editor.rb +12 -4
- data/lib/vedeu/input/mapper.rb +10 -2
- data/lib/vedeu/input/store.rb +68 -5
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/input/store_test.rb +25 -26
- data/test/lib/vedeu_test.rb +6 -0
- data/test/support/examples/material_colours_app.rb +7 -0
- data/vedeu.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 143043509ebfddd83c874d02592cc32490dcd663
|
|
4
|
+
data.tar.gz: 05f8618fb7ab1f6a88ac7221794967bd58307022
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 95e3e2d995ff6aa700a07e17dd8f462ad412b8df1d17c6a74f0a773e1ca0ef6dabe4100e526bf9c9e9860d3cc440968717c1667c0ded6fe3939857bcdd1d5860
|
|
7
|
+
data.tar.gz: 45022ead54702e4ce916c0e057cd78d2987c507cd41223a11f2988a254faf200a851739f96b77e4deb81c01b0a5023b30e77afadd6ba7dc259abd9c5c4f98875
|
data/docs/events/system.md
CHANGED
|
@@ -11,11 +11,25 @@ popular here.
|
|
|
11
11
|
Vedeu.trigger(:_exit_)
|
|
12
12
|
|
|
13
13
|
### `:\_command\_`
|
|
14
|
+
This event is used by Vedeu internally, though you can bind to it if
|
|
15
|
+
you wish. It is preferred for you to bind to `:command` though.
|
|
16
|
+
|
|
14
17
|
Will cause the triggering of the `:command` event; which you should
|
|
15
18
|
define to 'do things'.
|
|
16
19
|
|
|
17
20
|
Vedeu.trigger(:_command_, command)
|
|
18
21
|
|
|
22
|
+
Vedeu.bind(:command) do
|
|
23
|
+
# ... your code here ...
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
Alternatively, you can access commands entered using the following
|
|
27
|
+
API methods: (See {Vedeu::Input::Store} for more details).
|
|
28
|
+
|
|
29
|
+
Vedeu.all_commands
|
|
30
|
+
|
|
31
|
+
Vedeu.last_command
|
|
32
|
+
|
|
19
33
|
### `:\_editor\_`
|
|
20
34
|
This event is called by {Vedeu::Input::Capture#read}. When
|
|
21
35
|
invoked, the key will be passed to the editor for currently
|
|
@@ -41,6 +55,9 @@ action(s), like render the first screen, interface or make a sound.
|
|
|
41
55
|
Vedeu.trigger(:_initialize_)
|
|
42
56
|
|
|
43
57
|
### `:\_keypress\_`
|
|
58
|
+
This event is used by Vedeu internally, though you can bind to it if
|
|
59
|
+
you wish. It is preferred for you to bind to `:key` though.
|
|
60
|
+
|
|
44
61
|
When the name is given:
|
|
45
62
|
|
|
46
63
|
- The given key is passed to the named keymap. If the keymap is
|
|
@@ -62,6 +79,17 @@ It is also to be noted, that a `:key` event will be triggered
|
|
|
62
79
|
irrespective of the conditions above, you can bind to this event
|
|
63
80
|
separately to 'do things'.
|
|
64
81
|
|
|
82
|
+
Vedeu.bind(:key) do
|
|
83
|
+
# ... your code here ...
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
Alternatively, you can access keypresses entered using the following
|
|
87
|
+
API methods: (See {Vedeu::Input::Store} for more details).
|
|
88
|
+
|
|
89
|
+
Vedeu.all_keypresses
|
|
90
|
+
|
|
91
|
+
Vedeu.last_keypress
|
|
92
|
+
|
|
65
93
|
A list of supported keypresses can be found here:
|
|
66
94
|
{Vedeu::Input::Capture}.
|
|
67
95
|
|
data/examples/dsl_editor.rb
CHANGED
|
@@ -8,6 +8,7 @@ class EditorApp
|
|
|
8
8
|
Vedeu.bind(:_initialize_) { Vedeu.trigger(:_refresh_) }
|
|
9
9
|
|
|
10
10
|
Vedeu.configure do
|
|
11
|
+
debug!
|
|
11
12
|
log '/tmp/editor.log'
|
|
12
13
|
renderers Vedeu::Renderers::File.new(filename: '/tmp/editor.out')
|
|
13
14
|
fake!
|
|
@@ -35,15 +36,22 @@ class EditorApp
|
|
|
35
36
|
# When pressing Return/Enter in the editor view, the :_command_
|
|
36
37
|
# event will be triggered with any typed content you have provided.
|
|
37
38
|
#
|
|
38
|
-
#
|
|
39
|
-
#
|
|
39
|
+
# The :_command_ event in turn triggers the :command event. Bind to
|
|
40
|
+
# :command to retrieve the content entered, and then process
|
|
41
|
+
# yourself in whatever way appropriate.
|
|
40
42
|
#
|
|
41
|
-
# Vedeu.bind(:
|
|
43
|
+
# Vedeu.bind(:command) do |data|
|
|
42
44
|
# # ... do something with 'data'
|
|
43
45
|
# end
|
|
44
46
|
#
|
|
45
47
|
Vedeu.keymap :editor_view do
|
|
46
48
|
key(:enter) { Vedeu.trigger(:_editor_execute_, :editor_view) }
|
|
49
|
+
key(:insert) do
|
|
50
|
+
Vedeu.log(type: :debug,
|
|
51
|
+
message: "Commands: #{Vedeu.all_commands.inspect}")
|
|
52
|
+
Vedeu.log(type: :debug,
|
|
53
|
+
message: "Keypresses: #{Vedeu.all_keypresses.inspect}")
|
|
54
|
+
end
|
|
47
55
|
end
|
|
48
56
|
|
|
49
57
|
Vedeu.keymap '_global_' do
|
|
@@ -60,7 +68,7 @@ class EditorApp
|
|
|
60
68
|
lines do
|
|
61
69
|
line 'Type into the editor dialog above,'
|
|
62
70
|
line 'and press Return. This will trigger the'
|
|
63
|
-
line ':
|
|
71
|
+
line ':command event with the contents of '
|
|
64
72
|
line 'the view.'
|
|
65
73
|
|
|
66
74
|
# @todo Not implemented yet:
|
data/lib/vedeu/input/mapper.rb
CHANGED
|
@@ -155,7 +155,11 @@ module Vedeu
|
|
|
155
155
|
# :nocov:
|
|
156
156
|
|
|
157
157
|
# See {file:docs/events/system.md#\_keypress_}
|
|
158
|
-
Vedeu.bind(:_keypress_)
|
|
158
|
+
Vedeu.bind(:_keypress_) do |key, name|
|
|
159
|
+
Vedeu.add_keypress(key)
|
|
160
|
+
|
|
161
|
+
Vedeu.keypress(key, name)
|
|
162
|
+
end
|
|
159
163
|
|
|
160
164
|
# See {file:docs/events/drb.md#\_drb_input_}
|
|
161
165
|
Vedeu.bind(:_drb_input_) do |data, type|
|
|
@@ -169,7 +173,11 @@ module Vedeu
|
|
|
169
173
|
end
|
|
170
174
|
|
|
171
175
|
# See {file:docs/events/system.md#\_command_}
|
|
172
|
-
Vedeu.bind(:_command_)
|
|
176
|
+
Vedeu.bind(:_command_) do |command|
|
|
177
|
+
Vedeu.add_command(command)
|
|
178
|
+
|
|
179
|
+
Vedeu.trigger(:command, command)
|
|
180
|
+
end
|
|
173
181
|
|
|
174
182
|
# :nocov:
|
|
175
183
|
|
data/lib/vedeu/input/store.rb
CHANGED
|
@@ -4,46 +4,89 @@ module Vedeu
|
|
|
4
4
|
|
|
5
5
|
# Stores each keypress or command to be retrieved later.
|
|
6
6
|
#
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
7
|
+
module Store
|
|
8
|
+
|
|
9
|
+
extend self
|
|
10
|
+
|
|
11
|
+
# Add a command (a collection of characters/keypresses from an
|
|
12
|
+
# Editor::Document) to the store. Used by Vedeu internally to
|
|
13
|
+
# store commands entered.
|
|
14
|
+
#
|
|
15
|
+
# @example
|
|
16
|
+
# Vedeu.add_command(:some_command)
|
|
17
|
+
#
|
|
18
|
+
# @param command [Symbol|String]
|
|
12
19
|
# @return [Hash<Symbol => Array<Symbol|String>>]
|
|
13
20
|
def add_command(command)
|
|
14
21
|
all_commands << command
|
|
15
22
|
end
|
|
16
23
|
|
|
24
|
+
# Add a keypress to the store. Used by Vedeu internally to
|
|
25
|
+
# store a keypress entered.
|
|
26
|
+
#
|
|
27
|
+
# @example
|
|
28
|
+
# Vedeu.add_keypress(:escape)
|
|
29
|
+
#
|
|
30
|
+
# @param keypress [Symbol|String]
|
|
17
31
|
# @return [Hash<Symbol => Array<Symbol|String>>]
|
|
18
32
|
def add_keypress(keypress)
|
|
19
33
|
all_keypresses << keypress
|
|
20
34
|
end
|
|
21
35
|
|
|
36
|
+
# Access all commands and keypresses stored.
|
|
37
|
+
#
|
|
22
38
|
# @return [Hash<Symbol => Array<Symbol|String>>]
|
|
23
39
|
def all
|
|
24
40
|
storage
|
|
25
41
|
end
|
|
26
42
|
|
|
43
|
+
# Access all commands stored.
|
|
44
|
+
#
|
|
45
|
+
# @example
|
|
46
|
+
# Vedeu.all_commands
|
|
47
|
+
#
|
|
27
48
|
# @return [Array<Symbol|String>]
|
|
28
49
|
def all_commands
|
|
29
50
|
storage[:commands]
|
|
30
51
|
end
|
|
31
52
|
|
|
53
|
+
# Access all keypresses stored.
|
|
54
|
+
#
|
|
55
|
+
# @example
|
|
56
|
+
# Vedeu.all_keypresses
|
|
57
|
+
#
|
|
32
58
|
# @return [Array<Symbol|String>]
|
|
33
59
|
def all_keypresses
|
|
34
60
|
storage[:keypresses]
|
|
35
61
|
end
|
|
36
62
|
|
|
63
|
+
# Access the last command stored. If no commands have been
|
|
64
|
+
# entered since the client application started, then this will
|
|
65
|
+
# return nil.
|
|
66
|
+
#
|
|
67
|
+
# @example
|
|
68
|
+
# Vedeu.last_command
|
|
69
|
+
#
|
|
37
70
|
# @return [NilClass|Symbol|String]
|
|
38
71
|
def last_command
|
|
39
72
|
all_commands[-1]
|
|
40
73
|
end
|
|
41
74
|
|
|
75
|
+
# Access the last keypress stored. If no keys have been pressed
|
|
76
|
+
# since the client application started, then this will return
|
|
77
|
+
# nil.
|
|
78
|
+
#
|
|
79
|
+
# @example
|
|
80
|
+
# Vedeu.last_keypress
|
|
81
|
+
#
|
|
42
82
|
# @return [NilClass|Symbol|String]
|
|
43
83
|
def last_keypress
|
|
44
84
|
all_keypresses[-1]
|
|
45
85
|
end
|
|
46
86
|
|
|
87
|
+
# Remove all stored entries. Any commands or keypresses entered
|
|
88
|
+
# before calling this method will be removed.
|
|
89
|
+
#
|
|
47
90
|
# @return [Hash<Symbol => Array<Symbol|String>>]
|
|
48
91
|
def reset
|
|
49
92
|
@storage = in_memory
|
|
@@ -68,4 +111,24 @@ module Vedeu
|
|
|
68
111
|
|
|
69
112
|
end # Input
|
|
70
113
|
|
|
114
|
+
# @!method add_command
|
|
115
|
+
# @see Vedeu::Input::Store.add_command
|
|
116
|
+
# @!method add_keypress
|
|
117
|
+
# @see Vedeu::Input::Store.add_keypress
|
|
118
|
+
# @!method all_commands
|
|
119
|
+
# @see Vedeu::Input::Store.all_commands
|
|
120
|
+
# @!method all_keypresses
|
|
121
|
+
# @see Vedeu::Input::Store.all_keypresses
|
|
122
|
+
# @!method last_command
|
|
123
|
+
# @see Vedeu::Input::Store.last_command
|
|
124
|
+
# @!method last_keypress
|
|
125
|
+
# @see Vedeu::Input::Store.last_keypress
|
|
126
|
+
def_delegators Vedeu::Input::Store,
|
|
127
|
+
:add_command,
|
|
128
|
+
:add_keypress,
|
|
129
|
+
:all_commands,
|
|
130
|
+
:all_keypresses,
|
|
131
|
+
:last_command,
|
|
132
|
+
:last_keypress
|
|
133
|
+
|
|
71
134
|
end # Vedeu
|
data/lib/vedeu/version.rb
CHANGED
|
@@ -7,14 +7,13 @@ module Vedeu
|
|
|
7
7
|
describe Store do
|
|
8
8
|
|
|
9
9
|
let(:described) { Vedeu::Input::Store }
|
|
10
|
-
let(:instance) { described.new }
|
|
11
10
|
|
|
12
|
-
before {
|
|
11
|
+
before { described.reset }
|
|
13
12
|
|
|
14
13
|
describe '#add_command' do
|
|
15
14
|
let(:command) { 'command_1' }
|
|
16
15
|
|
|
17
|
-
subject {
|
|
16
|
+
subject { described.add_command(command) }
|
|
18
17
|
|
|
19
18
|
it { subject.must_equal(['command_1']) }
|
|
20
19
|
end
|
|
@@ -22,13 +21,13 @@ module Vedeu
|
|
|
22
21
|
describe '#add_keypress' do
|
|
23
22
|
let(:keypress) { 'a' }
|
|
24
23
|
|
|
25
|
-
subject {
|
|
24
|
+
subject { described.add_keypress(keypress) }
|
|
26
25
|
|
|
27
26
|
it { subject.must_equal(['a']) }
|
|
28
27
|
end
|
|
29
28
|
|
|
30
29
|
describe '#all' do
|
|
31
|
-
subject {
|
|
30
|
+
subject { described.all }
|
|
32
31
|
|
|
33
32
|
context 'when empty' do
|
|
34
33
|
it { subject.must_equal({ commands: [], keypresses: [] }) }
|
|
@@ -43,10 +42,10 @@ module Vedeu
|
|
|
43
42
|
}
|
|
44
43
|
|
|
45
44
|
before do
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
45
|
+
described.add_command('command_1')
|
|
46
|
+
described.add_command('command_2')
|
|
47
|
+
described.add_keypress('a')
|
|
48
|
+
described.add_keypress('b')
|
|
50
49
|
end
|
|
51
50
|
|
|
52
51
|
it { subject.must_equal(expected) }
|
|
@@ -54,7 +53,7 @@ module Vedeu
|
|
|
54
53
|
end
|
|
55
54
|
|
|
56
55
|
describe '#all_commands' do
|
|
57
|
-
subject {
|
|
56
|
+
subject { described.all_commands }
|
|
58
57
|
|
|
59
58
|
context 'when there are no stored commands' do
|
|
60
59
|
it { subject.must_equal([]) }
|
|
@@ -62,9 +61,9 @@ module Vedeu
|
|
|
62
61
|
|
|
63
62
|
context 'when there are stored commands' do
|
|
64
63
|
before do
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
64
|
+
described.add_command('command_1')
|
|
65
|
+
described.add_command('command_2')
|
|
66
|
+
described.add_command('command_3')
|
|
68
67
|
end
|
|
69
68
|
|
|
70
69
|
it { subject.must_equal(['command_1', 'command_2', 'command_3']) }
|
|
@@ -72,7 +71,7 @@ module Vedeu
|
|
|
72
71
|
end
|
|
73
72
|
|
|
74
73
|
describe '#all_keypresses' do
|
|
75
|
-
subject {
|
|
74
|
+
subject { described.all_keypresses }
|
|
76
75
|
|
|
77
76
|
context 'when there are no stored keypresses' do
|
|
78
77
|
it { subject.must_equal([]) }
|
|
@@ -80,9 +79,9 @@ module Vedeu
|
|
|
80
79
|
|
|
81
80
|
context 'when there are stored keypresses' do
|
|
82
81
|
before do
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
82
|
+
described.add_keypress('a')
|
|
83
|
+
described.add_keypress('b')
|
|
84
|
+
described.add_keypress('c')
|
|
86
85
|
end
|
|
87
86
|
|
|
88
87
|
it { subject.must_equal(['a', 'b', 'c']) }
|
|
@@ -90,7 +89,7 @@ module Vedeu
|
|
|
90
89
|
end
|
|
91
90
|
|
|
92
91
|
describe '#last_command' do
|
|
93
|
-
subject {
|
|
92
|
+
subject { described.last_command }
|
|
94
93
|
|
|
95
94
|
context 'when there are no stored commands' do
|
|
96
95
|
it { subject.must_equal(nil) }
|
|
@@ -98,9 +97,9 @@ module Vedeu
|
|
|
98
97
|
|
|
99
98
|
context 'when there are stored commands' do
|
|
100
99
|
before do
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
100
|
+
described.add_command('command_1')
|
|
101
|
+
described.add_command('command_2')
|
|
102
|
+
described.add_command('command_3')
|
|
104
103
|
end
|
|
105
104
|
|
|
106
105
|
it { subject.must_equal('command_3') }
|
|
@@ -108,7 +107,7 @@ module Vedeu
|
|
|
108
107
|
end
|
|
109
108
|
|
|
110
109
|
describe '#last_keypress' do
|
|
111
|
-
subject {
|
|
110
|
+
subject { described.last_keypress }
|
|
112
111
|
|
|
113
112
|
context 'when there are no stored keypresses' do
|
|
114
113
|
it { subject.must_equal(nil) }
|
|
@@ -116,9 +115,9 @@ module Vedeu
|
|
|
116
115
|
|
|
117
116
|
context 'when there are stored keypresses' do
|
|
118
117
|
before do
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
118
|
+
described.add_keypress('a')
|
|
119
|
+
described.add_keypress('b')
|
|
120
|
+
described.add_keypress('c')
|
|
122
121
|
end
|
|
123
122
|
|
|
124
123
|
it { subject.must_equal('c') }
|
|
@@ -126,7 +125,7 @@ module Vedeu
|
|
|
126
125
|
end
|
|
127
126
|
|
|
128
127
|
describe '#reset' do
|
|
129
|
-
subject {
|
|
128
|
+
subject { described.reset }
|
|
130
129
|
|
|
131
130
|
it { subject.must_equal({ commands: [], keypresses: [] }) }
|
|
132
131
|
end
|
data/test/lib/vedeu_test.rb
CHANGED
|
@@ -2,6 +2,10 @@ require 'test_helper'
|
|
|
2
2
|
|
|
3
3
|
describe Vedeu do
|
|
4
4
|
|
|
5
|
+
it { Vedeu.must_respond_to(:add_command) }
|
|
6
|
+
it { Vedeu.must_respond_to(:add_keypress) }
|
|
7
|
+
it { Vedeu.must_respond_to(:all_commands) }
|
|
8
|
+
it { Vedeu.must_respond_to(:all_keypresses) }
|
|
5
9
|
it { Vedeu.must_respond_to(:background_colours) }
|
|
6
10
|
it { Vedeu.must_respond_to(:bind) }
|
|
7
11
|
it { Vedeu.must_respond_to(:bind_alias) }
|
|
@@ -51,6 +55,8 @@ describe Vedeu do
|
|
|
51
55
|
it { Vedeu.must_respond_to(:keymap) }
|
|
52
56
|
it { Vedeu.must_respond_to(:keymaps) }
|
|
53
57
|
it { Vedeu.must_respond_to(:keypress) }
|
|
58
|
+
it { Vedeu.must_respond_to(:last_command) }
|
|
59
|
+
it { Vedeu.must_respond_to(:last_keypress) }
|
|
54
60
|
it { Vedeu.must_respond_to(:log) }
|
|
55
61
|
it { Vedeu.must_respond_to(:log_stderr) }
|
|
56
62
|
it { Vedeu.must_respond_to(:log_stdout) }
|
|
@@ -110,6 +110,13 @@ class VedeuMaterialColoursApp
|
|
|
110
110
|
key(:home) { Vedeu.trigger(:_cursor_top_) }
|
|
111
111
|
key(:end) { Vedeu.trigger(:_cursor_bottom_) }
|
|
112
112
|
|
|
113
|
+
key(:insert) do
|
|
114
|
+
Vedeu.log(type: :debug,
|
|
115
|
+
message: "Commands: #{Vedeu.all_commands.inspect}")
|
|
116
|
+
Vedeu.log(type: :debug,
|
|
117
|
+
message: "Keypresses: #{Vedeu.all_keypresses.inspect}")
|
|
118
|
+
end
|
|
119
|
+
|
|
113
120
|
key('q') { Vedeu.trigger(:_exit_) }
|
|
114
121
|
key(:escape) { Vedeu.trigger(:_mode_switch_) }
|
|
115
122
|
key(:shift_tab) { Vedeu.trigger(:_focus_prev_) }
|
data/vedeu.gemspec
CHANGED
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
|
23
23
|
spec.add_development_dependency 'guard', '2.13.0'
|
|
24
24
|
spec.add_development_dependency 'guard-minitest', '2.4.4'
|
|
25
25
|
spec.add_development_dependency 'guard-rubocop', '1.2.0'
|
|
26
|
-
spec.add_development_dependency 'minitest', '5.8.
|
|
26
|
+
spec.add_development_dependency 'minitest', '5.8.2'
|
|
27
27
|
spec.add_development_dependency 'minitest-reporters', '1.1.4'
|
|
28
28
|
spec.add_development_dependency 'mocha', '1.1.0'
|
|
29
29
|
spec.add_development_dependency 'pry', '0.10.3'
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: vedeu
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.6.
|
|
4
|
+
version: 0.6.40
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Gavin Laking
|
|
@@ -58,14 +58,14 @@ dependencies:
|
|
|
58
58
|
requirements:
|
|
59
59
|
- - '='
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
|
-
version: 5.8.
|
|
61
|
+
version: 5.8.2
|
|
62
62
|
type: :development
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
66
|
- - '='
|
|
67
67
|
- !ruby/object:Gem::Version
|
|
68
|
-
version: 5.8.
|
|
68
|
+
version: 5.8.2
|
|
69
69
|
- !ruby/object:Gem::Dependency
|
|
70
70
|
name: minitest-reporters
|
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|