vedeu 0.4.59 → 0.4.60

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.
@@ -8,93 +8,6 @@ module Vedeu
8
8
 
9
9
  before { Vedeu::Terminal.stubs(:size).returns([80, 25]) }
10
10
 
11
- describe 'foreground colour methods' do
12
- it { described.black.must_equal("\e[30m") }
13
- it { described.red.must_equal("\e[31m") }
14
- it { described.green.must_equal("\e[32m") }
15
- it { described.yellow.must_equal("\e[33m") }
16
- it { described.blue.must_equal("\e[34m") }
17
- it { described.magenta.must_equal("\e[35m") }
18
- it { described.cyan.must_equal("\e[36m") }
19
- it { described.light_grey.must_equal("\e[37m") }
20
- it { described.default.must_equal("\e[39m") }
21
- it { described.dark_grey.must_equal("\e[90m") }
22
- it { described.light_red.must_equal("\e[91m") }
23
- it { described.light_green.must_equal("\e[92m") }
24
- it { described.light_yellow.must_equal("\e[93m") }
25
- it { described.light_blue.must_equal("\e[94m") }
26
- it { described.light_magenta.must_equal("\e[95m") }
27
- it { described.light_cyan.must_equal("\e[96m") }
28
- it { described.white.must_equal("\e[97m") }
29
-
30
- it 'returns an escape sequence for the foreground colour and resets ' \
31
- 'after calling the block' do
32
- described.cyan do
33
- 'ununpentium'
34
- end.must_equal("\e[36mununpentium\e[39m")
35
- end
36
- end
37
-
38
- describe '.codes' do
39
- it { described.codes.must_be_instance_of(Hash) }
40
- it { described.must_respond_to(:foreground_codes) }
41
- end
42
-
43
- describe '.background_codes' do
44
- it { described.background_codes.must_be_instance_of(Hash) }
45
- end
46
-
47
- describe 'background colour methods' do
48
- it { described.on_black.must_equal("\e[40m") }
49
- it { described.on_red.must_equal("\e[41m") }
50
- it { described.on_green.must_equal("\e[42m") }
51
- it { described.on_yellow.must_equal("\e[43m") }
52
- it { described.on_blue.must_equal("\e[44m") }
53
- it { described.on_magenta.must_equal("\e[45m") }
54
- it { described.on_cyan.must_equal("\e[46m") }
55
- it { described.on_light_grey.must_equal("\e[47m") }
56
- it { described.on_default.must_equal("\e[49m") }
57
- it { described.on_dark_grey.must_equal("\e[100m") }
58
- it { described.on_light_red.must_equal("\e[101m") }
59
- it { described.on_light_green.must_equal("\e[102m") }
60
- it { described.on_light_yellow.must_equal("\e[103m") }
61
- it { described.on_light_blue.must_equal("\e[104m") }
62
- it { described.on_light_magenta.must_equal("\e[105m") }
63
- it { described.on_light_cyan.must_equal("\e[106m") }
64
- it { described.on_white.must_equal("\e[107m") }
65
-
66
- it 'returns an escape sequence for the background colour and resets ' \
67
- 'after calling the block' do
68
- described.on_red do
69
- 'livermorium'
70
- end.must_equal("\e[41mlivermorium\e[49m")
71
- end
72
- end
73
-
74
- describe 'action methods' do
75
- it { described.hide_cursor.must_equal("\e[?25l") }
76
- it { described.show_cursor.must_equal("\e[?25h") }
77
- it { described.cursor_position.must_equal("\e[6n") }
78
- it { described.bg_reset.must_equal("\e[49m") }
79
- it { described.blink.must_equal("\e[5m") }
80
- it { described.blink_off.must_equal("\e[25m") }
81
- it { described.bold.must_equal("\e[1m") }
82
- it { described.bold_off.must_equal("\e[22m") }
83
- it { described.border_on.must_equal("\e(0") }
84
- it { described.border_off.must_equal("\e(B") }
85
- it { described.dim.must_equal("\e[2m") }
86
- it { described.fg_reset.must_equal("\e[39m") }
87
- it { described.negative.must_equal("\e[7m") }
88
- it { described.positive.must_equal("\e[27m") }
89
- it { described.reset.must_equal("\e[0m") }
90
- it { described.underline.must_equal("\e[4m") }
91
- it { described.underline_off.must_equal("\e[24m") }
92
- end
93
-
94
- describe '.actions' do
95
- it { described.actions.must_be_instance_of(Hash) }
96
- end
97
-
98
11
  describe '.escape' do
