vedeu 0.6.31 → 0.6.32
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/examples/hello_worlds.rb +1 -1
- data/lib/vedeu/buffers/buffer.rb +5 -2
- data/lib/vedeu/buffers/repository.rb +1 -1
- data/lib/vedeu/dsl/composition.rb +1 -1
- data/lib/vedeu/menus/dsl.rb +45 -0
- data/lib/vedeu/menus/menu.rb +2 -31
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/buffers/buffer_test.rb +37 -0
- data/test/lib/vedeu/dsl/shared_test.rb +20 -0
- data/test/lib/vedeu/dsl/view_test.rb +1 -1
- data/test/lib/vedeu/editor/cropper_test.rb +38 -44
- data/test/lib/vedeu/error_test.rb +27 -0
- data/test/lib/vedeu/groups/refresh_test.rb +4 -4
- data/test/lib/vedeu/interfaces/dsl_test.rb +0 -66
- data/test/lib/vedeu/menus/dsl_test.rb +16 -0
- data/test/lib/vedeu/menus/menu_test.rb +0 -16
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 2fc9f2ae69352f9b6c21d8d8607082bb988cff48
|
|
4
|
+
data.tar.gz: 9a0d1207af8e078b58cccadab420b3465e00b816
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 2a17c83991be48b4ccbee939f304a72e3e4f2401c2793782b469403ae9386020bb2e36b0afdec9b5c42471045b9262a1c9e23a6ee50c3d6812506ee638480c3e
|
|
7
|
+
data.tar.gz: c7149fbd4b90a7d5eb4e2fecabcafca828cb4805b76c86b369441f37db3b91b3e7077988c7cda7bcde08ef5f5f9ec4c9baf0afdb3c4968a8e257b0a490dda6aa
|
data/examples/hello_worlds.rb
CHANGED
|
@@ -72,7 +72,7 @@ class HelloWorldsApp
|
|
|
72
72
|
line
|
|
73
73
|
line { centre "Press 'q' to exit,", width: 24 }
|
|
74
74
|
line { centre " 'w' to switch worlds.", width: 24 }
|
|
75
|
-
line { centre "#{Vedeu.trigger(:_cursor_position_, Vedeu.focus)" }
|
|
75
|
+
line { centre "#{Vedeu.trigger(:_cursor_position_, Vedeu.focus)}" }
|
|
76
76
|
end
|
|
77
77
|
end
|
|
78
78
|
end
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
|
@@ -109,9 +109,12 @@ module Vedeu
|
|
|
109
109
|
#
|
|
110
110
|
# @return [Array<Array<Array<Vedeu::Views::Char>>>]
|
|
111
111
|
def render
|
|
112
|
-
|
|
112
|
+
if back?
|
|
113
|
+
swap
|
|
113
114
|
|
|
114
|
-
|
|
115
|
+
Vedeu::Output::Viewport.render(front)
|
|
116
|
+
|
|
117
|
+
elsif front?
|
|
115
118
|
Vedeu::Output::Viewport.render(front)
|
|
116
119
|
|
|
117
120
|
elsif previous?
|
|
@@ -127,7 +127,7 @@ module Vedeu
|
|
|
127
127
|
# @param name [String|Symbol] The name of the interface.
|
|
128
128
|
# @return [Hash]
|
|
129
129
|
def new_attributes(name)
|
|
130
|
-
|
|
130
|
+
existing_attributes(name).merge!(attributes)
|
|
131
131
|
end
|
|
132
132
|
|
|
133
133
|
# Retrieve the attributes of the interface by name.
|
data/lib/vedeu/menus/dsl.rb
CHANGED
|
@@ -9,6 +9,51 @@ module Vedeu
|
|
|
9
9
|
|
|
10
10
|
include Vedeu::DSL
|
|
11
11
|
|
|
12
|
+
class << self
|
|
13
|
+
|
|
14
|
+
# Register a menu by name which will display a collection of
|
|
15
|
+
# items for your users to select; and provide interactivity
|
|
16
|
+
# within your application.
|
|
17
|
+
#
|
|
18
|
+
# @param name [String|Symbol]
|
|
19
|
+
# @param block [Proc] A set of attributes which define the
|
|
20
|
+
# features of the menu. See {Vedeu::Menus::DSL#items} and
|
|
21
|
+
# {Vedeu::Menus::DSL#name}.
|
|
22
|
+
#
|
|
23
|
+
# @example
|
|
24
|
+
# Vedeu.menu :my_interface do
|
|
25
|
+
# items [:item_1, :item_2, :item_3]
|
|
26
|
+
# # ...
|
|
27
|
+
# end
|
|
28
|
+
#
|
|
29
|
+
# Vedeu.menu do
|
|
30
|
+
# name :menus_must_have_a_name
|
|
31
|
+
# items Track.all_my_favourites
|
|
32
|
+
# # ...
|
|
33
|
+
# end
|
|
34
|
+
#
|
|
35
|
+
# @raise [Vedeu::Error::RequiresBlock]
|
|
36
|
+
# @return [API::Menu]
|
|
37
|
+
def menu(name = '', &block)
|
|
38
|
+
fail Vedeu::Error::RequiresBlock unless block_given?
|
|
39
|
+
|
|
40
|
+
attributes = { client: client(&block), name: name }
|
|
41
|
+
|
|
42
|
+
Vedeu::Menus::Menu.build(attributes, &block).store
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
private
|
|
46
|
+
|
|
47
|
+
# Returns the client object which called the DSL method.
|
|
48
|
+
#
|
|
49
|
+
# @param block [Proc]
|
|
50
|
+
# @return [Object]
|
|
51
|
+
def client(&block)
|
|
52
|
+
eval('self', block.binding)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
end # Eigenclass
|
|
56
|
+
|
|
12
57
|
# Add an individual item to the menu.
|
|
13
58
|
#
|
|
14
59
|
# @param element [Object] An object you wish to add to the
|
data/lib/vedeu/menus/menu.rb
CHANGED
|
@@ -34,35 +34,6 @@ module Vedeu
|
|
|
34
34
|
# @return [Fixnum]
|
|
35
35
|
attr_accessor :selected
|
|
36
36
|
|
|
37
|
-
# Register a menu by name which will display a collection of
|
|
38
|
-
# items for your users to select; and provide interactivity
|
|
39
|
-
# within your application.
|
|
40
|
-
#
|
|
41
|
-
# @param name [String|Symbol]
|
|
42
|
-
# @param block [Proc] A set of attributes which define the
|
|
43
|
-
# features of the menu. See {Vedeu::Menus::DSL#items} and
|
|
44
|
-
# {Vedeu::Menus::DSL#name}.
|
|
45
|
-
#
|
|
46
|
-
# @example
|
|
47
|
-
# Vedeu.menu :my_interface do
|
|
48
|
-
# items [:item_1, :item_2, :item_3]
|
|
49
|
-
# # ...
|
|
50
|
-
# end
|
|
51
|
-
#
|
|
52
|
-
# Vedeu.menu do
|
|
53
|
-
# name :menus_must_have_a_name
|
|
54
|
-
# items Track.all_my_favourites
|
|
55
|
-
# # ...
|
|
56
|
-
# end
|
|
57
|
-
#
|
|
58
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
|
59
|
-
# @return [API::Menu]
|
|
60
|
-
def self.menu(name = '', &block)
|
|
61
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
|
62
|
-
|
|
63
|
-
build(name: name, &block).store
|
|
64
|
-
end
|
|
65
|
-
|
|
66
37
|
# Returns a new instance of Vedeu::Menus::Menu.
|
|
67
38
|
#
|
|
68
39
|
# @param attributes [Hash]
|
|
@@ -229,7 +200,7 @@ module Vedeu
|
|
|
229
200
|
end # Menus
|
|
230
201
|
|
|
231
202
|
# @!method menu
|
|
232
|
-
# @see Vedeu::Menus::
|
|
233
|
-
def_delegators Vedeu::Menus::
|
|
203
|
+
# @see Vedeu::Menus::DSL.menu
|
|
204
|
+
def_delegators Vedeu::Menus::DSL, :menu
|
|
234
205
|
|
|
235
206
|
end # Vedeu
|
data/lib/vedeu/version.rb
CHANGED
|
@@ -110,6 +110,43 @@ module Vedeu
|
|
|
110
110
|
}
|
|
111
111
|
|
|
112
112
|
subject { instance.render }
|
|
113
|
+
|
|
114
|
+
context 'when there is new content on the back buffer' do
|
|
115
|
+
let(:back) {
|
|
116
|
+
Vedeu::Views::View.new(value: [Vedeu::Views::Line.new])
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
it {
|
|
120
|
+
Vedeu::Output::Viewport.expects(:render)
|
|
121
|
+
subject
|
|
122
|
+
}
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
context 'when there is existing content on the front buffer' do
|
|
126
|
+
let(:front) {
|
|
127
|
+
Vedeu::Views::View.new(value: [Vedeu::Views::Line.new])
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
it {
|
|
131
|
+
Vedeu::Output::Viewport.expects(:render)
|
|
132
|
+
subject
|
|
133
|
+
}
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
context 'when there is content on the previous buffer' do
|
|
137
|
+
let(:previous) {
|
|
138
|
+
Vedeu::Views::View.new(value: [Vedeu::Views::Line.new])
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
it {
|
|
142
|
+
Vedeu::Output::Viewport.expects(:render)
|
|
143
|
+
subject
|
|
144
|
+
}
|
|
145
|
+
end
|
|
146
|
+
|
|
147
|
+
context 'when there is no content on any buffer' do
|
|
148
|
+
it { subject.must_equal(nil) }
|
|
149
|
+
end
|
|
113
150
|
end
|
|
114
151
|
|
|
115
152
|
end # Buffer
|
|
@@ -5,6 +5,26 @@ module Vedeu
|
|
|
5
5
|
module DSL
|
|
6
6
|
|
|
7
7
|
describe Shared do
|
|
8
|
+
|
|
9
|
+
let(:described) { Vedeu::DSL::Shared }
|
|
10
|
+
let(:instance) { Class.include(described).new }
|
|
11
|
+
|
|
12
|
+
describe '#border' do
|
|
13
|
+
context 'when the block is not given' do
|
|
14
|
+
subject { instance.border }
|
|
15
|
+
|
|
16
|
+
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
describe '#geometry' do
|
|
21
|
+
context 'when the required block is not given' do
|
|
22
|
+
subject { instance.geometry }
|
|
23
|
+
|
|
24
|
+
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
|
|
8
28
|
end # Shared
|
|
9
29
|
|
|
10
30
|
end # DSL
|
|
@@ -63,7 +63,7 @@ module Vedeu
|
|
|
63
63
|
|
|
64
64
|
it { subject.must_be_instance_of(Vedeu::Views::Lines) }
|
|
65
65
|
|
|
66
|
-
context 'when the required block is not
|
|
66
|
+
context 'when the required block is not given' do
|
|
67
67
|
subject { instance.lines }
|
|
68
68
|
|
|
69
69
|
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
@@ -47,8 +47,6 @@ module Vedeu
|
|
|
47
47
|
subject { instance.to_a }
|
|
48
48
|
|
|
49
49
|
context 'when there are no lines' do
|
|
50
|
-
let(:lines) { Vedeu::Editor::Lines.new }
|
|
51
|
-
|
|
52
50
|
it { subject.must_equal([]) }
|
|
53
51
|
end
|
|
54
52
|
|
|
@@ -67,51 +65,47 @@ module Vedeu
|
|
|
67
65
|
end
|
|
68
66
|
end
|
|
69
67
|
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
# context 'when there are no lines' do
|
|
74
|
-
# let(:lines) { Vedeu::Editor::Lines.new }
|
|
75
|
-
|
|
76
|
-
# it { subject.must_equal([]) }
|
|
77
|
-
# end
|
|
78
|
-
|
|
79
|
-
# context 'when there are lines' do
|
|
80
|
-
# let(:lines) {
|
|
81
|
-
# Vedeu::Editor::Lines.new([
|
|
82
|
-
# Vedeu::Editor::Line.new('Hydrogen'),
|
|
83
|
-
# Vedeu::Editor::Line.new('Helium'),
|
|
84
|
-
# Vedeu::Editor::Line.new('Lithium'),
|
|
85
|
-
# Vedeu::Editor::Line.new('Beryllium'),
|
|
86
|
-
# Vedeu::Editor::Line.new('Boron'),
|
|
87
|
-
# ])
|
|
88
|
-
# }
|
|
89
|
-
|
|
90
|
-
# it { subject.must_equal(['elium', 'ithiu', 'eryll']) }
|
|
91
|
-
|
|
92
|
-
# context 'when oy is near the bottom' do
|
|
93
|
-
# let(:oy) { 6 }
|
|
68
|
+
describe '#viewport' do
|
|
69
|
+
subject { instance.viewport }
|
|
94
70
|
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
# context 'when ox is nearly past the content width' do
|
|
99
|
-
# let(:oy) { 5 }
|
|
100
|
-
# let(:ox) { 10 }
|
|
101
|
-
|
|
102
|
-
# it 'returns only that which is visible, discarding empty lines' do
|
|
103
|
-
# subject.must_equal([])
|
|
104
|
-
# end
|
|
105
|
-
# end
|
|
71
|
+
context 'when there are no lines' do
|
|
72
|
+
it { subject.must_equal([]) }
|
|
73
|
+
end
|
|
106
74
|
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
75
|
+
context 'when there are lines' do
|
|
76
|
+
let(:lines) {
|
|
77
|
+
Vedeu::Editor::Lines.new([
|
|
78
|
+
Vedeu::Editor::Line.new('Hydrogen'),
|
|
79
|
+
Vedeu::Editor::Line.new('Helium'),
|
|
80
|
+
Vedeu::Editor::Line.new('Lithium'),
|
|
81
|
+
Vedeu::Editor::Line.new('Beryllium'),
|
|
82
|
+
Vedeu::Editor::Line.new('Boron'),
|
|
83
|
+
])
|
|
84
|
+
}
|
|
85
|
+
let(:expected) {
|
|
86
|
+
[
|
|
87
|
+
"\e[1;1H\e[39m\e[49m\e[24m\e[22m\e[27me",
|
|
88
|
+
"\e[1;2H\e[39m\e[49m\e[24m\e[22m\e[27ml",
|
|
89
|
+
"\e[1;3H\e[39m\e[49m\e[24m\e[22m\e[27mi",
|
|
90
|
+
"\e[1;4H\e[39m\e[49m\e[24m\e[22m\e[27mu",
|
|
91
|
+
"\e[1;5H\e[39m\e[49m\e[24m\e[22m\e[27mm",
|
|
92
|
+
"\e[2;1H\e[39m\e[49m\e[24m\e[22m\e[27mi",
|
|
93
|
+
"\e[2;2H\e[39m\e[49m\e[24m\e[22m\e[27mt",
|
|
94
|
+
"\e[2;3H\e[39m\e[49m\e[24m\e[22m\e[27mh",
|
|
95
|
+
"\e[2;4H\e[39m\e[49m\e[24m\e[22m\e[27mi",
|
|
96
|
+
"\e[2;5H\e[39m\e[49m\e[24m\e[22m\e[27mu",
|
|
97
|
+
"\e[3;1H\e[39m\e[49m\e[24m\e[22m\e[27me",
|
|
98
|
+
"\e[3;2H\e[39m\e[49m\e[24m\e[22m\e[27mr",
|
|
99
|
+
"\e[3;3H\e[39m\e[49m\e[24m\e[22m\e[27my",
|
|
100
|
+
"\e[3;4H\e[39m\e[49m\e[24m\e[22m\e[27ml",
|
|
101
|
+
"\e[3;5H\e[39m\e[49m\e[24m\e[22m\e[27ml"
|
|
102
|
+
]
|
|
103
|
+
}
|
|
110
104
|
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
105
|
+
it { subject.size.must_equal(15) }
|
|
106
|
+
it { subject.map(&:to_s).must_equal(expected) }
|
|
107
|
+
end
|
|
108
|
+
end
|
|
115
109
|
|
|
116
110
|
end # Cropper
|
|
117
111
|
|
|
@@ -4,6 +4,33 @@ module Vedeu
|
|
|
4
4
|
|
|
5
5
|
module Error
|
|
6
6
|
|
|
7
|
+
describe ActionNotFound do
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe ControllerNotFound do
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
describe Fatal do
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe Interrupt do
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
describe InvalidSyntax do
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
describe MissingRequired do
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
describe ModelNotFound do
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
describe ModeSwitch do
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
describe NotImplemented do
|
|
32
|
+
end
|
|
33
|
+
|
|
7
34
|
describe OutOfRange do
|
|
8
35
|
|
|
9
36
|
let(:described) { Vedeu::Error::OutOfRange }
|
|
@@ -42,44 +42,6 @@ module Vedeu
|
|
|
42
42
|
end
|
|
43
43
|
end
|
|
44
44
|
|
|
45
|
-
describe '#border' do
|
|
46
|
-
after { Vedeu.borders.reset }
|
|
47
|
-
|
|
48
|
-
context 'when the block is not given' do
|
|
49
|
-
subject { instance.border }
|
|
50
|
-
|
|
51
|
-
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
context 'when the block is given' do
|
|
55
|
-
subject { instance.border { } }
|
|
56
|
-
|
|
57
|
-
it { subject.must_be_instance_of(Vedeu::Borders::Border) }
|
|
58
|
-
|
|
59
|
-
context 'when the name is not given' do
|
|
60
|
-
it 'uses the interface name for storing the border' do
|
|
61
|
-
subject.name.must_equal('actinium')
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
context 'when the name is given' do
|
|
66
|
-
subject { instance.border('magnesium') { } }
|
|
67
|
-
|
|
68
|
-
it 'uses the name for storing the border' do
|
|
69
|
-
subject.name.must_equal('magnesium')
|
|
70
|
-
end
|
|
71
|
-
end
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
describe '#border!' do
|
|
76
|
-
after { Vedeu.borders.reset }
|
|
77
|
-
|
|
78
|
-
subject { instance.border! }
|
|
79
|
-
|
|
80
|
-
it { subject.must_be_instance_of(Vedeu::Borders::Border) }
|
|
81
|
-
end
|
|
82
|
-
|
|
83
45
|
describe '#cursor' do
|
|
84
46
|
let(:_value) {}
|
|
85
47
|
|
|
@@ -172,34 +134,6 @@ module Vedeu
|
|
|
172
134
|
end
|
|
173
135
|
end
|
|
174
136
|
|
|
175
|
-
describe '#geometry' do
|
|
176
|
-
context 'when the required block is not provided' do
|
|
177
|
-
subject { instance.geometry }
|
|
178
|
-
|
|
179
|
-
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
180
|
-
end
|
|
181
|
-
|
|
182
|
-
context 'when the block is given' do
|
|
183
|
-
subject { instance.geometry { } }
|
|
184
|
-
|
|
185
|
-
it { subject.must_be_instance_of(Vedeu::Geometry::Geometry) }
|
|
186
|
-
|
|
187
|
-
context 'when the name is not given' do
|
|
188
|
-
it 'uses the interface name for storing the geometry' do
|
|
189
|
-
subject.name.must_equal('actinium')
|
|
190
|
-
end
|
|
191
|
-
end
|
|
192
|
-
|
|
193
|
-
context 'when the name is given' do
|
|
194
|
-
subject { instance.geometry('magnesium') { } }
|
|
195
|
-
|
|
196
|
-
it 'uses the name for storing the geometry' do
|
|
197
|
-
subject.name.must_equal('magnesium')
|
|
198
|
-
end
|
|
199
|
-
end
|
|
200
|
-
end
|
|
201
|
-
end
|
|
202
|
-
|
|
203
137
|
describe '#group' do
|
|
204
138
|
let(:_value) { 'elements' }
|
|
205
139
|
|
|
@@ -18,6 +18,22 @@ module Vedeu
|
|
|
18
18
|
let(:collection) { [:sodium, :magnesium, :aluminium, :silicon] }
|
|
19
19
|
let(:menu_name) { 'elements' }
|
|
20
20
|
|
|
21
|
+
describe '.menu' do
|
|
22
|
+
subject {
|
|
23
|
+
described.menu('elements') do
|
|
24
|
+
# ...
|
|
25
|
+
end
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
it { subject.must_be_instance_of(Vedeu::Menus::Menu) }
|
|
29
|
+
|
|
30
|
+
context 'when the block is not given' do
|
|
31
|
+
subject { described.menu }
|
|
32
|
+
|
|
33
|
+
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
21
37
|
describe '#item' do
|
|
22
38
|
let(:_value) { :platinum }
|
|
23
39
|
|
|
@@ -21,22 +21,6 @@ module Vedeu
|
|
|
21
21
|
let(:current) { 0 }
|
|
22
22
|
let(:selected) {}
|
|
23
23
|
|
|
24
|
-
describe '.menu' do
|
|
25
|
-
subject {
|
|
26
|
-
described.menu('elements') do
|
|
27
|
-
# ...
|
|
28
|
-
end
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
it { subject.must_be_instance_of(described) }
|
|
32
|
-
|
|
33
|
-
context 'when the block is not given' do
|
|
34
|
-
subject { described.menu }
|
|
35
|
-
|
|
36
|
-
it { proc { subject }.must_raise(Vedeu::Error::RequiresBlock) }
|
|
37
|
-
end
|
|
38
|
-
end
|
|
39
|
-
|
|
40
24
|
describe '#initialize' do
|
|
41
25
|
it { instance.must_be_instance_of(described) }
|
|
42
26
|
it {
|
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.6.
|
|
4
|
+
version: 0.6.32
|
|
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-10-
|
|
11
|
+
date: 2015-10-13 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: guard
|