vedeu 0.4.52 → 0.4.53

Sign up to get free protection for your applications and to get access to all the features.
Files changed (35) hide show
  1. checksums.yaml +4 -4
  2. data/docs/events.md +15 -5
  3. data/lib/vedeu/application/application_view.rb +0 -4
  4. data/lib/vedeu/bindings/all.rb +22 -1
  5. data/lib/vedeu/bindings/drb.rb +89 -13
  6. data/lib/vedeu/bindings/menus.rb +123 -13
  7. data/lib/vedeu/bindings/movement.rb +147 -26
  8. data/lib/vedeu/bindings/system.rb +284 -0
  9. data/lib/vedeu/bindings/visibility.rb +117 -13
  10. data/lib/vedeu/dsl/all.rb +2 -1
  11. data/lib/vedeu/output/compressor.rb +2 -0
  12. data/lib/vedeu/output/refresh.rb +20 -5
  13. data/lib/vedeu/output/refresh_group.rb +6 -1
  14. data/lib/vedeu/output/render_border.rb +1 -1
  15. data/lib/vedeu/output/renderers/all.rb +1 -0
  16. data/lib/vedeu/output/renderers/escape_sequence.rb +2 -16
  17. data/lib/vedeu/output/renderers/null.rb +2 -16
  18. data/lib/vedeu/output/renderers/renderer_options.rb +26 -0
  19. data/lib/vedeu/output/renderers/terminal.rb +2 -14
  20. data/lib/vedeu/output/renderers/text.rb +2 -16
  21. data/lib/vedeu/repositories/all.rb +23 -1
  22. data/lib/vedeu/version.rb +1 -1
  23. data/test/lib/vedeu/bindings/system_test.rb +44 -0
  24. data/test/lib/vedeu/output/refresh_group_test.rb +10 -2
  25. data/test/lib/vedeu/output/refresh_test.rb +6 -23
  26. data/test/lib/vedeu/output/renderers/renderer_options_test.rb +12 -0
  27. data/test/lib/vedeu/templating/preprocessor_test.rb +11 -10
  28. metadata +8 -10
  29. data/docs/events/drb.md +0 -49
  30. data/docs/events/main.md +0 -109
  31. data/docs/events/menus.md +0 -72
  32. data/docs/events/movement.md +0 -105
  33. data/docs/events/visibility.md +0 -61
  34. data/lib/vedeu/bindings/bindings.rb +0 -86
  35. data/test/lib/vedeu/bindings/bindings_test.rb +0 -40
@@ -4,13 +4,23 @@ module Vedeu
4
4
 
5
5
  # Refreshes the terminal.
6
6
  #
7
- # @api private
7
+ # @note
8
+ # In the cases of {#all} and {#by_group}, the interfaces will be refreshed
9
+ # in z-index order, meaning that interfaces with a lower z-index will be
10
+ # drawn first. This means overlapping interfaces will be drawn as specified.
11
+ #
12
+ # @api public
8
13
  module Refresh
9
14
 
10
15
  module_function
11
16
 
12
17
  # Refresh all registered interfaces.
13
18
  #
19
+ # @example
20
+ # Vedeu.trigger(:_refresh_)
21
+ #
22
+ # Vedeu::Refresh.all
23
+ #
14
24
  # @return [Array]
15
25
  def all
16
26
  Vedeu.timer('Refresh All') do
@@ -27,10 +37,10 @@ module Vedeu
27
37
 
28
38
  # Refresh an interface, or collection of interfaces belonging to a group.
29
39
  #
30
- # @note
31
- # The group of interfaces will be refreshed in z-index order, meaning that
32
- # interfaces with a lower z-index will be draw first. This means
33
- # overlapping interfaces will be drawn as specified.
40
+ # @example
41
+ # Vedeu.trigger(:_refresh_group_, group_name)
42
+ #
43
+ # Vedeu::Refresh.by_group(group_name)
34
44
  #
35
45
  # @param group_name [String] The name of the group to be refreshed.
36
46
  # @return [Array|ModelNotFound] A collection of the names of interfaces
@@ -43,6 +53,11 @@ module Vedeu
43
53
 
44
54
  # Refresh an interface by name.
45
55
  #