99
12
  let(:stream) { "\e[0m\e[38;2;39m\e[48;2;49m\e[2J\e[?25l" }
100
13
 
@@ -0,0 +1,32 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe Plugin do
6
+
7
+ let(:described) { Vedeu::Plugin }
8
+ let(:instance) { described.new(_name, _gem) }
9
+ let(:_name) {}
10
+ let(:_gem) {}
11
+
12
+ describe '#initialize' do
13
+ it { instance.must_be_instance_of(described) }
14
+ it { instance.instance_variable_get('@name').must_equal(_name) }
15
+ it { instance.instance_variable_get('@gem').must_equal(_gem) }
16
+ it {
17
+ instance.instance_variable_get('@gem_name').
18
+ must_equal("vedeu-#{_name}")
19
+ }
20
+ it { instance.instance_variable_get('@enabled').must_equal(false) }
21
+ end
22
+
23
+ describe '#load!' do
24
+ subject { instance.load! }
25
+
26
+ # @todo
27
+ # it { skip }
28
+ end
29
+
30
+ end # Plugin
31
+
32
+ end # Vedeu
@@ -0,0 +1,47 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe Plugins do
6
+
7
+ let(:described) { Vedeu::Plugins }
8
+ let(:instance) { described.new }
9
+
10
+ describe '#initialize' do
11
+ it { instance.must_be_instance_of(described) }
12
+ end
13
+
14
+ describe '#load' do
15
+ subject { instance.load }
16
+
17
+ # @todo
18
+ # it { skip }
19
+ end
20
+
21
+ describe '#register' do
22
+ let(:_name) {}
23
+ let(:plugin) { false }
24
+
25
+ subject { instance.register(_name, plugin) }
26
+
27
+ # @todo
28
+ # it { skip }
29
+ end
30
+
31
+ describe '#find' do
32
+ subject { instance.find }
33
+
34
+ # @todo
35
+ # it { skip }
36
+ end
37
+
38
+ describe '#names' do
39
+ subject { instance.names }
40
+
41
+ # @todo
42
+ # it { skip }
43
+ end
44
+
45
+ end # Plugins
46
+
47
+ end # Vedeu
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: vedeu
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.59
4
+ version: 0.4.60
5
5
  platform: ruby
6
6
  authors:
7
7
  - Gavin Laking
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-07-24 00:00:00.000000000 Z
11
+ date: 2015-07-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: guard
@@ -235,12 +235,10 @@ files:
235
235
  - config/rubocop_disabled.yml
236
236
  - config/rubocop_enabled.yml
237
237
  - docs/api.md
238
- - docs/applications.md
239
238
  - docs/dsl.md
240
239
  - docs/events.md
241
240
  - docs/getting_started.md
242
241
  - docs/object_graph.md
243
- - docs/views.md
244
242
  - examples/borders_app.rb
245
243
  - examples/colour_support.sh
246
244
  - examples/colours_app.rb
@@ -310,6 +308,7 @@ files:
310
308
  - lib/vedeu/colours/colour.rb
311
309
  - lib/vedeu/colours/colour_translator.rb
312
310
  - lib/vedeu/colours/colours.rb
311
+ - lib/vedeu/colours/escape_sequences.rb
313
312
  - lib/vedeu/colours/foreground.rb
314
313
  - lib/vedeu/colours/foregrounds.rb
315
314
  - lib/vedeu/common.rb
@@ -398,6 +397,7 @@ files:
398
397
  - lib/vedeu/null/generic.rb
399
398
  - lib/vedeu/null/geometry.rb
400
399
  - lib/vedeu/null/interface.rb
400
+ - lib/vedeu/null/menu.rb
401
401
  - lib/vedeu/output/border.rb
402
402
  - lib/vedeu/output/borders.rb
403
403
  - lib/vedeu/output/clear/named_group.rb
@@ -426,6 +426,8 @@ files:
426
426
  - lib/vedeu/output/virtual_buffer.rb
427
427
  - lib/vedeu/output/virtual_terminal.rb
428
428
  - lib/vedeu/output/wordwrap.rb
