vedeu 0.8.15 → 0.8.16

Sign up to get free protection for your applications and to get access to all the features.
Files changed (73) hide show
  1. checksums.yaml +4 -4
  2. data/docs/dsl/by_method/clear_by_group.md +4 -1
  3. data/docs/dsl/by_method/clear_by_name.md +4 -1
  4. data/docs/dsl/by_method/clear_content_by_name.md +4 -1
  5. data/docs/dsl/by_method/documents.md +5 -1
  6. data/docs/dsl/by_method/geometry/align.md +54 -8
  7. data/examples/dsl_alignment.rb +9 -9
  8. data/examples/dsl_colours.rb +1 -1
  9. data/examples/dsl_editor.rb +1 -1
  10. data/examples/dsl_hello_worlds.rb +2 -2
  11. data/lib/vedeu.rb +7 -1
  12. data/lib/vedeu/borders/dsl.rb +1 -2
  13. data/lib/vedeu/borders/refresh.rb +1 -2
  14. data/lib/vedeu/borders/title.rb +1 -1
  15. data/lib/vedeu/buffers/refresh.rb +1 -2
  16. data/lib/vedeu/cells/support/html.rb +1 -1
  17. data/lib/vedeu/coercers/chars.rb +1 -1
  18. data/lib/vedeu/coercers/coercer.rb +0 -3
  19. data/lib/vedeu/coercers/colour.rb +1 -1
  20. data/lib/vedeu/coercers/editor_line.rb +1 -1
  21. data/lib/vedeu/coercers/lines.rb +1 -1
  22. data/lib/vedeu/colours/backgrounds.rb +2 -0
  23. data/lib/vedeu/colours/foregrounds.rb +2 -0
  24. data/lib/vedeu/cursors/move.rb +1 -1
  25. data/lib/vedeu/cursors/refresh.rb +1 -2
  26. data/lib/vedeu/dsl/border.rb +1 -4
  27. data/lib/vedeu/dsl/geometry.rb +2 -6
  28. data/lib/vedeu/dsl/use.rb +1 -2
  29. data/lib/vedeu/dsl/view.rb +5 -7
  30. data/lib/vedeu/editor/cropper.rb +1 -1
  31. data/lib/vedeu/editor/editor.rb +1 -1
  32. data/lib/vedeu/events/event.rb +3 -4
  33. data/lib/vedeu/events/trigger.rb +1 -2
  34. data/lib/vedeu/geometries/area/area.rb +1 -1
  35. data/lib/vedeu/groups/clear.rb +3 -8
  36. data/lib/vedeu/groups/dsl.rb +2 -2
  37. data/lib/vedeu/groups/refresh.rb +2 -3
  38. data/lib/vedeu/input/capture.rb +1 -1
  39. data/lib/vedeu/input/dsl.rb +1 -2
  40. data/lib/vedeu/input/mapper.rb +2 -2
  41. data/lib/vedeu/interfaces/clear.rb +3 -14
  42. data/lib/vedeu/interfaces/dsl.rb +10 -15
  43. data/lib/vedeu/interfaces/repository.rb +3 -3
  44. data/lib/vedeu/menus/dsl.rb +1 -2
  45. data/lib/vedeu/models/focus.rb +4 -5
  46. data/lib/vedeu/models/toggleable.rb +8 -7
  47. data/lib/vedeu/output/compressor_cache.rb +15 -4
  48. data/lib/vedeu/output/refresh.rb +3 -3
  49. data/lib/vedeu/output/viewport.rb +4 -4
  50. data/lib/vedeu/plugins/plugin.rb +1 -1
  51. data/lib/vedeu/plugins/plugins.rb +2 -2
  52. data/lib/vedeu/repositories/collection.rb +2 -2
  53. data/lib/vedeu/repositories/repository.rb +6 -6
  54. data/lib/vedeu/repositories/store.rb +1 -1
  55. data/lib/vedeu/sentence.rb +2 -2
  56. data/lib/vedeu/version.rb +1 -1
  57. data/lib/vedeu/views/chars.rb +1 -1
  58. data/test/lib/vedeu/application/controller_test.rb +6 -0
  59. data/test/lib/vedeu/coercers/colour_test.rb +3 -1
  60. data/test/lib/vedeu/coercers/editor_line_test.rb +2 -0
  61. data/test/lib/vedeu/coercers/lines_test.rb +4 -0
  62. data/test/lib/vedeu/dsl/border_test.rb +13 -0
  63. data/test/lib/vedeu/dsl/geometry_test.rb +15 -0
  64. data/test/lib/vedeu/interfaces/repository_test.rb +1 -1
  65. data/test/lib/vedeu/models/toggleable_test.rb +6 -0
  66. data/test/lib/vedeu/output/refresh_test.rb +6 -6
  67. data/test/lib/vedeu/repositories/model_test.rb +6 -0
  68. data/test/lib/vedeu/repositories/registerable_test.rb +6 -0
  69. data/test/lib/vedeu/views/value_test.rb +6 -0
  70. data/test/support/examples/hello_world.rb +1 -1
  71. data/test/support/examples/view_templates_app/view_templates_app.rb +1 -1
  72. data/vedeu.gemspec +1 -1
  73. metadata +4 -4