56
+ # @example
57
+ # Vedeu.trigger(:_refresh_, name)
58
+ #
59
+ # Vedeu::Refresh.by_name(name)
60
+ #
46
61
  # @param name [String] The name of the interface to be refreshed using the
47
62
  # named buffer.
48
63
  # @return [Array|ModelNotFound]
@@ -7,6 +7,8 @@ module Vedeu
7
7
  # @api private
8
8
  class RefreshGroup
9
9
 
10
+ include Vedeu::Common
11
+
10
12
  # @param name [String]
11
13
  # @return [void]
12
14
  def self.by_name(name)
@@ -44,7 +46,10 @@ module Vedeu
44
46
 
45
47
  # @return [Set]
46
48
  def members
47
- Vedeu.groups.find!(name).members
49
+ fail Vedeu::MissingRequired,
50
+ 'Cannot refresh group with an empty group name.' unless present?(name)
51
+
52
+ Vedeu.groups.by_name(name).members
48
53
  end
49
54
 
50
55
  end # RefreshGroup
@@ -177,7 +177,7 @@ module Vedeu
177
177
  end
178
178
 
179
179
  # From the second element of {#title_characters} remove the border from each
180
- # {#horizontal_border} Vedeu::Char, and add the title character.
180
+ # {#build_horizontal} Vedeu::Char, and add the title character.
181
181
  #
182
182
  # @return [Array<Vedeu::Char>]
183
183
  def titlebar
@@ -1,3 +1,4 @@
1
+ require_relative 'renderer_options'
1
2
  require_relative 'escape_sequence'
2
3
  require_relative 'file'
3
4
  require_relative 'html'
@@ -7,6 +7,8 @@ module Vedeu
7
7
  # @api private
8
8
  class EscapeSequence
9
9
 
10
+ include Vedeu::RendererOptions
11
+
10
12
  # Returns a new instance of Vedeu::Renderers::EscapeSequence.
11
13
  #
12
14
  # @param options [Hash]
@@ -24,22 +26,6 @@ module Vedeu
24
26
  end.join
25
27
  end
26
28
 
27
- private
28
-
29
- # Combines the options provided at instantiation with the default values.
30
- #
31
- # @return [Hash<Symbol => void>]
32
- def options
33
- defaults.merge!(@options)
34
- end
35
-
36
- # The default values for a new instance of this class.
37
- #
38
- # @return [Hash<Symbol => void>]
39
- def defaults
40
- {}
41
- end
42
-
43
29
  end # EscapeSequence
44
30
 
45
31
  end # Renderers
@@ -7,6 +7,8 @@ module Vedeu
7
7
  # @api private
8
8
  class Null
9
9
 
10
+ include Vedeu::RendererOptions
11
+
10
12
  # Returns a new instance of Vedeu::Renderers::Null.
11
13
  #
12
14
  # @param options [Hash]
@@ -21,22 +23,6 @@ module Vedeu
21
23
  output
22
24
  end
23
25
 
24
- private
25
-
26
- # Combines the options provided at instantiation with the default values.
27
- #
28
- # @return [Hash<Symbol => void>]
29
- def options
30
- defaults.merge!(@options)
31
- end
32
-
33
- # The default values for a new instance of this class.
34
- #
35
- # @return [Hash<Symbol => void>]
36
- def defaults
37
- {}
38
- end
39
-
40
26
  end # Null
41
27
 
42
28
  end # Renderers
@@ -0,0 +1,26 @@
1
+ module Vedeu
2
+
3
+ # Provides shared functionality to Vedeu::Renderer classes.
4
+ #
5
+ # @api private
6
+ module RendererOptions
7
+
8
+ private
9
+
10
+ # Combines the options provided at instantiation with the default values.
11
+ #
12
+ # @return [Hash<Symbol => void>]
13
+ def options
14
+ defaults.merge!(@options)
15
+ end
16
+
17
+ # The default values for a new instance of this class.
18
+ #
19
+ # @return [Hash<Symbol => void>]
20
+ def defaults
21
+ {}
22
+ end
23
+
24
+ end # RendererOptions
25
+
26
+ end # Vedeu
@@ -8,6 +8,8 @@ module Vedeu
8
8
  # @api private
9
9
  class Terminal
10
10
 
11
+ include Vedeu::RendererOptions
12
+
11
13
  # Returns a new instance of Vedeu::Renderers::Terminal.
