vedeu 0.2.12 → 0.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.ruby-version +1 -1
- data/Guardfile +13 -0
- data/README.md +11 -9
- data/Rakefile +10 -1
- data/bin/vedeu_test +14 -0
- data/config/cucumber.yml +8 -0
- data/docs/api.md +45 -16
- data/docs/events.md +21 -9
- data/docs/getting_started.md +16 -0
- data/docs/views.md +158 -0
- data/examples/borders_app.rb +236 -110
- data/examples/colour_support.sh +98 -0
- data/examples/colours_app.rb +41 -0
- data/examples/configuration_app.rb +11 -6
- data/examples/cursor_app.rb +60 -61
- data/examples/focus_app.rb +72 -34
- data/examples/hello_world.rb +13 -8
- data/examples/lines_app.rb +37 -28
- data/features/start_stop.feature +27 -0
- data/features/support/env.rb +14 -0
- data/lib/vedeu/all.rb +29 -0
- data/lib/vedeu/api.rb +39 -0
- data/lib/vedeu/application.rb +15 -7
- data/lib/vedeu/bindings.rb +121 -0
- data/lib/vedeu/buffers/all.rb +10 -0
- data/lib/vedeu/{repositories/models → buffers}/buffer.rb +47 -64
- data/lib/vedeu/buffers/display_buffer.rb +118 -0
- data/lib/vedeu/configuration/all.rb +6 -0
- data/lib/vedeu/configuration/api.rb +3 -1
- data/lib/vedeu/configuration/cli.rb +3 -1
- data/lib/vedeu/configuration/configuration.rb +23 -2
- data/lib/vedeu/cursor/all.rb +23 -0
- data/lib/vedeu/cursor/cursor.rb +116 -0
- data/lib/vedeu/cursor/move_cursor.rb +137 -0
- data/lib/vedeu/cursor/toggle_cursor.rb +53 -0
- data/lib/vedeu/dsl/all.rb +28 -0
- data/lib/vedeu/dsl/components/all.rb +7 -0
- data/lib/vedeu/dsl/components/border.rb +104 -0
- data/lib/vedeu/dsl/components/geometry.rb +153 -0
- data/lib/vedeu/dsl/components/keymap.rb +93 -0
- data/lib/vedeu/dsl/components/menu.rb +82 -0
- data/lib/vedeu/dsl/composition.rb +72 -0
- data/lib/vedeu/dsl/interface.rb +210 -0
- data/lib/vedeu/dsl/line.rb +135 -0
- data/lib/vedeu/dsl/shared/all.rb +7 -0
- data/lib/vedeu/dsl/shared/colour.rb +85 -0
- data/lib/vedeu/dsl/shared/style.rb +38 -0
- data/lib/vedeu/dsl/shared/text.rb +102 -0
- data/lib/vedeu/dsl/shared/use.rb +47 -0
- data/lib/vedeu/dsl/stream.rb +49 -0
- data/lib/vedeu/dsl/view.rb +136 -0
- data/lib/vedeu/events/all.rb +10 -0
- data/lib/vedeu/{repositories/models → events}/event.rb +97 -8
- data/lib/vedeu/events/trigger.rb +58 -0
- data/lib/vedeu/exceptions.rb +34 -0
- data/lib/vedeu/input/all.rb +29 -0
- data/lib/vedeu/input/input.rb +26 -0
- data/lib/vedeu/{models → input}/key.rb +21 -11
- data/lib/vedeu/input/keymap.rb +130 -0
- data/lib/vedeu/input/keys.rb +8 -0
- data/lib/vedeu/input/mapper.rb +112 -0
- data/lib/vedeu/launcher.rb +7 -4
- data/lib/vedeu/models/all.rb +12 -0
- data/lib/vedeu/models/collection.rb +71 -0
- data/lib/vedeu/{repositories → models}/focus.rb +63 -21
- data/lib/vedeu/models/geometry.rb +100 -259
- data/lib/vedeu/{repositories/models → models}/group.rb +16 -14
- data/lib/vedeu/{repositories/models → models}/menu.rb +85 -22
- data/lib/vedeu/models/model.rb +51 -0
- data/lib/vedeu/models/view/all.rb +12 -0
- data/lib/vedeu/models/view/char.rb +84 -0
- data/lib/vedeu/models/view/chars.rb +8 -0
- data/lib/vedeu/models/view/composition.rb +101 -0
- data/lib/vedeu/models/view/interface.rb +215 -0
- data/lib/vedeu/models/view/interfaces.rb +8 -0
- data/lib/vedeu/models/view/line.rb +134 -0
- data/lib/vedeu/models/view/lines.rb +8 -0
- data/lib/vedeu/models/view/stream.rb +144 -0
- data/lib/vedeu/models/view/streams.rb +8 -0
- data/lib/vedeu/output/all.rb +8 -0
- data/lib/vedeu/output/border.rb +387 -0
- data/lib/vedeu/output/compositor.rb +41 -30
- data/lib/vedeu/output/output.rb +6 -13
- data/lib/vedeu/output/viewport.rb +78 -94
- data/lib/vedeu/output/writer.rb +29 -0
- data/lib/vedeu/presentation/all.rb +9 -0
- data/lib/vedeu/{colours → presentation}/background.rb +1 -9
- data/lib/vedeu/{colours → presentation}/colour.rb +21 -8
- data/lib/vedeu/{colours → presentation}/foreground.rb +5 -9
- data/lib/vedeu/presentation/presentation.rb +91 -0
- data/lib/vedeu/presentation/style.rb +47 -0
- data/lib/vedeu/{colours → presentation}/translator.rb +11 -5
- data/lib/vedeu/repositories/all.rb +5 -0
- data/lib/vedeu/repositories/menus.rb +5 -42
- data/lib/vedeu/{support → repositories}/repository.rb +78 -41
- data/lib/vedeu/support/all.rb +22 -0
- data/lib/vedeu/support/bounding_area.rb +2 -1
- data/lib/vedeu/support/coercions.rb +18 -1
- data/lib/vedeu/support/console.rb +73 -0
- data/lib/vedeu/support/content_geometry.rb +69 -0
- data/lib/vedeu/support/coordinate.rb +246 -0
- data/lib/vedeu/support/esc.rb +29 -2
- data/lib/vedeu/support/log.rb +36 -2
- data/lib/vedeu/support/node.rb +61 -0
- data/lib/vedeu/support/position.rb +28 -13
- data/lib/vedeu/support/position_validator.rb +79 -0
- data/lib/vedeu/support/read.rb +65 -0
- data/lib/vedeu/support/refresh.rb +8 -32
- data/lib/vedeu/support/terminal.rb +34 -4
- data/lib/vedeu/support/text.rb +104 -0
- data/lib/vedeu/support/trace.rb +11 -23
- data/lib/vedeu/support/visible.rb +75 -0
- data/lib/vedeu/support/write.rb +85 -0
- data/lib/vedeu/traps.rb +18 -0
- data/lib/vedeu.rb +41 -101
- data/test/integration/dsl/compositions_test.rb +27 -0
- data/test/integration/dsl/interfaces_test.rb +261 -0
- data/test/integration/dsl/keymaps_test.rb +42 -0
- data/test/integration/dsl/lines_test.rb +146 -0
- data/test/integration/dsl/menus_test.rb +59 -0
- data/test/integration/dsl/streams_test.rb +129 -0
- data/test/integration/dsl/views_test.rb +63 -0
- data/test/lib/vedeu/api_test.rb +163 -0
- data/test/lib/vedeu/application_test.rb +19 -10
- data/test/lib/vedeu/bindings_test.rb +54 -0
- data/test/lib/vedeu/buffers/all_test.rb +11 -0
- data/test/lib/vedeu/buffers/buffer_test.rb +196 -0
- data/test/lib/vedeu/buffers/display_buffer_test.rb +58 -0
- data/test/lib/vedeu/configuration/api_test.rb +42 -58
- data/test/lib/vedeu/configuration/cli_test.rb +4 -4
- data/test/lib/vedeu/configuration/configuration_test.rb +11 -29
- data/test/lib/vedeu/cursor/all_test.rb +33 -0
- data/test/lib/vedeu/cursor/cursor_test.rb +85 -0
- data/test/lib/vedeu/cursor/move_cursor_test.rb +212 -0
- data/test/lib/vedeu/cursor/toggle_cursor_test.rb +63 -0
- data/test/lib/vedeu/dsl/components/border_test.rb +414 -0
- data/test/lib/vedeu/dsl/components/geometry_test.rb +231 -0
- data/test/lib/vedeu/dsl/components/keymap_test.rb +80 -0
- data/test/lib/vedeu/dsl/components/menu_test.rb +115 -0
- data/test/lib/vedeu/dsl/composition_test.rb +41 -0
- data/test/lib/vedeu/dsl/interface_test.rb +470 -0
- data/test/lib/vedeu/dsl/line_test.rb +60 -0
- data/test/lib/vedeu/dsl/shared/colour_test.rb +100 -0
- data/test/lib/vedeu/dsl/shared/style_test.rb +22 -0
- data/test/lib/vedeu/dsl/shared/text_test.rb +15 -0
- data/test/lib/vedeu/dsl/shared/use_test.rb +27 -0
- data/test/lib/vedeu/dsl/stream_test.rb +26 -0
- data/test/lib/vedeu/dsl/view_test.rb +73 -0
- data/test/lib/vedeu/events/all_test.rb +11 -0
- data/test/lib/vedeu/events/event_test.rb +109 -0
- data/test/lib/vedeu/events/trigger_test.rb +60 -0
- data/test/lib/vedeu/input/all_test.rb +11 -0
- data/test/lib/vedeu/input/input_test.rb +7 -3
- data/test/lib/vedeu/input/key_test.rb +72 -0
- data/test/lib/vedeu/input/keymap_test.rb +89 -0
- data/test/lib/vedeu/input/mapper_test.rb +94 -0
- data/test/lib/vedeu/launcher_test.rb +19 -20
- data/test/lib/vedeu/models/collection_test.rb +114 -0
- data/test/lib/vedeu/{repositories → models}/focus_test.rb +46 -13
- data/test/lib/vedeu/models/geometry_test.rb +35 -39
- data/test/lib/vedeu/models/group_test.rb +100 -0
- data/test/lib/vedeu/models/menu_test.rb +288 -0
- data/test/lib/vedeu/models/model_test.rb +31 -0
- data/test/lib/vedeu/models/view/char_test.rb +166 -0
- data/test/lib/vedeu/models/view/chars_test.rb +18 -0
- data/test/lib/vedeu/models/view/composition_test.rb +41 -0
- data/test/lib/vedeu/models/view/interface_test.rb +128 -0
- data/test/lib/vedeu/models/view/interfaces_test.rb +18 -0
- data/test/lib/vedeu/models/view/line_test.rb +214 -0
- data/test/lib/vedeu/models/view/lines_test.rb +18 -0
- data/test/lib/vedeu/models/view/stream_test.rb +106 -0
- data/test/lib/vedeu/models/view/streams_test.rb +18 -0
- data/test/lib/vedeu/output/border_test.rb +357 -0
- data/test/lib/vedeu/output/compositor_test.rb +61 -15
- data/test/lib/vedeu/output/output_test.rb +25 -84
- data/test/lib/vedeu/output/viewport_test.rb +171 -45
- data/test/lib/vedeu/output/writer_test.rb +45 -0
- data/test/lib/vedeu/{colours → presentation}/background_test.rb +0 -0
- data/test/lib/vedeu/{colours → presentation}/colour_test.rb +5 -5
- data/test/lib/vedeu/{colours → presentation}/foreground_test.rb +0 -0
- data/test/lib/vedeu/presentation/presentation_test.rb +56 -0
- data/test/lib/vedeu/presentation/style_test.rb +69 -0
- data/test/lib/vedeu/presentation/translator_test.rb +63 -0
- data/test/lib/vedeu/repositories/all_test.rb +7 -0
- data/test/lib/vedeu/repositories/menus_test.rb +3 -156
- data/test/lib/vedeu/repositories/repository_test.rb +271 -0
- data/test/lib/vedeu/support/bounding_area_test.rb +3 -3
- data/test/lib/vedeu/support/coercions_test.rb +39 -0
- data/test/lib/vedeu/support/common_test.rb +31 -16
- data/test/lib/vedeu/support/console_test.rb +85 -0
- data/test/lib/vedeu/support/content_geometry_test.rb +107 -0
- data/test/lib/vedeu/support/coordinate_test.rb +190 -0
- data/test/lib/vedeu/support/esc_test.rb +18 -0
- data/test/lib/vedeu/support/grid_test.rb +15 -10
- data/test/lib/vedeu/support/log_test.rb +3 -0
- data/test/lib/vedeu/support/position_test.rb +22 -2
- data/test/lib/vedeu/support/position_validator_test.rb +11 -0
- data/test/lib/vedeu/support/read_test.rb +88 -0
- data/test/lib/vedeu/support/refresh_test.rb +44 -12
- data/test/lib/vedeu/support/sentence_test.rb +6 -4
- data/test/lib/vedeu/support/terminal_test.rb +81 -70
- data/test/lib/vedeu/support/text_test.rb +93 -0
- data/test/lib/vedeu/support/trace_test.rb +21 -9
- data/test/lib/vedeu/support/visible_test.rb +148 -0
- data/test/lib/vedeu/support/write_test.rb +136 -0
- data/test/lib/vedeu/traps_test.rb +11 -0
- data/test/lib/vedeu_test.rb +2 -0
- data/test/support/helpers/all.rb +7 -0
- data/test/support/helpers/dsl_model_test_class.rb +25 -0
- data/test/support/{test_classes → helpers}/helpers.rb +0 -2
- data/test/support/helpers/misc.rb +15 -0
- data/test/support/helpers/model_test_class.rb +34 -0
- data/test/support/{test_classes → helpers}/presentation.rb +0 -0
- data/test/support/{test_classes → helpers}/repositories.rb +3 -3
- data/test/support/{test_modules/repository.rb → helpers/repository_test_module.rb} +5 -1
- data/test/test_helper.rb +19 -22
- data/vedeu.gemspec +11 -6
- metadata +322 -181
- data/lib/vedeu/api/api.rb +0 -239
- data/lib/vedeu/api/composition.rb +0 -38
- data/lib/vedeu/api/defined.rb +0 -52
- data/lib/vedeu/api/helpers.rb +0 -161
- data/lib/vedeu/api/interface.rb +0 -287
- data/lib/vedeu/api/keymap.rb +0 -75
- data/lib/vedeu/api/line.rb +0 -107
- data/lib/vedeu/api/menu.rb +0 -111
- data/lib/vedeu/api/stream.rb +0 -96
- data/lib/vedeu/models/border.rb +0 -238
- data/lib/vedeu/models/char.rb +0 -43
- data/lib/vedeu/models/composition.rb +0 -72
- data/lib/vedeu/models/line.rb +0 -100
- data/lib/vedeu/models/stream.rb +0 -130
- data/lib/vedeu/models/style.rb +0 -52
- data/lib/vedeu/repositories/buffers.rb +0 -52
- data/lib/vedeu/repositories/cursors.rb +0 -64
- data/lib/vedeu/repositories/events.rb +0 -147
- data/lib/vedeu/repositories/groups.rb +0 -47
- data/lib/vedeu/repositories/interfaces.rb +0 -78
- data/lib/vedeu/repositories/keymaps.rb +0 -196
- data/lib/vedeu/repositories/models/cursor.rb +0 -209
- data/lib/vedeu/repositories/models/interface.rb +0 -163
- data/lib/vedeu/repositories/models/keymap.rb +0 -111
- data/lib/vedeu/repositories/models/offset.rb +0 -91
- data/lib/vedeu/repositories/offsets.rb +0 -69
- data/lib/vedeu/support/exceptions.rb +0 -34
- data/lib/vedeu/support/keymap_validator.rb +0 -100
- data/lib/vedeu/support/model.rb +0 -14
- data/lib/vedeu/support/presentation.rb +0 -86
- data/lib/vedeu/support/registrar.rb +0 -53
- data/test/integration/api/api_test.rb +0 -97
- data/test/integration/api_dsl/dsl_api_test.rb +0 -4
- data/test/integration/api_dsl/dsl_composition_test.rb +0 -4
- data/test/integration/api_dsl/dsl_defined_test.rb +0 -4
- data/test/integration/api_dsl/dsl_helpers_test.rb +0 -4
- data/test/integration/api_dsl/dsl_interface_test.rb +0 -4
- data/test/integration/api_dsl/dsl_keymap.rb +0 -4
- data/test/integration/api_dsl/dsl_line_test.rb +0 -4
- data/test/integration/api_dsl/dsl_menu_test.rb +0 -4
- data/test/integration/api_dsl/dsl_stream_test.rb +0 -138
- data/test/integration/cursors_test.rb +0 -9
- data/test/integration/defining_interfaces_test.rb +0 -26
- data/test/integration/run_once_test.rb +0 -26
- data/test/integration/views/basic_view_test.rb +0 -807
- data/test/lib/vedeu/api/api_test.rb +0 -204
- data/test/lib/vedeu/api/composition_test.rb +0 -31
- data/test/lib/vedeu/api/defined_test.rb +0 -79
- data/test/lib/vedeu/api/helpers_test.rb +0 -111
- data/test/lib/vedeu/api/interface_test.rb +0 -410
- data/test/lib/vedeu/api/keymap_test.rb +0 -65
- data/test/lib/vedeu/api/line_test.rb +0 -83
- data/test/lib/vedeu/api/menu_test.rb +0 -85
- data/test/lib/vedeu/api/stream_test.rb +0 -59
- data/test/lib/vedeu/colours/translator_test.rb +0 -22
- data/test/lib/vedeu/models/border_test.rb +0 -197
- data/test/lib/vedeu/models/char_test.rb +0 -52
- data/test/lib/vedeu/models/composition_test.rb +0 -45
- data/test/lib/vedeu/models/key_test.rb +0 -43
- data/test/lib/vedeu/models/line_test.rb +0 -123
- data/test/lib/vedeu/models/stream_test.rb +0 -233
- data/test/lib/vedeu/models/style_test.rb +0 -59
- data/test/lib/vedeu/repositories/buffers_test.rb +0 -37
- data/test/lib/vedeu/repositories/cursors_test.rb +0 -62
- data/test/lib/vedeu/repositories/events_test.rb +0 -57
- data/test/lib/vedeu/repositories/groups_test.rb +0 -28
- data/test/lib/vedeu/repositories/interfaces_test.rb +0 -51
- data/test/lib/vedeu/repositories/keymaps_test.rb +0 -223
- data/test/lib/vedeu/repositories/models/buffer_test.rb +0 -174
- data/test/lib/vedeu/repositories/models/cursor_test.rb +0 -158
- data/test/lib/vedeu/repositories/models/event_test.rb +0 -53
- data/test/lib/vedeu/repositories/models/group_test.rb +0 -98
- data/test/lib/vedeu/repositories/models/interface_test.rb +0 -130
- data/test/lib/vedeu/repositories/models/keymap_test.rb +0 -27
- data/test/lib/vedeu/repositories/models/menu_test.rb +0 -246
- data/test/lib/vedeu/repositories/models/offset_test.rb +0 -128
- data/test/lib/vedeu/repositories/offsets_test.rb +0 -39
- data/test/lib/vedeu/support/keymap_validator_test.rb +0 -62
- data/test/lib/vedeu/support/model_test.rb +0 -23
- data/test/lib/vedeu/support/presentation_test.rb +0 -53
- data/test/lib/vedeu/support/registrar_test.rb +0 -94
- data/test/lib/vedeu/support/repository_test.rb +0 -208
- data/test/support/test_classes/all.rb +0 -5
- data/test/support/test_classes/coercions.rb +0 -16
- data/test/support/test_classes/model.rb +0 -23
- data/test/support/test_modules/all.rb +0 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95a7c03c3ccd065d3c66d1c5a176e66f6e7d04f4
|
4
|
+
data.tar.gz: 2ddf794a56b73ddb0e2cd468ee8d4482baaa347c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7fc84b1f48e9267a3f8fc5d282cc259764bc61a85dd77bee1f0bad19fb0b499e9e0102b7872d119405c4e25052afa50aa16c811ba72552615de827f69399d324
|
7
|
+
data.tar.gz: 391a08f45037963856371ebbcfb82ed17494d4f4b9e93f0df76068dd1c354e7796c5679d02246e643ac526bdf5d8fc577b26cab5de475b0f0634ccf3d3efb5d8
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.2
|
data/Guardfile
CHANGED
@@ -1,3 +1,11 @@
|
|
1
|
+
# guard 'cucumber' do
|
2
|
+
# watch(%r{^features/.+\.feature$})
|
3
|
+
# watch(%r{^features/support/.+$}) { 'features' }
|
4
|
+
# watch(%r{^features/step_definitions/(.+)_steps\.rb$}) do |m|
|
5
|
+
# Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
|
6
|
+
# end
|
7
|
+
# end
|
8
|
+
|
1
9
|
guard :minitest, all_after_pass: true, focus_on_failed: true, env: { 'no_simplecov' => true } do
|
2
10
|
watch(%r{^test/(.*)_test\.rb})
|
3
11
|
watch(%r{^lib/(.+)\.rb}) do |m|
|
@@ -10,3 +18,8 @@ guard :bundler do
|
|
10
18
|
watch('Gemfile')
|
11
19
|
watch(/^.+\.gemspec/)
|
12
20
|
end
|
21
|
+
|
22
|
+
guard 'yard' do
|
23
|
+
watch(%r{docs/.+\.md})
|
24
|
+
watch(%r{lib/.+\.rb})
|
25
|
+
end
|
data/README.md
CHANGED
@@ -45,20 +45,20 @@ class MyApp
|
|
45
45
|
include Vedeu
|
46
46
|
|
47
47
|
interface 'main' do
|
48
|
-
...
|
48
|
+
# ...
|
49
49
|
end
|
50
50
|
|
51
|
-
|
51
|
+
bind :some_event do
|
52
52
|
# ...
|
53
53
|
end
|
54
54
|
|
55
|
-
|
55
|
+
bind :other_event do |hash_args, array_args, args|
|
56
56
|
# ...
|
57
57
|
end
|
58
58
|
|
59
59
|
keys do
|
60
|
-
key('a') { trigger(':apple') }
|
61
|
-
key('b') { trigger(':banana') }
|
60
|
+
key('a') { Vedeu.trigger(':apple') }
|
61
|
+
key('b') { Vedeu.trigger(':banana') }
|
62
62
|
end
|
63
63
|
end
|
64
64
|
```
|
@@ -87,10 +87,12 @@ Views with Vedeu are made up of simple building blocks. These blocks can be arra
|
|
87
87
|
|
88
88
|
```ruby
|
89
89
|
interface 'main' do
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
90
|
+
geometry do
|
91
|
+
y 1
|
92
|
+
x 1
|
93
|
+
width 10 # see notes below
|
94
|
+
height 10
|
95
|
+
end
|
94
96
|
colour foreground: '#ffffff', background: '#000000'
|
95
97
|
end
|
96
98
|
```
|
data/Rakefile
CHANGED
@@ -1,10 +1,19 @@
|
|
1
1
|
require 'bundler/gem_tasks'
|
2
2
|
require 'rake/testtask'
|
3
|
+
require 'cucumber'
|
4
|
+
require 'cucumber/rake/task'
|
3
5
|
|
4
|
-
|
6
|
+
# Don't run cukes for the time being.
|
7
|
+
# Cucumber::Rake::Task.new(:cucumber) do |t|
|
8
|
+
# t.cucumber_opts = "features --format progress"
|
9
|
+
# end
|
10
|
+
# Rake::Task['cucumber'].execute
|
5
11
|
|
6
12
|
Rake::TestTask.new do |t|
|
7
13
|
t.libs.push 'lib'
|
8
14
|
t.libs.push 'test'
|
9
15
|
t.pattern = 'test/**/*_test.rb'
|
16
|
+
t.verbose = false
|
10
17
|
end
|
18
|
+
|
19
|
+
task :default => :test
|
data/bin/vedeu_test
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
lib_dir = File.dirname(__FILE__) + '/../lib'
|
4
|
+
$LOAD_PATH.unshift(lib_dir) unless $LOAD_PATH.include?(lib_dir)
|
5
|
+
|
6
|
+
require 'vedeu'
|
7
|
+
|
8
|
+
class VedeuTestApp
|
9
|
+
def self.start(argv = ARGV)
|
10
|
+
Vedeu::Launcher.new(argv).execute!
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
VedeuTestApp.start(ARGV)
|
data/config/cucumber.yml
ADDED
@@ -0,0 +1,8 @@
|
|
1
|
+
<%
|
2
|
+
rerun = File.file?('rerun.txt') ? IO.read('rerun.txt') : ""
|
3
|
+
rerun_opts = rerun.to_s.strip.empty? ? "--format #{ENV['CUCUMBER_FORMAT'] || 'progress'} features" : "--format #{ENV['CUCUMBER_FORMAT'] || 'pretty'} #{rerun}"
|
4
|
+
std_opts = "--format #{ENV['CUCUMBER_FORMAT'] || 'rerun'} --strict --tags ~@wip --tags ~@ok --tags ~@pending --tags ~@failing"
|
5
|
+
%>
|
6
|
+
default: <%= std_opts %> features --format rerun
|
7
|
+
wip: --tags @wip:99 --wip features --format pretty
|
8
|
+
rerun: <%= rerun_opts %> --format rerun --out rerun.txt --strict --tags ~@wip
|
data/docs/api.md
CHANGED
@@ -15,7 +15,7 @@ Doing it this way will mean you can use any API method without the `Vedeu.` pref
|
|
15
15
|
class SomeClassInYourApplication
|
16
16
|
include Vedeu
|
17
17
|
|
18
|
-
...
|
18
|
+
# ...
|
19
19
|
```
|
20
20
|
|
21
21
|
|
@@ -25,13 +25,13 @@ Doing it this way means you need to use the `Vedeu.` prefix.
|
|
25
25
|
|
26
26
|
```ruby
|
27
27
|
class OtherClassInYourApplication
|
28
|
-
...
|
28
|
+
# ...
|
29
29
|
|
30
30
|
def some_method
|
31
31
|
Vedeu.some_api_method
|
32
32
|
end
|
33
33
|
|
34
|
-
...
|
34
|
+
# ...
|
35
35
|
```
|
36
36
|
|
37
37
|
... TODO ...
|
@@ -43,16 +43,17 @@ Note: Nesting indicates where an API method is allowed/supposed to be used.
|
|
43
43
|
|
44
44
|
#### Events
|
45
45
|
|
46
|
-
-
|
46
|
+
- bind
|
47
47
|
- trigger
|
48
|
-
-
|
48
|
+
- unbind
|
49
49
|
|
50
50
|
|
51
51
|
#### Input
|
52
52
|
|
53
53
|
- keypress
|
54
|
-
-
|
54
|
+
- keymap
|
55
55
|
- key
|
56
|
+
- name
|
56
57
|
- interface
|
57
58
|
|
58
59
|
|
@@ -60,32 +61,40 @@ Note: Nesting indicates where an API method is allowed/supposed to be used.
|
|
60
61
|
|
61
62
|
- interface
|
62
63
|
- background
|
63
|
-
-
|
64
|
+
- border
|
64
65
|
- cursor
|
65
66
|
- colour
|
66
67
|
- delay
|
67
68
|
- focus!
|
68
69
|
- foreground
|
70
|
+
- geometry
|
71
|
+
- centred (or centred!)
|
72
|
+
- height
|
73
|
+
- width
|
74
|
+
- x
|
75
|
+
- y
|
69
76
|
- group
|
70
|
-
-
|
71
|
-
|
77
|
+
- keymap
|
78
|
+
- key
|
79
|
+
- name
|
80
|
+
- interface
|
72
81
|
- line
|
73
82
|
- name
|
74
83
|
- style
|
75
84
|
- use
|
76
|
-
- width
|
77
|
-
- x
|
78
|
-
- y
|
79
85
|
|
80
86
|
|
81
87
|
#### Views
|
82
88
|
|
83
|
-
-
|
84
|
-
- views
|
85
|
-
- view
|
89
|
+
- renders
|
86
90
|
- view
|
87
91
|
- colour
|
88
92
|
- cursor
|
93
|
+
- geometry
|
94
|
+
- height
|
95
|
+
- width
|
96
|
+
- x
|
97
|
+
- y
|
89
98
|
- line
|
90
99
|
- background
|
91
100
|
- colour
|
@@ -98,10 +107,17 @@ Note: Nesting indicates where an API method is allowed/supposed to be used.
|
|
98
107
|
- style
|
99
108
|
- text
|
100
109
|
- width
|
110
|
+
- streams
|
111
|
+
- stream
|
112
|
+
- text
|
101
113
|
- style
|
114
|
+
- lines
|
115
|
+
- line
|
102
116
|
- name
|
103
117
|
- style
|
104
118
|
- use
|
119
|
+
- views
|
120
|
+
- ... as #renders
|
105
121
|
|
106
122
|
|
107
123
|
#### Menus
|
@@ -113,10 +129,23 @@ Note: Nesting indicates where an API method is allowed/supposed to be used.
|
|
113
129
|
|
114
130
|
#### Miscellany
|
115
131
|
|
116
|
-
-
|
132
|
+
- configure
|
117
133
|
- focus
|
134
|
+
- focus_by_name
|
135
|
+
- focussed?
|
136
|
+
- focus_next
|
137
|
+
- focus_previous
|
138
|
+
|
118
139
|
- height
|
140
|
+
Usage: Vedeu.height
|
141
|
+
Returns the height (in lines) for the current terminal.
|
142
|
+
|
119
143
|
- log
|
120
144
|
- resize
|
145
|
+
Usage: Vedeu.resize
|
146
|
+
|
147
|
+
|
121
148
|
- width
|
149
|
+
Usage: Vedeu.width
|
150
|
+
Returns the width (in characters) for the current terminal.
|
122
151
|
|
data/docs/events.md
CHANGED
@@ -5,10 +5,10 @@ Vedeu provides an event mechanism to facilitate the functionality of your applic
|
|
5
5
|
Events described in this document assume that you have included Vedeu in your class:
|
6
6
|
|
7
7
|
```ruby
|
8
|
-
|
9
|
-
|
8
|
+
class SomeClassInYourApplication
|
9
|
+
include Vedeu
|
10
10
|
|
11
|
-
|
11
|
+
# ...
|
12
12
|
```
|
13
13
|
|
14
14
|
## System Events
|
@@ -43,9 +43,21 @@ Hides the cursor for the focussed interface.
|
|
43
43
|
|
44
44
|
Shows the cursor for the focussed interface.
|
45
45
|
|
46
|
+
### `:_cursor_hide_by_name_`
|
47
|
+
|
48
|
+
Hides the cursor for the named interface.
|
49
|
+
|
50
|
+
### `:_cursor_show_by_name_`
|
51
|
+
|
52
|
+
Shows the cursor for the named interface.
|
53
|
+
|
54
|
+
### `:_cursor_origin_`
|
55
|
+
|
56
|
+
Moves the cursor to the top left position of the focussed interface. If this interface has a border,then this is respected.
|
57
|
+
|
46
58
|
### `:_exit_`
|
47
59
|
|
48
|
-
When triggered, Vedeu will trigger a `:
|
60
|
+
When triggered, Vedeu will trigger a `:cleanup` event which you can define (to save files, etc) and attempt to exit.
|
49
61
|
|
50
62
|
### `:_focus_by_name_`
|
51
63
|
|
@@ -130,7 +142,7 @@ When triggered will cause Vedeu to trigger the `:_clear_` and `:_refresh_` event
|
|
130
142
|
|
131
143
|
##### Notes:
|
132
144
|
|
133
|
-
System events can be handled or triggered by your application also, but overriding or adding additional events to the Vedeu system event namespace may cause unpredictable results. It is recommended to only to hook into events like :
|
145
|
+
System events can be handled or triggered by your application also, but overriding or adding additional events to the Vedeu system event namespace may cause unpredictable results. It is recommended to only to hook into events like :cleanup, :_initialize_ and :key if you need to do something respective to those events.
|
134
146
|
|
135
147
|
... TODO ... What about events in Vedeu::Menu?
|
136
148
|
|
@@ -145,7 +157,7 @@ User events allow you to orchestrate behaviour within your application, ie. the
|
|
145
157
|
|
146
158
|
Vedeu pre-defines a few user events, which client applications can listen for, or trigger themselves.
|
147
159
|
|
148
|
-
### `:
|
160
|
+
### `:cleanup`
|
149
161
|
|
150
162
|
Vedeu triggers this event when `:_exit_` is triggered. You can hook into this to perform a special action before the application terminates. Saving the user's work, session or preferences might be popular here.
|
151
163
|
|
@@ -165,13 +177,13 @@ client application for timing amongst other things.
|
|
165
177
|
#### How to define user events
|
166
178
|
|
167
179
|
```ruby
|
168
|
-
|
169
|
-
...
|
180
|
+
bind :event_name do |arg1, arg2|
|
181
|
+
# ...
|
170
182
|
|
171
183
|
# Things that should happen when the event is triggered; these can be method
|
172
184
|
# calls or the triggering of another event or events.
|
173
185
|
|
174
|
-
...
|
186
|
+
# ...
|
175
187
|
end
|
176
188
|
```
|
177
189
|
|
data/docs/getting_started.md
CHANGED
@@ -1,2 +1,18 @@
|
|
1
1
|
## Getting Started with Vedeu
|
2
2
|
|
3
|
+
### Predefined Keys
|
4
|
+
|
5
|
+
Vedeu automatically defines four keys for your client application:
|
6
|
+
|
7
|
+
- q = Quit. Internally triggers the :_exit_ system event which in turn
|
8
|
+
requests the application stops. This triggers the event :cleanup which
|
9
|
+
the client application can bind to and perform any tidying up it wishes
|
10
|
+
to perform before exiting.
|
11
|
+
|
12
|
+
- <esc> = Mode Switch. Toggle between cooked and raw terminal modes.
|
13
|
+
|
14
|
+
- <tab> = Focus Next. Focus the next interface in the focus list.
|
15
|
+
|
16
|
+
- <shift+tab> = Focus Previous. Focus the previous interface in the focus
|
17
|
+
list.
|
18
|
+
|
data/docs/views.md
ADDED
@@ -0,0 +1,158 @@
|
|
1
|
+
## Views with Vedeu
|
2
|
+
|
3
|
+
There are two ways to construct views with Vedeu. You would like to draw the
|
4
|
+
view to the screen immediately (immediate render) or you want to save a view to
|
5
|
+
be drawn when you trigger a refresh event later (deferred view).
|
6
|
+
|
7
|
+
** LINK Both of these approaches require that you have defined an interface (or
|
8
|
+
'visible area') first. You can find out how to define an interface with Vedeu
|
9
|
+
here. The examples in 'Immediate Render' and 'Deferred View' use these interface
|
10
|
+
definitions: (Note: if you use these examples, ensure your terminal is at least
|
11
|
+
70 characters in width and 5 lines in height.)
|
12
|
+
|
13
|
+
```ruby
|
14
|
+
Vedeu.interface 'main' do
|
15
|
+
geometry do
|
16
|
+
centred!
|
17
|
+
height 4
|
18
|
+
width 50
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
Vedeu.interface 'title' do
|
23
|
+
geometry do
|
24
|
+
height 1
|
25
|
+
width 50
|
26
|
+
x use('main').left
|
27
|
+
y use('main').north
|
28
|
+
end
|
29
|
+
end
|
30
|
+
```
|
31
|
+
|
32
|
+
Both of these approaches use a concept of Buffers in Vedeu. There are three
|
33
|
+
buffers for any defined interface. These are imaginatively called: 'back',
|
34
|
+
'front' and 'previous'.
|
35
|
+
|
36
|
+
The 'back' buffer is the content for an interface which will be shown next time
|
37
|
+
a refresh event is fired globally or for that interface. So, 'back' becomes
|
38
|
+
'front'.
|
39
|
+
|
40
|
+
The 'front' buffer is the content for an interface which is currently showing.
|
41
|
+
When a refresh event is fired, again, globally or for that interface
|
42
|
+
specifically, the content of this 'front' buffer is first copied to the
|
43
|
+
'previous' buffer, and then the current 'back' buffer overwrites this 'front'
|
44
|
+
buffer.
|
45
|
+
|
46
|
+
The 'previous' buffer contains what was shown on the 'front' before the current
|
47
|
+
'front'.
|
48
|
+
|
49
|
+
You can only write to either the 'front' (you want the content to be drawn
|
50
|
+
immediately) or the 'back' (you would like the content to be drawn on the next
|
51
|
+
refresh).
|
52
|
+
|
53
|
+
### Immediate Render
|
54
|
+
|
55
|
+
The immediate render DSL for Vedeu is accessed via `Vedeu.renders`. When this
|
56
|
+
approach is used, the content defined is written directly to the 'front'
|
57
|
+
buffer(s) for the interface(s) concerned. Take a glance at the example below:
|
58
|
+
|
59
|
+
```ruby
|
60
|
+
Vedeu.renders do
|
61
|
+
view 'title' do
|
62
|
+
line do
|
63
|
+
stream do
|
64
|
+
left 'Title goes here', width: 35
|
65
|
+
end
|
66
|
+
stream do
|
67
|
+
right Time.now.strftime('%H:%m'), width: 7
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
view 'main' do
|
72
|
+
lines do
|
73
|
+
line 'This is content for the main interface.'
|
74
|
+
line ''
|
75
|
+
line 'Pretty easy eh?'
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
```
|
80
|
+
|
81
|
+
### Deferred View
|
82
|
+
|
83
|
+
The deferred view DSL for Vedeu is accessed via `Vedeu.views`. This approach
|
84
|
+
writes the content defined to the 'back' buffer(s) for the interface(s)
|
85
|
+
concerned. It will become the front when your application triggers the refresh
|
86
|
+
event for the interface(s).
|
87
|
+
|
88
|
+
As you can see by comparing the examples above to these below, the immediate
|
89
|
+
render simply wraps what is already here in the deferred view. Again, more
|
90
|
+
specific information is available in the Rubydoc.
|
91
|
+
|
92
|
+
```ruby
|
93
|
+
Vedeu.views do
|
94
|
+
view 'title' do
|
95
|
+
line do
|
96
|
+
stream do
|
97
|
+
left 'Title goes here', width: 35
|
98
|
+
end
|
99
|
+
stream do
|
100
|
+
right Time.now.strftime('%H:%m'), width: 7
|
101
|
+
end
|
102
|
+
end
|
103
|
+
end
|
104
|
+
view 'main' do
|
105
|
+
lines do
|
106
|
+
line 'This is content for the main interface.'
|
107
|
+
line ''
|
108
|
+
line 'Pretty easy eh?'
|
109
|
+
end
|
110
|
+
end
|
111
|
+
end
|
112
|
+
```
|
113
|
+
|
114
|
+
### Notes on Geometry
|
115
|
+
|
116
|
+
... TODO
|
117
|
+
|
118
|
+
### Notes on Refresh
|
119
|
+
|
120
|
+
... TODO
|
121
|
+
|
122
|
+
### Notes on Building Views
|
123
|
+
|
124
|
+
The basic view DSL methods look like this:
|
125
|
+
|
126
|
+
renders/views
|
127
|
+
|-- view
|
128
|
+
|-- lines
|
129
|
+
| |-- line
|
130
|
+
| |-- streams
|
131
|
+
| | |-- stream
|
132
|
+
| | |-- char
|
133
|
+
| |
|
134
|
+
| |-- stream
|
135
|
+
| |-- char
|
136
|
+
|
|
137
|
+
|-- line
|
138
|
+
|-- streams
|
139
|
+
| |-- stream
|
140
|
+
| |-- char
|
141
|
+
|
|
142
|
+
|-- stream
|
143
|
+
|-- char
|
144
|
+
|
145
|
+
renders/views
|
146
|
+
|-- view
|
147
|
+
|-- lines/line
|
148
|
+
|-- streams/stream
|
149
|
+
|-- char
|
150
|
+
|
151
|
+
#### Authors Notes
|
152
|
+
|
153
|
+
The Rubydoc documentation has more specific information about the DSL methods
|
154
|
+
demonstrated above; it can be accessed here.
|
155
|
+
|
156
|
+
I've tried to write the DSL in a way which makes it read nice; believing that
|
157
|
+
this will make it easier to use. I hope this is the case for you.
|
158
|
+
|