@@ -19,7 +19,7 @@ module Vedeu
19
19
  # @param content [Array<void>]
20
20
  # @return [String]
21
21
  def cache(content, compression = false)
22
- write(content, compression) unless empty?(content) || cached?(content)
22
+ write(content) unless empty?(content) || cached?(content)
23
23
 
24
24
  compression ? read(:compress) : read(:uncompress)
25
25
  end
@@ -29,7 +29,19 @@ module Vedeu
29
29
  # @param content [Array<void>]
30
30
  # @return [Boolean]
31
31
  def cached?(content)
32
- content.size == read(:original).size && content == read(:original)
32
+ size?(content) && same?(content)
33
+ end
34
+
35
+ # @param content [Array<void>]
36
+ # @return [Boolean]
37
+ def size?(content)
38
+ content.size == read(:original).size
39
+ end
40
+
41
+ # @param content [Array<void>]
42
+ # @return [Boolean]
43
+ def same?(content)
44
+ content == read(:original)
33
45
  end
34
46
 
35
47
  # @param content [Array<void>]
@@ -66,9 +78,8 @@ module Vedeu
66
78
  end
67
79
 
68
80
  # @param content [Array<void>]
69
- # @param compression [Boolean]
70
81
  # @return [Hash<Symbol => Array<void>>]
71
- def write(content, compression = false)
82
+ def write(content)
72
83
  storage[:original] = content
73
84
 
74
85
  storage[:uncompress] = uncompress(content)
@@ -19,11 +19,11 @@ module Vedeu
19
19
 
20
20
  # Refresh all registered interfaces.
21
21
  #
22
- # @return [Array<Vedeu::Interfaces::Interface>]
22
+ # @return [Array<String|Symbol>]
23
23
  def all
24
24
  Vedeu.timer('Refreshing all') do
25
- Vedeu.interfaces.zindexed.each do |interface|
26
- Vedeu.trigger(:_refresh_view_, interface.name)
25
+ Vedeu.interfaces.zindexed.each do |name|
26
+ Vedeu.trigger(:_refresh_view_, name)
27
27
  end
28
28
  end
29
29
  end
@@ -100,19 +100,19 @@ module Vedeu
100
100
  # @return [Vedeu::Cursors::Cursor]
101
101
  # @see Vedeu::Cursors::Repository#by_name
102
102
  def cursor
103
- @cursor ||= Vedeu.cursors.by_name(name)
103
+ Vedeu.cursors.by_name(name)
104
104
  end
105
105
 
106
106
  # Returns the geometry for the interface.
107
107
  #
108
108
  # @return (see Vedeu::Geometries::Repository#by_name)
109
109
  def geometry
110
- @geometry ||= Vedeu.geometries.by_name(name)
110
+ Vedeu.geometries.by_name(name)
111
111
  end
112
112
 
113
113
  # @return [Fixnum]
114
114
  def left
115
- @left ||= content_offset(ox, bordered_width)
115
+ content_offset(ox, bordered_width)
116
116
  end
117
117
 
118
118
  # @return [Array<Array<Vedeu::Cells::Char>>]
@@ -161,7 +161,7 @@ module Vedeu
161
161
 
162
162
  # @return [Fixnum]
163
163
  def top
164
- @top ||= content_offset(oy, bordered_height)
164
+ content_offset(oy, bordered_height)
165
165
  end