429
+ - lib/vedeu/plugins.rb
430
+ - lib/vedeu/plugins/plugin.rb
429
431
  - lib/vedeu/repositories.rb
430
432
  - lib/vedeu/repositories/collection.rb
431
433
  - lib/vedeu/repositories/model.rb
@@ -467,6 +469,7 @@ files:
467
469
  - test/lib/vedeu/colours/colour_test.rb
468
470
  - test/lib/vedeu/colours/colour_translator_test.rb
469
471
  - test/lib/vedeu/colours/colours_test.rb
472
+ - test/lib/vedeu/colours/escape_sequences_test.rb
470
473
  - test/lib/vedeu/colours/foreground_test.rb
471
474
  - test/lib/vedeu/colours/foregrounds_test.rb
472
475
  - test/lib/vedeu/common_test.rb
@@ -543,6 +546,7 @@ files:
543
546
  - test/lib/vedeu/null/generic_test.rb
544
547
  - test/lib/vedeu/null/geometry_test.rb
545
548
  - test/lib/vedeu/null/interface_test.rb
549
+ - test/lib/vedeu/null/menu_test.rb
546
550
  - test/lib/vedeu/output/border_test.rb
547
551
  - test/lib/vedeu/output/borders_test.rb
548
552
  - test/lib/vedeu/output/clear/named_group_test.rb
@@ -570,6 +574,8 @@ files:
570
574
  - test/lib/vedeu/output/virtual_buffer_test.rb
571
575
  - test/lib/vedeu/output/virtual_terminal_test.rb
572
576
  - test/lib/vedeu/output/wordwrap_test.rb
577
+ - test/lib/vedeu/plugins/plugin_test.rb
578
+ - test/lib/vedeu/plugins_test.rb
573
579
  - test/lib/vedeu/repositories/all_test.rb
574
580
  - test/lib/vedeu/repositories/collection_test.rb
575
581
  - test/lib/vedeu/repositories/model_test.rb
@@ -643,6 +649,7 @@ test_files:
643
649
  - test/lib/vedeu/colours/colour_test.rb
644
650
  - test/lib/vedeu/colours/colour_translator_test.rb
645
651
  - test/lib/vedeu/colours/colours_test.rb
652
+ - test/lib/vedeu/colours/escape_sequences_test.rb
646
653
  - test/lib/vedeu/colours/foreground_test.rb
647
654
  - test/lib/vedeu/colours/foregrounds_test.rb
648
655
  - test/lib/vedeu/common_test.rb
@@ -719,6 +726,7 @@ test_files:
719
726
  - test/lib/vedeu/null/generic_test.rb
720
727
  - test/lib/vedeu/null/geometry_test.rb
721
728
  - test/lib/vedeu/null/interface_test.rb
729
+ - test/lib/vedeu/null/menu_test.rb
722
730
  - test/lib/vedeu/output/border_test.rb
723
731
  - test/lib/vedeu/output/borders_test.rb
724
732
  - test/lib/vedeu/output/clear/named_group_test.rb
@@ -746,6 +754,8 @@ test_files:
746
754
  - test/lib/vedeu/output/virtual_buffer_test.rb
747
755
  - test/lib/vedeu/output/virtual_terminal_test.rb
748
756
  - test/lib/vedeu/output/wordwrap_test.rb
757
+ - test/lib/vedeu/plugins/plugin_test.rb
758
+ - test/lib/vedeu/plugins_test.rb
749
759
  - test/lib/vedeu/repositories/all_test.rb
750
760
  - test/lib/vedeu/repositories/collection_test.rb
751
761
  - test/lib/vedeu/repositories/model_test.rb