12
14
  #
13
15
  # @param options [Hash]
@@ -32,20 +34,6 @@ module Vedeu
32
34
  end
33
35
  end
34
36
 
35
- # Combines the options provided at instantiation with the default values.
36
- #
37
- # @return [Hash<Symbol => void>]
38
- def options
39
- defaults.merge!(@options)
40
- end
41
-
42
- # The default values for a new instance of this class.
43
- #
44
- # @return [Hash<Symbol => void>]
45
- def defaults
46
- {}
47
- end
48
-
49
37
  end # Terminal
50
38
 
51
39
  end # Renderers
@@ -8,6 +8,8 @@ module Vedeu
8
8
  # @api private
9
9
  class Text
10
10
 
11
+ include Vedeu::RendererOptions
12
+
11
13
  # Returns a new instance of Vedeu::Renderers::Text.
12
14
  #
13
15
  # @param options [Hash]
@@ -22,22 +24,6 @@ module Vedeu
22
24
  Vedeu::Compressor.render(output)
23
25
  end
24
26
 
25
- private
26
-
27
- # Combines the options provided at instantiation with the default values.
28
- #
29
- # @return [Hash<Symbol => void>]
30
- def options
31
- defaults.merge!(@options)
32
- end
33
-
34
- # The default values for a new instance of this class.
35
- #
36
- # @return [Hash<Symbol => void>]
37
- def defaults
38
- {}
39
- end
40
-
41
27
  end # Text
42
28
 
43
29
  end # Renderers
@@ -12,17 +12,39 @@ module Vedeu
12
12
  storage.add(klass)
13
13
  end
14
14
 
15
+ # List all models stored in each registered repository.
16
+ #
17
+ # @return [Array]
18
+ def registered
19
+ all.map do |repository|
20
+ registered = repository.send(:registered)
21
+
22
+ Vedeu.log(type: :debug,
23
+ message: "Repository '#{repository.class.name}':" \
24
+ " #{registered.inspect}")
25
+
26
+ registered
27
+ end
28
+ end
29
+
15
30
  # Remove all stored models from the repository.
16
31
  #
17
32
  # @return [TrueClass]
18
33
  def reset!
19
- storage.map(&:repository).map { |repository| repository.send(:reset) }
34
+ all.map { |repository| repository.send(:reset) }
20
35
 
21
36
  true
22
37
  end
23
38
 
24
39
  private
25
40
 
41
+ # Access all the repositories stored.
42
+ #
43
+ # @return [Array]
44
+ def all
45
+ storage.map(&:repository)
46
+ end
47
+
26
48
  # Access to the storage for this repository.
27
49
  #
28
50
  # @return [Array]
data/lib/vedeu/version.rb CHANGED
@@ -1,6 +1,6 @@
1
1
  module Vedeu
2
2
 
3
3
  # The current version of Vedeu.
4
- VERSION = '0.4.52'
4
+ VERSION = '0.4.53'
5
5
 
6
6
  end
@@ -0,0 +1,44 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ module Bindings
6
+
7
+ describe System do
8
+
9
+ context 'the system events needed by Vedeu to run are defined' do
10
+ it { Vedeu.bound?(:_clear_).must_equal(true) }
11
+ it { Vedeu.bound?(:_clear_group_).must_equal(true) }
12
+ it { Vedeu.bound?(:_cleanup_).must_equal(true) }
13
+ it { Vedeu.bound?(:_command_).must_equal(true) }
14
+ it { Vedeu.bound?(:_exit_).must_equal(true) }
15
+ it { Vedeu.bound?(:_initialize_).must_equal(true) }
16
+ it { Vedeu.bound?(:_keypress_).must_equal(true) }
17
+ it { Vedeu.bound?(:_log_).must_equal(true) }
18
+ it { Vedeu.bound?(:_mode_switch_).must_equal(true) }
19
+ it { Vedeu.bound?(:_refresh_).must_equal(true) }
20
+ it { Vedeu.bound?(:_refresh_cursor_).must_equal(true) }
21
+ it { Vedeu.bound?(:_refresh_group_).must_equal(true) }
22
+ it { Vedeu.bound?(:_resize_).must_equal(true) }
23
+ end
24
+
25
+ context 'the geometry specific events are defined' do
26
+ it { Vedeu.bound?(:_maximise_).must_equal(true) }
27
+ it { Vedeu.bound?(:_unmaximise_).must_equal(true) }
28
+ end
29
+
30
+ context 'the focus specific events are defined' do
31
+ it { Vedeu.bound?(:_focus_by_name_).must_equal(true) }
32
+ it { Vedeu.bound?(:_focus_next_).must_equal(true) }
33
+ it { Vedeu.bound?(:_focus_prev_).must_equal(true) }
34
+ end
35
+
36
+ context 'the refresh event for all registered interfaces is defined' do
37
+ it { Vedeu.bound?(:_refresh_).must_equal(true) }
38
+ end
39
+
40
+ end # System
41
+
42
+ end # Bindings
43
+
44
+ end # Vedeu
@@ -20,8 +20,16 @@ module Vedeu
20
20
  describe '#by_name' do