166
166
 
167
167
  end # Viewport
@@ -25,7 +25,7 @@ module Vedeu
25
25
 
26
26
  # Returns a new instance of Vedeu::Plugin.
27
27
  #
28
- # @param name [String] The plugin name.
28
+ # @macro param_name
29
29
  # @param gem [Gem::Specification] The RubyGems gem.
30
30
  # @return [Vedeu::Plugin]
31
31
  def initialize(name, gem)
@@ -22,7 +22,7 @@ module Vedeu
22
22
 
23
23
  # Register plugin with name in an internal array.
24
24
  #
25
- # @param name [String]
25
+ # @macro param_name
26
26
  # @param plugin [Vedeu::Plugin]
27
27
  # @return [Array<void>]
28
28
  def register(name, plugin = false)
@@ -70,7 +70,7 @@ module Vedeu
70
70
 
71
71
  # Returns a boolean indicating whether a plugin is already loaded.
72
72
  #
73
- # @param name [String]
73
+ # @macro param_name
74
74
  # @return [Boolean]
75
75
  def not_loaded?(name)
76
76
  plugins.empty? || plugins.any? { |plugin| plugin.gem_name != name }
@@ -30,7 +30,7 @@ module Vedeu
30
30
 
31
31
  # @param collection [Array|Vedeu::Repositories::Collection]
32
32
  # @param parent [void]
33
- # @param name [String|Symbol|NilClass]
33
+ # @macro param_name
34
34
  # @return [Vedeu::Repositories::Collection]
35
35
  def self.coerce(collection = [], parent = nil, name = nil)
36
36
  if collection.is_a?(Vedeu::Repositories::Collection)
@@ -46,7 +46,7 @@ module Vedeu
46
46
  #
47
47
  # @param collection [void]
48
48
  # @param parent [void]
49
- # @param name [String|Symbol|NilClass]
49
+ # @macro param_name
50
50
  # @return [Vedeu::Repositories::Collection]
51
51
  def initialize(collection = [], parent = nil, name = nil)
52
52
  @collection = collection
@@ -62,7 +62,7 @@ module Vedeu
62
62
  # # Fetch the names of the interfaces belonging to this group.
63
63
  # Vedeu.groups.by_name(name)
64
64
  #
65
- # @param name [String|Symbol] The name of the stored model.
65
+ # @macro param_name
66
66
  # @return [void]
67
67
  def by_name(name = nil)
68
68
  name = present?(name) ? name : Vedeu.focus
@@ -81,7 +81,7 @@ module Vedeu
81
81
 
82
82
  # Find the model by name.
83
83
  #
84
- # @param name [String|Symbol]
84
+ # @macro param_name
85
85
  # @return [Hash<String => Object>|NilClass]
86
86
  def find(name)
87
87
  storage[name]
@@ -90,7 +90,7 @@ module Vedeu
90
90
  # Find the model attributes by name, raises an exception when
91
91
  # the model cannot be found.
92
92
  #
93
- # @param name [String|Symbol]
93
+ # @macro param_name
94
94
  # @raise [Vedeu::Error::ModelNotFound] When the model cannot be
95
95
  # found with this name.
96
96
  # @return [Hash<String => Object>]
@@ -102,7 +102,7 @@ module Vedeu
102
102
  # Find a model by name, registers the model by name when not
103
103
  # found.
104
104
  #
105
- # @param name [String|Symbol]
105
+ # @macro param_name
106
106
  # @return [void]
107
107
  def find_or_create(name)
108
108
  return find(name) if registered?(name)
@@ -122,7 +122,7 @@ module Vedeu
122
122
  # Returns a boolean indicating whether the named model is
123
123
  # registered.
124
124
  #
125
- # @param name [String|Symbol]
125
+ # @macro param_name
126
126
  # @return [Boolean]
127
127
  def registered?(name)
128
128
  return false if absent?(name)
@@ -134,7 +134,7 @@ module Vedeu
134
134
  # Returns the storage with the named model removed, or false
135
135
  # when the model does not exist.
136
136
  #
137
- # @param name [String|Symbol]
137
+ # @macro param_name
138
138
  # @return [Hash|Boolean]
139
139
  def remove(name)
140
140
  return false if empty?
