vedeu 0.6.61 → 0.6.62
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/benchmarks/array_vs_range.rb +1 -1
- data/docs/events/drb.md +2 -2
- data/docs/events/visibility.md +1 -1
- data/lib/vedeu/buffers/all.rb +1 -0
- data/lib/vedeu/buffers/empty.rb +2 -2
- data/lib/vedeu/{terminal/buffer.rb → buffers/terminal.rb} +12 -16
- data/lib/vedeu/cursors/cursor.rb +4 -8
- data/lib/vedeu/cursors/refresh.rb +5 -0
- data/lib/vedeu/editor/all.rb +1 -0
- data/lib/vedeu/editor/collection.rb +26 -0
- data/lib/vedeu/editor/document.rb +0 -8
- data/lib/vedeu/editor/line.rb +17 -47
- data/lib/vedeu/editor/lines.rb +22 -51
- data/lib/vedeu/geometries/geometry.rb +0 -6
- data/lib/vedeu/groups/group.rb +0 -6
- data/lib/vedeu/input/capture.rb +1 -1
- data/lib/vedeu/interfaces/clear.rb +1 -1
- data/lib/vedeu/logging/log.rb +5 -2
- data/lib/vedeu/models/focus.rb +4 -13
- data/lib/vedeu/output/compressor.rb +8 -4
- data/lib/vedeu/output/output.rb +3 -3
- data/lib/vedeu/output/renderers/all.rb +2 -2
- data/lib/vedeu/output/renderers/html.rb +1 -1
- data/lib/vedeu/output/renderers/json.rb +1 -1
- data/lib/vedeu/repositories/all.rb +1 -0
- data/lib/vedeu/repositories/assemblage.rb +57 -0
- data/lib/vedeu/repositories/collection.rb +1 -40
- data/lib/vedeu/repositories/model.rb +17 -0
- data/lib/vedeu/runtime/launcher.rb +5 -8
- data/lib/vedeu/terminal/all.rb +0 -1
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/{terminal/buffer_test.rb → buffers/terminal_test.rb} +24 -50
- data/test/lib/vedeu/cursors/cursor_test.rb +0 -6
- data/test/lib/vedeu/editor/collection_test.rb +38 -0
- data/test/lib/vedeu/editor/document_test.rb +0 -16
- data/test/lib/vedeu/editor/line_test.rb +17 -75
- data/test/lib/vedeu/editor/lines_test.rb +21 -88
- data/test/lib/vedeu/geometries/geometry_test.rb +0 -6
- data/test/lib/vedeu/groups/group_test.rb +0 -6
- data/test/lib/vedeu/input/mouse_test.rb +1 -1
- data/test/lib/vedeu/logging/log_test.rb +3 -3
- data/test/lib/vedeu/models/focus_test.rb +62 -56
- data/test/lib/vedeu/output/output_test.rb +2 -2
- data/test/lib/vedeu/output/renderers/html_test.rb +2 -2
- data/test/lib/vedeu/output/renderers/json_test.rb +1 -1
- data/test/lib/vedeu/repositories/assemblage_test.rb +96 -0
- data/test/lib/vedeu/repositories/collection_test.rb +0 -54
- data/test/lib/vedeu/repositories/model_test.rb +15 -0
- data/vedeu.gemspec +1 -1
- metadata +13 -7
@@ -0,0 +1,57 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Repositories
|
4
|
+
|
5
|
+
# Provides collection related query/command methods.
|
6
|
+
#
|
7
|
+
# @api private
|
8
|
+
#
|
9
|
+
module Assemblage
|
10
|
+
|
11
|
+
include Enumerable
|
12
|
+
|
13
|
+
# Return an individual element or collection of elements (if
|
14
|
+
# the given index is a Range).
|
15
|
+
#
|
16
|
+
# @param index [Fixnum|Range]
|
17
|
+
# @return [void]
|
18
|
+
def [](index)
|
19
|
+
collection[index]
|
20
|
+
end
|
21
|
+
|
22
|
+
# Provides iteration over the collection.
|
23
|
+
#
|
24
|
+
# @param block [Proc]
|
25
|
+
# @return [Enumerator]
|
26
|
+
def each(&block)
|
27
|
+
collection.each(&block)
|
28
|
+
end
|
29
|
+
|
30
|
+
# Returns a boolean indicating whether the collection is empty.
|
31
|
+
#
|
32
|
+
# @return [Boolean]
|
33
|
+
def empty?
|
34
|
+
collection.empty?
|
35
|
+
end
|
36
|
+
|
37
|
+
# An object is equal when its values are the same.
|
38
|
+
#
|
39
|
+
# @param other [void]
|
40
|
+
# @return [Boolean]
|
41
|
+
def eql?(other)
|
42
|
+
self.class == other.class && collection == other.collection
|
43
|
+
end
|
44
|
+
alias_method :==, :eql?
|
45
|
+
|
46
|
+
# Return the size of the collection.
|
47
|
+
#
|
48
|
+
# @return [Fixnum]
|
49
|
+
def size
|
50
|
+
collection.size
|
51
|
+
end
|
52
|
+
|
53
|
+
end # Collection
|
54
|
+
|
55
|
+
end # Repositories
|
56
|
+
|
57
|
+
end # Vedeu
|
@@ -9,7 +9,7 @@ module Vedeu
|
|
9
9
|
#
|
10
10
|
class Collection
|
11
11
|
|
12
|
-
include
|
12
|
+
include Vedeu::Repositories::Assemblage
|
13
13
|
|
14
14
|
# @!attribute [r] collection
|
15
15
|
# @return [Array|Vedeu::Repositories::Collection]
|
@@ -50,14 +50,6 @@ module Vedeu
|
|
50
50
|
@name = name
|
51
51
|
end
|
52
52
|
|
53
|
-
# Fetch an entry from the collection via index.
|
54
|
-
#
|
55
|
-
# @param value [Fixnum]
|
56
|
-
# @return [void]
|
57
|
-
def [](value)
|
58
|
-
collection[value]
|
59
|
-
end
|
60
|
-
|
61
53
|
# Adds an entry to the collection.
|
62
54
|
#
|
63
55
|
# @param other [Vedeu::Repositories::Collection]
|
@@ -73,37 +65,6 @@ module Vedeu
|
|
73
65
|
end
|
74
66
|
alias_method :<<, :add
|
75
67
|
|
76
|
-
# Provides iteration over the collection.
|
77
|
-
#
|
78
|
-
# @param block [Proc]
|
79
|
-
# @return [Enumerator]
|
80
|
-
def each(&block)
|
81
|
-
collection.each(&block)
|
82
|
-
end
|
83
|
-
|
84
|
-
# Returns a boolean indicating whether the collection is empty.
|
85
|
-
#
|
86
|
-
# @return [Boolean]
|
87
|
-
def empty?
|
88
|
-
collection.empty?
|
89
|
-
end
|
90
|
-
|
91
|
-
# An object is equal when its values are the same.
|
92
|
-
#
|
93
|
-
# @param other [Vedeu::Repositories::Collection]
|
94
|
-
# @return [Boolean]
|
95
|
-
def eql?(other)
|
96
|
-
self.class == other.class && collection == other.collection
|
97
|
-
end
|
98
|
-
alias_method :==, :eql?
|
99
|
-
|
100
|
-
# Returns the size of the collection.
|
101
|
-
#
|
102
|
-
# @return [Fixnum]
|
103
|
-
def size
|
104
|
-
collection.size
|
105
|
-
end
|
106
|
-
|
107
68
|
# Returns the collection as a String.
|
108
69
|
#
|
109
70
|
# @return [String]
|
@@ -64,6 +64,23 @@ module Vedeu
|
|
64
64
|
@repository = klass
|
65
65
|
end
|
66
66
|
|
67
|
+
# Create and store a model with the given attributes.
|
68
|
+
#
|
69
|
+
# @param attributes [Hash] A collection of attributes specific
|
70
|
+
# to the model.
|
71
|
+
# @param block [Proc] A block of code to be executing whilst
|
72
|
+
# storing.
|
73
|
+
# @return [Object] An instance of the model.
|
74
|
+
def store(attributes = {}, &block)
|
75
|
+
if block_given?
|
76
|
+
new(attributes).store(&block)
|
77
|
+
|
78
|
+
else
|
79
|
+
new(attributes).store
|
80
|
+
|
81
|
+
end
|
82
|
+
end
|
83
|
+
|
67
84
|
private
|
68
85
|
|
69
86
|
# The default values for a new instance of this class.
|
@@ -60,14 +60,16 @@ module Vedeu
|
|
60
60
|
$stdout = @stdout
|
61
61
|
$stderr = @stderr
|
62
62
|
|
63
|
-
optionally_profile
|
63
|
+
optionally_profile do
|
64
|
+
Vedeu::Runtime::Application.start(Vedeu::Configuration)
|
65
|
+
end
|
64
66
|
|
65
67
|
@exit_code = 0
|
66
68
|
|
67
69
|
terminate!
|
68
70
|
|
69
71
|
rescue StandardError => uncaught_exception
|
70
|
-
output = if
|
72
|
+
output = if Vedeu::Configuration.debug?
|
71
73
|
uncaught_exception.message + "\n" +
|
72
74
|
uncaught_exception.backtrace.join("\n".freeze)
|
73
75
|
else
|
@@ -88,7 +90,7 @@ module Vedeu
|
|
88
90
|
|
89
91
|
# @return [void]
|
90
92
|
def optionally_profile
|
91
|
-
if
|
93
|
+
if Vedeu::Configuration.profile?
|
92
94
|
Vedeu.profile { yield }
|
93
95
|
|
94
96
|
else
|
@@ -113,11 +115,6 @@ module Vedeu
|
|
113
115
|
end
|
114
116
|
# :nocov:
|
115
117
|
|
116
|
-
# @return [Vedeu::Configuration]
|
117
|
-
def configuration
|
118
|
-
Vedeu::Configuration
|
119
|
-
end
|
120
|
-
|
121
118
|
end # Launcher
|
122
119
|
|
123
120
|
end # Vedeu
|
data/lib/vedeu/terminal/all.rb
CHANGED
data/lib/vedeu/version.rb
CHANGED
@@ -8,71 +8,45 @@ module Vedeu
|
|
8
8
|
it { Vedeu.bound?(:_drb_store_output_).must_equal(true) }
|
9
9
|
end
|
10
10
|
|
11
|
-
module
|
11
|
+
module Buffers
|
12
12
|
|
13
|
-
describe
|
13
|
+
describe Terminal do
|
14
14
|
|
15
|
-
let(:described) { Vedeu::Terminal
|
15
|
+
let(:described) { Vedeu::Buffers::Terminal }
|
16
16
|
let(:height) { 2 }
|
17
17
|
let(:width) { 3 }
|
18
18
|
|
19
19
|
before do
|
20
|
-
Vedeu.stubs(:ready?).returns(true)
|
21
20
|
Vedeu.stubs(:height).returns(height)
|
22
21
|
Vedeu.stubs(:width).returns(width)
|
23
|
-
Vedeu::Terminal
|
22
|
+
Vedeu::Buffers::Terminal.reset!
|
24
23
|
end
|
25
24
|
|
26
25
|
describe '#clear' do
|
27
|
-
let(:ready) { false }
|
28
|
-
|
29
|
-
before do
|
30
|
-
Vedeu.stubs(:ready?).returns(ready)
|
31
|
-
Vedeu.renderers.stubs(:clear)
|
32
|
-
end
|
33
|
-
|
34
26
|
subject { described.clear }
|
35
27
|
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
Vedeu.renderers.expects(:clear)
|
41
|
-
subject
|
42
|
-
}
|
43
|
-
end
|
44
|
-
|
45
|
-
context 'when Vedeu is not ready' do
|
46
|
-
# @todo Add more tests.
|
47
|
-
end
|
28
|
+
it {
|
29
|
+
Vedeu.renderers.expects(:clear)
|
30
|
+
subject
|
31
|
+
}
|
48
32
|
end
|
49
33
|
|
50
34
|
describe '#output' do
|
51
|
-
|
35
|
+
subject { described.output }
|
36
|
+
|
37
|
+
it {
|
38
|
+
Vedeu::Models::Page.expects(:coerce)
|
39
|
+
subject
|
40
|
+
}
|
52
41
|
end
|
53
42
|
|
54
43
|
describe '#refresh' do
|
55
|
-
let(:ready) { false }
|
56
|
-
|
57
|
-
before do
|
58
|
-
Vedeu.stubs(:ready?).returns(ready)
|
59
|
-
Vedeu.renderers.stubs(:render)
|
60
|
-
end
|
61
|
-
|
62
44
|
subject { described.refresh }
|
63
45
|
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
context 'when Vedeu is ready' do
|
69
|
-
let(:ready) { true }
|
70
|
-
|
71
|
-
it {
|
72
|
-
Vedeu.renderers.expects(:render)
|
73
|
-
subject
|
74
|
-
}
|
75
|
-
end
|
46
|
+
it {
|
47
|
+
Vedeu.renderers.expects(:render)
|
48
|
+
subject
|
49
|
+
}
|
76
50
|
end
|
77
51
|
|
78
52
|
describe '#reset!' do
|
@@ -81,18 +55,20 @@ module Vedeu
|
|
81
55
|
it { subject.must_be_instance_of(Vedeu::Buffers::View) }
|
82
56
|
end
|
83
57
|
|
84
|
-
describe '#
|
58
|
+
describe '#update' do
|
85
59
|
let(:_value) {}
|
86
60
|
|
87
|
-
subject { described.
|
61
|
+
subject { described.update(_value) }
|
88
62
|
|
89
63
|
# @todo Add more tests.
|
90
64
|
end
|
91
65
|
|
92
|
-
describe '#
|
66
|
+
describe '#write' do
|
93
67
|
let(:_value) {}
|
94
68
|
|
95
|
-
|
69
|
+
before { Vedeu.renderers.stubs(:render) }
|
70
|
+
|
71
|
+
subject { described.write(_value) }
|
96
72
|
|
97
73
|
# @todo Add more tests.
|
98
74
|
end
|
@@ -101,6 +77,4 @@ module Vedeu
|
|
101
77
|
|
102
78
|
end # Terminal
|
103
79
|
|
104
|
-
|
105
|
-
|
106
80
|
end # Vedeu
|
@@ -0,0 +1,38 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
module Editor
|
6
|
+
|
7
|
+
class CollectionTestClass
|
8
|
+
|
9
|
+
include Enumerable
|
10
|
+
include Vedeu::Editor::Collection
|
11
|
+
|
12
|
+
attr_accessor :collection
|
13
|
+
|
14
|
+
def initialize(collection)
|
15
|
+
@collection = collection
|
16
|
+
end
|
17
|
+
|
18
|
+
end # CollectionTestClass
|
19
|
+
|
20
|
+
describe Collection do
|
21
|
+
|
22
|
+
let(:described) { Vedeu::Editor::Collection }
|
23
|
+
let(:instance) { Vedeu::Editor::CollectionTestClass.new(collection) }
|
24
|
+
let(:collection) { 'Some text...'.chars }
|
25
|
+
|
26
|
+
describe '#by_index' do
|
27
|
+
let(:index) { 0 }
|
28
|
+
|
29
|
+
subject { instance.by_index(index) }
|
30
|
+
|
31
|
+
it { subject.must_be_instance_of(String) }
|
32
|
+
end
|
33
|
+
|
34
|
+
end # Collection
|
35
|
+
|
36
|
+
end # Editor
|
37
|
+
|
38
|
+
end # Vedeu
|
@@ -49,22 +49,6 @@ module Vedeu
|
|
49
49
|
}
|
50
50
|
end
|
51
51
|
|
52
|
-
describe '.store' do
|
53
|
-
before { Vedeu.documents.reset! }
|
54
|
-
|
55
|
-
subject { described.store(attributes) }
|
56
|
-
|
57
|
-
it { subject.must_be_instance_of(described) }
|
58
|
-
|
59
|
-
it 'registers the instance with the repository' do
|
60
|
-
Vedeu.documents.registered?(_name).must_equal(false)
|
61
|
-
|
62
|
-
subject
|
63
|
-
|
64
|
-
Vedeu.documents.registered?(_name).must_equal(true)
|
65
|
-
end
|
66
|
-
end
|
67
|
-
|
68
52
|
describe 'accessors' do
|
69
53
|
it {
|
70
54
|
instance.must_respond_to(:attributes)
|
@@ -6,24 +6,24 @@ module Vedeu
|
|
6
6
|
|
7
7
|
describe Line do
|
8
8
|
|
9
|
-
let(:described)
|
10
|
-
let(:instance)
|
11
|
-
let(:
|
9
|
+
let(:described) { Vedeu::Editor::Line }
|
10
|
+
let(:instance) { described.new(collection) }
|
11
|
+
let(:collection) { 'Some text...' }
|
12
12
|
|
13
13
|
describe '#initialize' do
|
14
14
|
it { instance.must_be_instance_of(described) }
|
15
|
-
it { instance.instance_variable_get('@
|
15
|
+
it { instance.instance_variable_get('@collection').must_equal(collection) }
|
16
16
|
|
17
17
|
context 'when a line is not given' do
|
18
|
-
let(:
|
18
|
+
let(:collection) {}
|
19
19
|
|
20
|
-
it { instance.instance_variable_get('@
|
20
|
+
it { instance.instance_variable_get('@collection').must_equal('') }
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
24
|
describe 'accessors' do
|
25
|
-
it { instance.must_respond_to(:
|
26
|
-
it { instance.must_respond_to(:
|
25
|
+
it { instance.must_respond_to(:collection) }
|
26
|
+
it { instance.must_respond_to(:collection=) }
|
27
27
|
end
|
28
28
|
|
29
29
|
describe '.coerce' do
|
@@ -34,38 +34,22 @@ module Vedeu
|
|
34
34
|
it { subject.must_be_instance_of(Vedeu::Editor::Line) }
|
35
35
|
|
36
36
|
context 'when the value is already a Vedeu::Editor::Line object' do
|
37
|
-
let(:_value) { Vedeu::Editor::Line.new(
|
37
|
+
let(:_value) { Vedeu::Editor::Line.new(collection) }
|
38
38
|
|
39
39
|
it { subject.must_equal(_value) }
|
40
|
-
it { subject.
|
40
|
+
it { subject.collection.must_equal(collection) }
|
41
41
|
end
|
42
42
|
|
43
43
|
context 'when the value is an empty String' do
|
44
44
|
let(:_value) { '' }
|
45
45
|
|
46
|
-
it { subject.
|
46
|
+
it { subject.collection.must_equal('') }
|
47
47
|
end
|
48
48
|
|
49
49
|
context 'when the value is an String' do
|
50
|
-
let(:_value) {
|
51
|
-
|
52
|
-
it { subject.line.must_equal(line) }
|
53
|
-
end
|
54
|
-
end
|
55
|
-
|
56
|
-
describe '#[]' do
|
57
|
-
subject { instance.[](index) }
|
58
|
-
|
59
|
-
context 'when index is a Fixnum' do
|
60
|
-
let(:index) { 2 }
|
61
|
-
|
62
|
-
it { subject.must_equal('m') }
|
63
|
-
end
|
64
|
-
|
65
|
-
context 'when index is a Range' do
|
66
|
-
let(:index) { (3..6) }
|
50
|
+
let(:_value) { collection }
|
67
51
|
|
68
|
-
it { subject.must_equal(
|
52
|
+
it { subject.collection.must_equal(collection) }
|
69
53
|
end
|
70
54
|
end
|
71
55
|
|
@@ -77,7 +61,7 @@ module Vedeu
|
|
77
61
|
it { subject.must_be_instance_of(String) }
|
78
62
|
|
79
63
|
context 'when the line is empty' do
|
80
|
-
let(:
|
64
|
+
let(:collection) { '' }
|
81
65
|
|
82
66
|
context 'and an index is not given' do
|
83
67
|
let(:index) {}
|
@@ -125,7 +109,7 @@ module Vedeu
|
|
125
109
|
it { subject.must_be_instance_of(Vedeu::Editor::Line) }
|
126
110
|
|
127
111
|
context 'when the line is empty' do
|
128
|
-
let(:
|
112
|
+
let(:collection) { '' }
|
129
113
|
|
130
114
|
it { subject.line.must_equal('') }
|
131
115
|
|
@@ -167,34 +151,6 @@ module Vedeu
|
|
167
151
|
end
|
168
152
|
end
|
169
153
|
|
170
|
-
describe '#empty?' do
|
171
|
-
subject { instance.empty? }
|
172
|
-
|
173
|
-
context 'when the line is empty' do
|
174
|
-
let(:line) {}
|
175
|
-
|
176
|
-
it { subject.must_equal(true) }
|
177
|
-
end
|
178
|
-
|
179
|
-
context 'when the line is not empty' do
|
180
|
-
it { subject.must_equal(false) }
|
181
|
-
end
|
182
|
-
end
|
183
|
-
|
184
|
-
describe '#eql?' do
|
185
|
-
let(:other) { instance }
|
186
|
-
|
187
|
-
subject { instance.eql?(other) }
|
188
|
-
|
189
|
-
it { subject.must_equal(true) }
|
190
|
-
|
191
|
-
context 'when different to other' do
|
192
|
-
let(:other) { described.new('Other text...') }
|
193
|
-
|
194
|
-
it { subject.must_equal(false) }
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
154
|
describe '#insert_character' do
|
199
155
|
let(:character) { 'a' }
|
200
156
|
let(:index) { 5 }
|
@@ -204,7 +160,7 @@ module Vedeu
|
|
204
160
|
it { subject.must_be_instance_of(Vedeu::Editor::Line) }
|
205
161
|
|
206
162
|
context 'when the line is empty' do
|
207
|
-
let(:
|
163
|
+
let(:collection) {}
|
208
164
|
|
209
165
|
it { subject.line.must_equal('a') }
|
210
166
|
|
@@ -268,25 +224,11 @@ module Vedeu
|
|
268
224
|
end
|
269
225
|
end
|
270
226
|
|
271
|
-
describe '#size' do
|
272
|
-
subject { instance.size }
|
273
|
-
|
274
|
-
context 'when the line is empty' do
|
275
|
-
let(:line) {}
|
276
|
-
|
277
|
-
it { subject.must_equal(0) }
|
278
|
-
end
|
279
|
-
|
280
|
-
context 'when the line is not empty' do
|
281
|
-
it { subject.must_equal(12) }
|
282
|
-
end
|
283
|
-
end
|
284
|
-
|
285
227
|
describe '#to_s' do
|
286
228
|
subject { instance.to_s }
|
287
229
|
|
288
230
|
context 'when the line is empty' do
|
289
|
-
let(:
|
231
|
+
let(:collection) {}
|
290
232
|
|
291
233
|
it { subject.must_equal('') }
|
292
234
|
end
|