21
21
  subject { instance.by_name }
22
22
 
23
- # @todo
24
- # it { skip }
23
+ context 'when the name is not present' do
24
+ let(:_name) { '' }
25
+
26
+ it { proc { subject }.must_raise(Vedeu::MissingRequired) }
27
+ end
28
+
29
+ context 'when the name is present' do
30
+ # @todo
31
+ # it { skip }
32
+ end
25
33
  end
26
34
 
27
35
  end # RefreshGroup
@@ -34,32 +34,15 @@ module Vedeu
34
34
  end
35
35
 
36
36
  describe '.by_group' do
37
- let(:_name) { 'aluminium' }
38
- let(:buffer) { Vedeu::Null::Buffer.new(_name) }
37
+ let(:group_name) { 'elements' }
38
+ let(:_name) { 'aluminium' }
39
39
 
40
40
  subject { described.by_group(group_name) }
41
41
 
42
- context 'when there are no registered groups' do
43
- let(:group_name) { '' }
44
-
45
- before { Vedeu.groups.reset }
46
-
47
- it { proc { subject }.must_raise(ModelNotFound) }
48
- end
49
-
50
- context 'when there are registered groups' do
51
- let(:group_name) { 'elements' }
52
-
53
- before do
54
- Vedeu::Group.new(name: group_name, members: _name).store
55
- end
56
-
57
- it do
58
- Vedeu.buffers.expects(:by_name).with(_name).returns(buffer)
59
- buffer.expects(:render)
60
- subject
61
- end
62
- end
42
+ it {
43
+ Vedeu::RefreshGroup.expects(:by_name).with(group_name)
44
+ subject
45
+ }
63
46
  end
64
47
 
65
48
  describe '.by_name' do
@@ -0,0 +1,12 @@
1
+ require 'test_helper'
2
+
3
+ module Vedeu
4
+
5
+ describe RendererOptions do
6
+
7
+ # @todo
8
+ # it { skip }
9
+
10
+ end # RendererOptions
11
+
12
+ end # Vedeu
@@ -15,6 +15,14 @@ module Vedeu
15
15
  "More text here\n"
16
16
  ]
17
17
  }
18
+ let(:expected) {
19
+ [
20
+ Vedeu::Stream.new(value: 'Some text here'),
21
+ Vedeu::Stream.new(value: 'Yay!',
22
+ colour: Vedeu::Colour.coerce(foreground: '#0f0')),
23
+ Vedeu::Stream.new(value: 'More text here')
24
+ ]
25
+ }
18
26
 
19
27
  describe '#initialize' do
20
28
  it { instance.must_be_instance_of(described) }
@@ -22,19 +30,12 @@ module Vedeu
22
30
  end
23
31
 
24
32
  describe '.process' do
25
- it { described.must_respond_to(:process) }
33
+ subject { described.process(lines) }
34
+
35
+ it { subject.must_equal(expected) }
26
36
  end
27
37
 
28
38
  describe '#process' do
29
- let(:expected) {
30
- [
31
- Vedeu::Stream.new(value: 'Some text here'),
32
- Vedeu::Stream.new(value: 'Yay!',
33
- colour: Vedeu::Colour.coerce({ foreground: '#0f0' })),
34
- Vedeu::Stream.new(value: 'More text here')
35
- ]
36
- }
37
-
38
39
  subject { instance.process }
39
40
 
40
41
  it { subject.must_equal(expected) }