@@ -33,7 +33,7 @@ module Vedeu
33
33
  # Returns a boolean indicating whether the named model is
34
34
  # registered.
35
35
  #
36
- # @param name [String|Symbol]
36
+ # @macro param_name
37
37
  # @return [Boolean]
38
38
  def exists?(name)
39
39
  return false if empty? || absent?(name)
@@ -73,12 +73,12 @@ module Vedeu
73
73
  elements[0...-1].join(', ')
74
74
  end
75
75
 
76
- # @return [void]
76
+ # @return [Object]
77
77
  def first
78
78
  elements.first
79
79
  end
80
80
 
81
- # @return [void]
81
+ # @return [Object]
82
82
  def last
83
83
  elements[-1]
84
84
  end
@@ -3,6 +3,6 @@
3
3
  module Vedeu
4
4
 
5
5
  # The current version of Vedeu.
6
- VERSION = '0.8.15'
6
+ VERSION = '0.8.16'
7
7
 
8
8
  end
@@ -16,7 +16,7 @@ module Vedeu
16
16
 
17
17
  # @param collection [void]
18
18
  # @param parent [Vedeu::Views::Stream]
19
- # @param name [NilClass|Symbol|String]
19
+ # @macro param_name
20
20
  # @macro raise_invalid_syntax
21
21
  # @return [Vedeu::Views::Chars]
22
22
  def coerce(collection = [], parent = nil, name = nil)
@@ -49,6 +49,12 @@ module Vedeu
49
49
  it { subject.must_be_instance_of(Array) }
50
50
  end
51
51
 
52
+ describe '.included' do
53
+ subject { described.included(included_described) }
54
+
55
+ it { subject.must_be_instance_of(Class) }
56
+ end
57
+
52
58
  end # Controller
53
59
 
54
60
  end # Vedeu
@@ -69,7 +69,9 @@ module Vedeu
69
69
  end
70
70
 
71
71
  describe '#coerce' do
72
- it { instance.must_respond_to(:coerce) }
72
+ subject { instance.coerce }
73
+
74
+ it { subject.must_be_instance_of(klass) }
73
75
  end
74
76
 
75
77
  end # Colour
@@ -25,6 +25,8 @@ module Vedeu
25
25
  describe '#coerce' do
26
26
  subject { instance.coerce }
27
27
 
28
+ it { subject.must_be_instance_of(klass) }
29
+
28
30
  context 'when the value is already the target class' do
29
31
  let(:_value) { klass.new }
30
32
 
@@ -31,6 +31,10 @@ module Vedeu
31
31
  it { subject.must_be_instance_of(klass) }
32
32
  it { subject.must_equal(_value) }
33
33
  end
34
+
35
+ context 'when the value is not already the target class' do
36
+ it { proc { subject }.must_raise(Vedeu::Error::Fatal) }
37
+ end
34
38
  end
35
39
 
36
40
  end # Lines
@@ -4,14 +4,27 @@ require 'test_helper'
4
4
 
5
5
  module Vedeu
6
6
 
7
+ class DSLBorderTestClass
8
+
9
+ include Vedeu::DSL::Border
10
+
11
+ end # DSLBorderTestClass
12
+
7
13
  module DSL
8
14
 
9
15
  describe Border do
10
16
 
11
17
  let(:described) { Vedeu::DSL::Border }
18
+ let(:included_described) { Vedeu::DSLBorderTestClass }
12
19
  let(:instance) { Class.include(described).new }
13
20
  let(:_name) { :vedeu_dsl_border }
14
21
 
22
+ describe '.included' do
23
+ subject { described.included(included_described) }
24
+
25
+ it { subject.must_be_instance_of(Class) }
26
+ end
27
+
15
28
  describe '#border' do
16
29
  subject { instance.border(_name) {} }
17
30
 
@@ -4,10 +4,19 @@ require 'test_helper'
4
4
 
5
5
  module Vedeu
6
6
 
7
+ class DSLGeometryTestClass
8
+
9
+ include Vedeu::DSL::Geometry
10
+
11
+ end # DSLGeometryTestClass
12
+
7
13
  module DSL
8
14
 
9
15
  describe Geometry do
10
16
 
17
+ let(:described) { Vedeu::DSL::Geometry }
18
+ let(:included_described) { Vedeu::DSLGeometryTestClass }
19
+
11
20
  # describe '#geometry' do
