vedeu 0.5.3 → 0.5.4
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/README.md +5 -5
- data/docs/events.md +4 -0
- data/examples/borders_app.rb +43 -39
- data/examples/focus_app.rb +4 -0
- data/examples/hello_world.rb +10 -3
- data/lib/vedeu/all.rb +1 -2
- data/lib/vedeu/api.rb +4 -1
- data/lib/vedeu/application/application_controller.rb +24 -0
- data/lib/vedeu/application/application_view.rb +9 -9
- data/lib/vedeu/bindings.rb +2 -0
- data/lib/vedeu/bindings/movement.rb +9 -9
- data/lib/vedeu/bindings/system.rb +3 -3
- data/lib/vedeu/buffers/buffer.rb +4 -9
- data/lib/vedeu/buffers/display_buffer.rb +2 -48
- data/lib/vedeu/cli/generator/application.rb +6 -0
- data/lib/vedeu/cli/generator/templates/application/.ruby-version +1 -0
- data/lib/vedeu/cli/generator/templates/application/app/controllers/name.erb +2 -11
- data/lib/vedeu/configuration/api.rb +6 -0
- data/lib/vedeu/configuration/configuration.rb +6 -0
- data/lib/vedeu/cursor/cursor.rb +49 -15
- data/lib/vedeu/cursor/move.rb +2 -2
- data/lib/vedeu/cursor/refresh_cursor.rb +2 -7
- data/lib/vedeu/distributed/server.rb +7 -21
- data/lib/vedeu/dsl/view.rb +31 -6
- data/lib/vedeu/internal_api.rb +7 -0
- data/lib/vedeu/log/log.rb +5 -2
- data/lib/vedeu/models/escape.rb +24 -6
- data/lib/vedeu/models/interface.rb +2 -14
- data/lib/vedeu/null/buffer.rb +7 -21
- data/lib/vedeu/null/generic.rb +5 -16
- data/lib/vedeu/null/interface.rb +6 -18
- data/lib/vedeu/runtime/bootstrap.rb +1 -1
- data/lib/vedeu/runtime/flags.rb +57 -0
- data/lib/vedeu/runtime/router.rb +2 -2
- data/lib/vedeu/version.rb +2 -1
- data/test/lib/vedeu/api_test.rb +1 -0
- data/test/lib/vedeu/application/application_controller_test.rb +26 -2
- data/test/lib/vedeu/application/application_view_test.rb +9 -4
- data/test/lib/vedeu/bindings_test.rb +9 -0
- data/test/lib/vedeu/borders/border_test.rb +25 -42
- data/test/lib/vedeu/buffers/display_buffer_test.rb +0 -10
- data/test/lib/vedeu/configuration/api_test.rb +7 -1
- data/test/lib/vedeu/configuration/cli_test.rb +0 -1
- data/test/lib/vedeu/configuration/configuration_test.rb +16 -0
- data/test/lib/vedeu/cursor/cursor_test.rb +122 -4
- data/test/lib/vedeu/dsl/view_test.rb +2 -2
- data/test/lib/vedeu/internal_api_test.rb +2 -0
- data/test/lib/vedeu/models/escape_test.rb +16 -6
- data/test/lib/vedeu/models/focus_test.rb +2 -1
- data/test/lib/vedeu/models/interface_test.rb +9 -5
- data/test/lib/vedeu/null/buffer_test.rb +7 -25
- data/test/lib/vedeu/null/generic_test.rb +6 -20
- data/test/lib/vedeu/null/interface_test.rb +8 -14
- data/test/lib/vedeu/output/compressor_test.rb +4 -4
- data/test/lib/vedeu/output/renderers_test.rb +1 -1
- data/test/lib/vedeu/runtime/flags_test.rb +47 -0
- data/test/lib/vedeu/runtime/router_test.rb +4 -4
- data/test/test_helper.rb +2 -0
- metadata +6 -10
- data/examples/geometry_app.rb +0 -147
- data/examples/panel_app.rb +0 -71
- data/lib/vedeu/geometry/index_position.rb +0 -85
- data/lib/vedeu/geometry/position_validator.rb +0 -69
- data/test/lib/vedeu/geometry/index_position_test.rb +0 -130
- data/test/lib/vedeu/geometry/position_validator_test.rb +0 -149
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e8cbfce4cf0a82bd72ea2ca4db302211611f3c58
|
4
|
+
data.tar.gz: 5d77ffbb1325cd04c79c6173aad0805acb53fc8c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0d35ab6387b6ad9b8999444d82f5c7ec622d63b98eceda8706a3f4cfd669756618335a31f05868fb681ba97dbc6d2f2ebeb562c6eb7eba8b1064284f49da051d
|
7
|
+
data.tar.gz: bf839e0f88b3390edf7f995025223df62b7b6f6eb921c42974dbed6d5923be597bf0ce230c3451598fd84d4305ae8f90ebf718784618b8108cb0c4338fdcb341
|
data/README.md
CHANGED
@@ -7,7 +7,6 @@ Vedeu (vee-dee-you; aka VDU) is my attempt at creating a terminal based
|
|
7
7
|
application framework without the need for Ncurses. I've tried to make Vedeu
|
8
8
|
as simple and flexible as possible.
|
9
9
|
|
10
|
-
|
11
10
|
## Requirements
|
12
11
|
|
13
12
|
Vedeu was been built primarily with Ruby v2.1; however, the
|
@@ -17,7 +16,7 @@ file will indicate the currently used Ruby version.
|
|
17
16
|
When Vedeu started I was a MacOSX user, I've since moved to Linux. You shouldn't
|
18
17
|
have any problems with either of these operating systems.
|
19
18
|
|
20
|
-
Note
|
19
|
+
**Note**: You may have trouble running Vedeu with Windows installations. (Pull
|
21
20
|
requests welcome!)
|
22
21
|
|
23
22
|
|
@@ -35,12 +34,15 @@ To use Vedeu's application scaffolding, see the
|
|
35
34
|
Have a look at: [Playa](https://github.com/gavinlaking/playa). Please browse the
|
36
35
|
source of Playa and Vedeu to get a feel for how it all works.
|
37
36
|
|
37
|
+
**Note**: Playa is based on an old version of Vedeu. Vedeu has significantly
|
38
|
+
improved since then and a better example is coming soon!
|
39
|
+
|
38
40
|
If you have produced software which uses Vedeu, please let me know, I'll link
|
39
41
|
to your project here.
|
40
42
|
|
41
43
|
## Documentation & Usage
|
42
44
|
|
43
|
-
Vedeu is
|
45
|
+
Vedeu is documented using Yard. I hope to produce more 'General Usage'
|
44
46
|
documentation shortly. In the meantime, please browse the
|
45
47
|
[RubyDoc](http://rubydoc.info/gems/vedeu).
|
46
48
|
|
@@ -70,7 +72,6 @@ Any branch on the repository that is not `master` is probably experimental; do
|
|
70
72
|
into `master` before a release, and branches prefixed with `spike/` are me
|
71
73
|
playing with ideas.
|
72
74
|
|
73
|
-
|
74
75
|
### General contribution help
|
75
76
|
|
76
77
|
1. Fork it ([https://github.com/gavinlaking/vedeu/fork](https://github.com/gavinlaking/vedeu/fork))
|
@@ -83,7 +84,6 @@ Any branch on the repository that is not `master` is probably experimental; do
|
|
83
84
|
8. Push to the branch (`git push origin my-new-feature`)
|
84
85
|
9. Create a new pull request.
|
85
86
|
|
86
|
-
|
87
87
|
## Author & Contributors
|
88
88
|
|
89
89
|
### Author
|
data/docs/events.md
CHANGED
data/examples/borders_app.rb
CHANGED
@@ -30,7 +30,7 @@ class VedeuBordersApp
|
|
30
30
|
height 4
|
31
31
|
width 10
|
32
32
|
end
|
33
|
-
colour foreground: '#ffffff', background: '#
|
33
|
+
colour foreground: '#ffffff', background: '#f44336'
|
34
34
|
end
|
35
35
|
|
36
36
|
Vedeu.interface 'border_off' do
|
@@ -40,7 +40,7 @@ class VedeuBordersApp
|
|
40
40
|
height 4
|
41
41
|
width 10
|
42
42
|
end
|
43
|
-
colour foreground: '#ffffff', background: '#
|
43
|
+
colour foreground: '#ffffff', background: '#e91e63'
|
44
44
|
end
|
45
45
|
|
46
46
|
Vedeu.interface 'no_top' do
|
@@ -50,7 +50,7 @@ class VedeuBordersApp
|
|
50
50
|
height 4
|
51
51
|
width 10
|
52
52
|
end
|
53
|
-
colour foreground: '#000000', background: '#
|
53
|
+
colour foreground: '#000000', background: '#9c27b0'
|
54
54
|
end
|
55
55
|
|
56
56
|
Vedeu.interface 'no_bottom' do
|
@@ -60,7 +60,7 @@ class VedeuBordersApp
|
|
60
60
|
height 4
|
61
61
|
width 10
|
62
62
|
end
|
63
|
-
colour foreground: '#000000', background: '#
|
63
|
+
colour foreground: '#000000', background: '#673ab7'
|
64
64
|
end
|
65
65
|
|
66
66
|
Vedeu.interface 'no_left' do
|
@@ -70,7 +70,7 @@ class VedeuBordersApp
|
|
70
70
|
height 4
|
71
71
|
width 10
|
72
72
|
end
|
73
|
-
colour foreground: '#000000', background: '#
|
73
|
+
colour foreground: '#000000', background: '#3f51b5'
|
74
74
|
end
|
75
75
|
|
76
76
|
Vedeu.interface 'no_right' do
|
@@ -80,7 +80,7 @@ class VedeuBordersApp
|
|
80
80
|
height 4
|
81
81
|
width 10
|
82
82
|
end
|
83
|
-
colour foreground: '#000000', background: '#
|
83
|
+
colour foreground: '#000000', background: '#2196f3'
|
84
84
|
end
|
85
85
|
|
86
86
|
Vedeu.interface 'custom_corners' do
|
@@ -90,7 +90,7 @@ class VedeuBordersApp
|
|
90
90
|
height 4
|
91
91
|
width 10
|
92
92
|
end
|
93
|
-
colour foreground: '#
|
93
|
+
colour foreground: '#000000', background: '#03a9f4'
|
94
94
|
end
|
95
95
|
|
96
96
|
Vedeu.interface 'custom_sides' do
|
@@ -100,47 +100,72 @@ class VedeuBordersApp
|
|
100
100
|
height 4
|
101
101
|
width 10
|
102
102
|
end
|
103
|
-
colour foreground: '#
|
103
|
+
colour foreground: '#000000', background: '#00bcd4'
|
104
104
|
end
|
105
105
|
|
106
|
+
# Borders can be defined as part of the interface definition.
|
106
107
|
Vedeu.interface 'only_top' do
|
108
|
+
border do
|
109
|
+
foreground '#ffffff'
|
110
|
+
show_right false
|
111
|
+
show_bottom false
|
112
|
+
show_left false
|
113
|
+
end
|
107
114
|
geometry do
|
108
115
|
x 26
|
109
116
|
y 8
|
110
117
|
height 4
|
111
118
|
width 10
|
112
119
|
end
|
113
|
-
colour foreground: '#ffffff', background: '#
|
120
|
+
colour foreground: '#ffffff', background: '#009688'
|
114
121
|
end
|
115
122
|
|
116
123
|
Vedeu.interface 'only_bottom' do
|
124
|
+
border do
|
125
|
+
foreground '#000000'
|
126
|
+
show_top false
|
127
|
+
show_right false
|
128
|
+
show_left false
|
129
|
+
end
|
117
130
|
geometry do
|
118
131
|
x 38
|
119
132
|
y 8
|
120
133
|
height 4
|
121
134
|
width 10
|
122
135
|
end
|
123
|
-
colour foreground: '#
|
136
|
+
colour foreground: '#000000', background: '#8bc34a'
|
124
137
|
end
|
125
138
|
|
126
139
|
Vedeu.interface 'only_left' do
|
140
|
+
border do
|
141
|
+
foreground '#000000'
|
142
|
+
show_top false
|
143
|
+
show_bottom false
|
144
|
+
show_right false
|
145
|
+
end
|
127
146
|
geometry do
|
128
147
|
x 50
|
129
148
|
y 8
|
130
149
|
height 4
|
131
150
|
width 10
|
132
151
|
end
|
133
|
-
colour foreground: '#
|
152
|
+
colour foreground: '#000000', background: '#cddc39'
|
134
153
|
end
|
135
154
|
|
136
155
|
Vedeu.interface 'only_right' do
|
156
|
+
border do
|
157
|
+
foreground '#000000'
|
158
|
+
show_top false
|
159
|
+
show_bottom false
|
160
|
+
show_left false
|
161
|
+
end
|
137
162
|
geometry do
|
138
163
|
x 62
|
139
164
|
y 8
|
140
165
|
height 4
|
141
166
|
width 10
|
142
167
|
end
|
143
|
-
colour foreground: '#
|
168
|
+
colour foreground: '#000000', background: '#ffeb3b'
|
144
169
|
end
|
145
170
|
|
146
171
|
Vedeu.interface 'custom_colour' do
|
@@ -150,7 +175,7 @@ class VedeuBordersApp
|
|
150
175
|
height 4
|
151
176
|
width 10
|
152
177
|
end
|
153
|
-
colour foreground: '#
|
178
|
+
colour foreground: '#000000', background: '#ffc107'
|
154
179
|
end
|
155
180
|
|
156
181
|
Vedeu.interface 'negative' do
|
@@ -160,7 +185,7 @@ class VedeuBordersApp
|
|
160
185
|
height 4
|
161
186
|
width 10
|
162
187
|
end
|
163
|
-
colour foreground: '#000000', background: '#
|
188
|
+
colour foreground: '#000000', background: '#ff9800'
|
164
189
|
style 'normal'
|
165
190
|
end
|
166
191
|
|
@@ -173,7 +198,7 @@ class VedeuBordersApp
|
|
173
198
|
key(:tab) { Vedeu.trigger(:_focus_next_) }
|
174
199
|
end
|
175
200
|
|
176
|
-
# Borders can be defined as
|
201
|
+
# Borders can be defined as standalone declarations.
|
177
202
|
Vedeu.border 'no_bottom' do
|
178
203
|
foreground '#ffffff'
|
179
204
|
show_bottom false
|
@@ -191,6 +216,7 @@ class VedeuBordersApp
|
|
191
216
|
show_top false
|
192
217
|
end
|
193
218
|
|
219
|
+
# Borders can be defined as part of a view.
|
194
220
|
Vedeu.renders do
|
195
221
|
view('default_border') do
|
196
222
|
border do
|
@@ -228,6 +254,7 @@ class VedeuBordersApp
|
|
228
254
|
end
|
229
255
|
view('custom_corners') do
|
230
256
|
border do
|
257
|
+
foreground '#ffffff'
|
231
258
|
top_right 'B'
|
232
259
|
top_left 'A'
|
233
260
|
bottom_right 'D'
|
@@ -240,6 +267,7 @@ class VedeuBordersApp
|
|
240
267
|
end
|
241
268
|
view('custom_sides') do
|
242
269
|
border do
|
270
|
+
background '#ff5722'
|
243
271
|
horizontal '*'
|
244
272
|
vertical '$'
|
245
273
|
end
|
@@ -249,48 +277,24 @@ class VedeuBordersApp
|
|
249
277
|
end
|
250
278
|
end
|
251
279
|
view('only_top') do
|
252
|
-
border do
|
253
|
-
foreground '#ffffff'
|
254
|
-
show_right false
|
255
|
-
show_bottom false
|
256
|
-
show_left false
|
257
|
-
end
|
258
280
|
lines do
|
259
281
|
line 'only'
|
260
282
|
line 'top'
|
261
283
|
end
|
262
284
|
end
|
263
285
|
view('only_bottom') do
|
264
|
-
border do
|
265
|
-
foreground '#ffffff'
|
266
|
-
show_top false
|
267
|
-
show_right false
|
268
|
-
show_left false
|
269
|
-
end
|
270
286
|
lines do
|
271
287
|
line 'only'
|
272
288
|
line 'bottom'
|
273
289
|
end
|
274
290
|
end
|
275
291
|
view('only_left') do
|
276
|
-
border do
|
277
|
-
foreground '#ffffff'
|
278
|
-
show_top false
|
279
|
-
show_bottom false
|
280
|
-
show_right false
|
281
|
-
end
|
282
292
|
lines do
|
283
293
|
line 'only'
|
284
294
|
line 'left'
|
285
295
|
end
|
286
296
|
end
|
287
297
|
view('only_right') do
|
288
|
-
border do
|
289
|
-
foreground '#ffffff'
|
290
|
-
show_top false
|
291
|
-
show_bottom false
|
292
|
-
show_left false
|
293
|
-
end
|
294
298
|
lines do
|
295
299
|
line 'only'
|
296
300
|
line 'right'
|
data/examples/focus_app.rb
CHANGED
@@ -33,6 +33,10 @@ class VedeuFocusApp
|
|
33
33
|
Vedeu.renders { view('status') { lines { line(Vedeu.focus) } } }
|
34
34
|
end
|
35
35
|
|
36
|
+
Vedeu.keymap('_global_') do
|
37
|
+
key('q') { Vedeu.exit }
|
38
|
+
end
|
39
|
+
|
36
40
|
Vedeu.interface 'aluminium' do
|
37
41
|
colour foreground: '#ffffff', background: '#330000'
|
38
42
|
cursor true
|
data/examples/hello_world.rb
CHANGED
@@ -26,17 +26,24 @@ class HelloWorldApp
|
|
26
26
|
foreground '#00ff00'
|
27
27
|
geometry do
|
28
28
|
centred!
|
29
|
-
height
|
29
|
+
height 5
|
30
30
|
width 20
|
31
31
|
end
|
32
|
+
keymap do
|
33
|
+
key('q') { Vedeu.exit }
|
34
|
+
end
|
32
35
|
end
|
33
36
|
|
34
37
|
Vedeu.renders do
|
35
38
|
view 'messages' do
|
36
39
|
lines do
|
37
|
-
|
40
|
+
line do
|
41
|
+
centre 'Hello World!', width: 20
|
42
|
+
end
|
38
43
|
line
|
39
|
-
|
44
|
+
line do
|
45
|
+
centre "Press 'q' to exit.", width: 20
|
46
|
+
end
|
40
47
|
end
|
41
48
|
end
|
42
49
|
end
|
data/lib/vedeu/all.rb
CHANGED
@@ -16,6 +16,7 @@ require 'vedeu/configuration/configuration'
|
|
16
16
|
|
17
17
|
require 'vedeu/terminal'
|
18
18
|
require 'vedeu/runtime/main_loop'
|
19
|
+
require 'vedeu/runtime/flags'
|
19
20
|
require 'vedeu/runtime/application'
|
20
21
|
|
21
22
|
require 'vedeu/models/toggleable'
|
@@ -44,10 +45,8 @@ require 'vedeu/geometry/dimension'
|
|
44
45
|
require 'vedeu/geometry/geometry'
|
45
46
|
require 'vedeu/geometry/geometries'
|
46
47
|
require 'vedeu/geometry/grid'
|
47
|
-
require 'vedeu/geometry/index_position'
|
48
48
|
require 'vedeu/geometry/position_index'
|
49
49
|
require 'vedeu/geometry/position'
|
50
|
-
require 'vedeu/geometry/position_validator'
|
51
50
|
|
52
51
|
require 'vedeu/colours/escape_sequences'
|
53
52
|
require 'vedeu/colours/colours'
|
data/lib/vedeu/api.rb
CHANGED
@@ -98,7 +98,10 @@ module Vedeu
|
|
98
98
|
# @see Vedeu::DSL::View.renders
|
99
99
|
# @!method views
|
100
100
|
# @see Vedeu::DSL::View.views
|
101
|
-
|
101
|
+
# @!method view
|
102
|
+
# @see Vedeu::DSL::View.view
|
103
|
+
def_delegators Vedeu::DSL::View, :interface, :renders, :render, :views,
|
104
|
+
:view
|
102
105
|
|
103
106
|
# @example
|
104
107
|
# Vedeu.bind(name) { }
|
@@ -8,6 +8,30 @@ module Vedeu
|
|
8
8
|
|
9
9
|
include Vedeu::Controller
|
10
10
|
|
11
|
+
# @param params [Hash] The named parameters provided to the controller which
|
12
|
+
# will be used by the actions within the controller.
|
13
|
+
# @return [Vedeu::ApplicationController]
|
14
|
+
def initialize(**params)
|
15
|
+
@params = params
|
16
|
+
end
|
17
|
+
|
18
|
+
# @param controller [Symbol] The name of controller to be redirected to.
|
19
|
+
# @param action [Symbol] The name of the action within the controller to be
|
20
|
+
# called.
|
21
|
+
# @param params [Hash] Any named parameter which need to be passed to the
|
22
|
+
# action.
|
23
|
+
def redirect_to(controller, action, **params)
|
24
|
+
Vedeu.trigger(:_goto_, controller, action, params)
|
25
|
+
end
|
26
|
+
alias_method :redirect, :redirect_to
|
27
|
+
alias_method :goto, :redirect_to
|
28
|
+
|
29
|
+
protected
|
30
|
+
|
31
|
+
# @!attribute [rw] params
|
32
|
+
# @return [Hash] The named parameters passed to the controller.
|
33
|
+
attr_accessor :params
|
34
|
+
|
11
35
|
end # ApplicationController
|
12
36
|
|
13
37
|
end # Vedeu
|
@@ -9,18 +9,18 @@ module Vedeu
|
|
9
9
|
|
10
10
|
# Renders the view.
|
11
11
|
#
|
12
|
-
# @param
|
12
|
+
# @param params [Hash]
|
13
13
|
# @return [void]
|
14
|
-
def self.render(
|
15
|
-
new(
|
14
|
+
def self.render(**params)
|
15
|
+
new(params).render
|
16
16
|
end
|
17
17
|
|
18
18
|
# Returns a new instance of Vedeu::ApplicationView.
|
19
19
|
#
|
20
|
-
# @param
|
20
|
+
# @param params [Hash]
|
21
21
|
# @return [Vedeu::ApplicationView]
|
22
|
-
def initialize(
|
23
|
-
@
|
22
|
+
def initialize(**params)
|
23
|
+
@params = params
|
24
24
|
end
|
25
25
|
|
26
26
|
# @raise [Vedeu::NotImplemented] Subclasses of this class must implement
|
@@ -33,9 +33,9 @@ module Vedeu
|
|
33
33
|
|
34
34
|
protected
|
35
35
|
|
36
|
-
# @!attribute [
|
37
|
-
# @return [
|
38
|
-
|
36
|
+
# @!attribute [rw] params
|
37
|
+
# @return [Hash]
|
38
|
+
attr_accessor :params
|
39
39
|
|
40
40
|
private
|
41
41
|
|