@@ -1,167 +0,0 @@
1
- # @title Vedeu Applications
2
-
3
- Vedeu has basic tools to generate client application scaffolding, in a similar
4
- way to Ruby on Rails. Although not nearly as advanced as the Rails equivalent,
5
- hopefully these generators will get you off the ground.
6
-
7
- ### Installing Vedeu
8
-
9
- To install Vedeu, simply:
10
-
11
- gem install 'vedeu'
12
-
13
- To use Vedeu's application scaffolding, see below:
14
-
15
- ### Generating a new application
16
-
17
- ```bash
18
- |
19
- |- app_name/
20
- | |
21
- |- app/
22
- | |- controllers/
23
- | | |- application_controller.rb
24
- | |
25
- | |- helpers/
26
- | | |- application_helper.rb
27
- | |
28
- | |- models/
29
- | | |- keymaps/
30
- | | |- _global_.rb
31
- | |
32
- | |- views/
33
- | |- interfaces/
34
- | |- templates/
35
- |
36
- |- bin/
37
- | |- app_name
38
- |
39
- |- config/
40
- | |- add_name
41
- | |- configuration.rb
42
- |
43
- |- lib/
44
- |- test/
45
- |- vendor/
46
- |- application.rb
47
- |- Gemfile
48
- ```
49
-
50
- To create the application structure as shown above:
51
-
52
- ```bash
53
- vedeu new app_name
54
- ```
55
-
56
- Let's talk about each directory and its purpose.
57
-
58
- #### app/controllers
59
-
60
- The controllers directory is the place to store the events and behaviour logic
61
- of your application. It will manage the choosing of views and models based on
62
- previous choices. Think of them as the orchestrators of your application.
63
-
64
- In web applications, the controller typically handles the routed request and
65
- interacts with the models and sets up the views. In Vedeu, it does much the
66
- same, minus the requests.
67
-
68
- #### app/helpers
69
-
70
- Ruby on Rails has a concept of helpers which are not very object-oriented, but
71
- allow you to share functionality/behaviour across multiple views. Vedeu uses
72
- this concept as it will be familiar to many Rails developers and might be
73
- helpful to beginners.
74
-
75
- #### app/models
76
-
77
- Much like `lib`, this directory is for your application logic code. Some people
78
- prefer to use `app/models`, others like to use `lib`. Some even use both!
79
-
80
- #### app/models/keymaps
81
-
82
- This will contain the global keymap (which affects all of your application)
83
- plus any specific interface keymaps which only affect a certain interface when
84
- in focus.
85
-
86
- #### app/views
87
-
88
- This will contain classes which produce the views needed by Vedeu to make your
89
- application come alive!
90
-
91
- #### app/views/interfaces
92
-
93
- This will contain the information Vedeu needs to draw the various interfaces
94
- and views of your application.
95
-
96
- #### app/views/templates
97
-
98
- This will house the templates your application will use to display views. You
99
- can populate templates with generic view information and supplement it with
100
- variable data from your application.
101
-
102
- #### bin
103
-
104
- This will contain executable Ruby scripts (or Bash, or shell language of your
105
- choice) which will launch your application or provide command-line behaviours.
106
-
107
- #### config
108
-
109
- This will contain any configuration your application needs to run, plus the
110
- configuration for Vedeu. This configuration affects the way Vedeu works with
111
- your application.
112
-
113
- #### lib
114
-
115
- This is for code your application may use to support code you have in
116
- `app/models`.
117
-
118
- #### test
119
-
120
- This is for the tests you might write to help ensure your application executes
121
- in the way you expect.
122
-
123
- #### vendor
124
-
125
- This is for third-party code which your application might want to ship with.
126
- Usually you will include various Ruby gems to provide functionality, but you
127
- might want to do something special.
128
-
129
-
130
- ### Generating a new view
131
-
132
- Vedeu also provides a generator to create the files needed for a view. To run
133
- this, use the following from within the root of the application directory:
134
-
135
- ```bash
136
- vedeu view view_name
137
- ```
138
-
139
- Let's talk about the files it will create and populate:
140
-
141
- ```bash
142
- |
143
- |- app_name/
144
- | |
145
- |- app/
146
- | |- controllers/
147
- | | |- view_name_controller.rb
148
- | |
149
- | |- helpers/
150
- | | |- view_name_helper.rb
151
- | |
152
- | |- models/
153
- | | |- keymaps/
154
- | | |- view_name.rb
155
- | |
156
- | |- views/
157
- | |- interfaces/
158
- | | |- view_name.rb
159
- | |
160
- | |- templates/
161
- | | |- view_name.erb
162
- | |
163
- | |- view_name.rb
164
- |...
165
- ```
166
-
167
- ####
@@ -1,158 +0,0 @@
1
- # @title 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
10
- interface definitions: (Note: if you use these examples, ensure your terminal
11
- is at least 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 (immediate render)) or the 'back' (you would like the content to be
51
- drawn on the next refresh (deferred view)).
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: [RubyDoc](http://rubydoc.info/gems/vedeu).
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
-