12
21
  # context 'when the required block is not given' do
13
22
  # subject { instance.geometry }
@@ -30,6 +39,12 @@ module Vedeu
30
39
  # end
31
40
  # end
32
41
 
42
+ describe '.included' do
43
+ subject { described.included(included_described) }
44
+
45
+ it { subject.must_be_instance_of(Class) }
46
+ end
47
+
33
48
  end # Geometry
34
49
 
35
50
  end # DSL
@@ -30,7 +30,7 @@ module Vedeu
30
30
 
31
31
  subject { Vedeu.interfaces.zindexed }
32
32
 
33
- it { subject.must_equal([@lithium, @hydrogen, @helium]) }
33
+ it { subject.must_equal(['lithium', 'hydrogen', 'helium']) }
34
34
  end
35
35
 
36
36
  end # Repository
@@ -99,6 +99,12 @@ module Vedeu
99
99
  end
100
100
  end
101
101
 
102
+ describe '.included' do
103
+ subject { described.included(included_described) }
104
+
105
+ it { subject.must_be_instance_of(Class) }
106
+ end
107
+
102
108
  describe '.show_cursor' do
103
109
  subject { included_described.show_cursor }
104
110
 
@@ -14,6 +14,7 @@ module Vedeu
14
14
 
15
15
  let(:described) { Vedeu::Output::Refresh }
16
16
  let(:instance) { described.new }
17
+ let(:_name) { :vedeu_output_refresh }
17
18
 
18
19
  describe '.all' do
19
20
  before { Vedeu.stubs(:trigger) }
@@ -30,19 +31,18 @@ module Vedeu
30
31
 
31
32
  context 'when there are registered interfaces' do
32
33
  let(:interface) {
33
- Vedeu::Interfaces::Interface.new(name: 'Vedeu::Output::Refresh')
34
+ Vedeu::Interfaces::Interface.new(name: _name)
34
35
  }
35
- let(:interfaces) { [interface] }
36
+ let(:names) { [_name] }
36
37
 
37
- before { Vedeu.interfaces.stubs(:zindexed).returns(interfaces) }
38
+ before { Vedeu.interfaces.stubs(:zindexed).returns(names) }
38
39
 
39
40
  it do
40
- Vedeu.expects(:trigger).with(:_refresh_view_,
41
- 'Vedeu::Output::Refresh')
41
+ Vedeu.expects(:trigger).with(:_refresh_view_, _name)
42
42
  subject
43
43
  end
44
44
 
45
- it { subject.must_equal([interface]) }
45
+ it { subject.must_equal(names) }
46
46
  end
47
47
  end
48
48
 
@@ -34,6 +34,12 @@ module Vedeu
34
34
  # it { skip }
35
35
  end
36
36
 
37
+ describe '.included' do
38
+ subject { described.included(included_described) }
39
+
40
+ it { subject.must_be_instance_of(Class) }
41
+ end
42
+
37
43
  describe '.repository' do
38
44
  let(:klass) {}
39
45
 
@@ -23,6 +23,12 @@ module Vedeu
23
23
  it { included_described.must_respond_to(:repository) }
24
24
  it { included_described.must_respond_to(:register) }
25
25
 
26
+ describe '.included' do
27
+ subject { described.included(included_described) }
28
+
29
+ it { subject.must_be_instance_of(Class) }
30
+ end
31
+
26
32
  describe '.null' do
27
33
  subject { included_described.new }
28
34
 
@@ -30,6 +30,12 @@ module Vedeu
30
30
  it { included_described.must_respond_to(:entity) }
31
31
  end
32
32
 
33
+ describe '.included' do
34
+ subject { described.included(included_described) }
35
+
36
+ it { subject.must_be_instance_of(Class) }
37
+ end
38
+
33
39
  describe '.parent' do
34
40
  it { included_described.must_respond_to(:parent) }
35
41
  end
@@ -27,7 +27,7 @@ class HelloWorldApp
27
27
  background '#000000'
28
28
  foreground '#00ff00'
29
29
  geometry do
30
- align(:middle, :centre, 20, 5)
30
+ align vertical: :middle, horizontal: :centre, width: 20, height: 5
31
31
  end
32
32
  keymap do
33
33
  key('q') { Vedeu.exit }