vedeu 0.5.9 → 0.5.10
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/examples/material_colours_app.rb +2 -0
- data/lib/vedeu/bindings/drb.rb +3 -1
- data/lib/vedeu/borders/border.rb +9 -2
- data/lib/vedeu/borders/render_border.rb +81 -3
- data/lib/vedeu/distributed/server.rb +4 -2
- data/lib/vedeu/dsl/border.rb +17 -0
- data/lib/vedeu/dsl/group.rb +22 -1
- data/lib/vedeu/geometry/coordinate.rb +122 -102
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/borders/border_test.rb +3 -0
- data/test/lib/vedeu/dsl/border_test.rb +9 -0
- data/test/lib/vedeu/dsl/group_test.rb +16 -0
- 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: 1096fd3f0f65d843b0f6f92e4b70a721570f15da
|
4
|
+
data.tar.gz: 808dc9b634727f33c20aa32712e2d6066c759b4d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8cd549653f68705952718d30bd75d653cb17215dd2c30cd7fdbc407e933bb1a831f19f74da3e567c8fa4d610a93f2f93cf9a1ebf4c377a0b468816b8159d0fc9
|
7
|
+
data.tar.gz: 328c6e794c5387531e94a13bc3be5b30facb61697cd531fed4481214b8b56016b3c8aa7e96ec95182319a0577c63af1e96e12b23a344fd38cc4b53f205ae829f
|
@@ -33,6 +33,7 @@ class VedeuMaterialColoursApp
|
|
33
33
|
border 'main_interface' do
|
34
34
|
colour foreground: '#ffffff', background: :default
|
35
35
|
title 'Rainbow!'
|
36
|
+
caption('Unicorns!')
|
36
37
|
end
|
37
38
|
colour foreground: '#ffffff', background: :default
|
38
39
|
cursor!
|
@@ -53,6 +54,7 @@ class VedeuMaterialColoursApp
|
|
53
54
|
border 'other_interface' do
|
54
55
|
colour(foreground: '#ffffff', background: :default)
|
55
56
|
title('Wow!')
|
57
|
+
caption('Shiny!')
|
56
58
|
horizontal('-')
|
57
59
|
top_right('+')
|
58
60
|
top_left('+')
|
data/lib/vedeu/bindings/drb.rb
CHANGED
@@ -31,12 +31,14 @@ module Vedeu
|
|
31
31
|
# Vedeu.trigger(:_drb_input_, data, type)
|
32
32
|
#
|
33
33
|
# @return [TrueClass]
|
34
|
+
# @see Vedeu::Distributed::Server#input
|
34
35
|
def drb_input!
|
35
36
|
Vedeu.bind(:_drb_input_) do |data, type|
|
36
37
|
Vedeu.log(type: :drb, message: "Sending input (#{type})")
|
37
38
|
|
38
39
|
case type
|
39
|
-
when :command
|
40
|
+
when :command then Vedeu.trigger(:_command_, data)
|
41
|
+
when :keypress then Vedeu.trigger(:_keypress_, data)
|
40
42
|
else Vedeu.trigger(:_keypress_, data)
|
41
43
|
end
|
42
44
|
end
|
data/lib/vedeu/borders/border.rb
CHANGED
@@ -59,6 +59,10 @@ module Vedeu
|
|
59
59
|
attr_accessor :show_top
|
60
60
|
alias_method :top?, :show_top
|
61
61
|
|
62
|
+
# @!attribute [rw] caption
|
63
|
+
# @return [String]
|
64
|
+
attr_accessor :caption
|
65
|
+
|
62
66
|
# @!attribute [rw] title
|
63
67
|
# @return [String]
|
64
68
|
attr_accessor :title
|
@@ -105,8 +109,10 @@ module Vedeu
|
|
105
109
|
# is to be shown.
|
106
110
|
# @option attributes show_top [Boolean] Indicate whether the top border is
|
107
111
|
# to be shown.
|
108
|
-
# @option attributes title [String]
|
109
|
-
# to be shown.
|
112
|
+
# @option attributes title [String] An optional title for when the top
|
113
|
+
# border is to be shown.
|
114
|
+
# @option attributes caption [String] An optional caption for when the
|
115
|
+
# bottom border is to be shown.
|
110
116
|
# @option attributes top_left [String] The top left border character.
|
111
117
|
# @option attributes top_right [String] The top right border character.
|
112
118
|
# @option attributes vertical [String] The vertical border character.
|
@@ -179,6 +185,7 @@ module Vedeu
|
|
179
185
|
{
|
180
186
|
bottom_left: Vedeu::EscapeSequences::Borders.bottom_left,
|
181
187
|
bottom_right: Vedeu::EscapeSequences::Borders.bottom_right,
|
188
|
+
caption: '',
|
182
189
|
client: nil,
|
183
190
|
colour: nil,
|
184
191
|
enabled: false,
|
@@ -15,6 +15,7 @@ module Vedeu
|
|
15
15
|
:bxn,
|
16
16
|
:by,
|
17
17
|
:byn,
|
18
|
+
:caption,
|
18
19
|
:colour,
|
19
20
|
:enabled?,
|
20
21
|
:height,
|
@@ -117,11 +118,16 @@ module Vedeu
|
|
117
118
|
|
118
119
|
# Renders the bottom border for the interface.
|
119
120
|
#
|
121
|
+
# @note
|
122
|
+
# If a caption has been specified, then the bottom border will include
|
123
|
+
# this caption unless the size of the interface is smaller than the padded
|
124
|
+
# caption length.
|
125
|
+
#
|
120
126
|
# @return [String]
|
121
127
|
def bottom
|
122
128
|
return [] unless bottom?
|
123
129
|
|
124
|
-
[build_bottom_left,
|
130
|
+
[build_bottom_left, captionbar, build_bottom_right].compact
|
125
131
|
end
|
126
132
|
|
127
133
|
# @return [Vedeu::Geometry]
|
@@ -180,8 +186,27 @@ module Vedeu
|
|
180
186
|
[build_top_left, titlebar, build_top_right].compact
|
181
187
|
end
|
182
188
|
|
183
|
-
#
|
184
|
-
#
|
189
|
+
# Overwrite the border from {#build_horizontal} on the bottom border to
|
190
|
+
# include the caption if given.
|
191
|
+
#
|
192
|
+
# @return [Array<Vedeu::Views::Char>]
|
193
|
+
def captionbar
|
194
|
+
return build_bottom unless caption? && caption_fits?
|
195
|
+
|
196
|
+
caption_starts_at = (width - caption_characters.size) - 2
|
197
|
+
|
198
|
+
caption_char = 0
|
199
|
+
build_bottom.each_with_index do |char, index|
|
200
|
+
next if index <= caption_starts_at || index > (width - 2)
|
201
|
+
|
202
|
+
char.border = nil
|
203
|
+
char.value = caption_characters[caption_char]
|
204
|
+
caption_char += 1
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
# Overwrite the border from {#build_horizontal} on the top border to
|
209
|
+
# include the title if given.
|
185
210
|
#
|
186
211
|
# @return [Array<Vedeu::Views::Char>]
|
187
212
|
def titlebar
|
@@ -202,6 +227,13 @@ module Vedeu
|
|
202
227
|
present?(title)
|
203
228
|
end
|
204
229
|
|
230
|
+
# Return boolean indicating whether this border has a non-empty caption.
|
231
|
+
#
|
232
|
+
# @return [Boolean]
|
233
|
+
def caption?
|
234
|
+
present?(caption)
|
235
|
+
end
|
236
|
+
|
205
237
|
# Return boolean indicating whether the title fits within the width of the
|
206
238
|
# top border.
|
207
239
|
#
|
@@ -210,11 +242,24 @@ module Vedeu
|
|
210
242
|
width > title_characters.size
|
211
243
|
end
|
212
244
|
|
245
|
+
# Return boolean indicating whether the caption fits within the width of the
|
246
|
+
# bottom border.
|
247
|
+
#
|
248
|
+
# @return [Boolean]
|
249
|
+
def caption_fits?
|
250
|
+
width > caption_characters.size
|
251
|
+
end
|
252
|
+
|
213
253
|
# @return [Array<String>]
|
214
254
|
def title_characters
|
215
255
|
@title_characters ||= title_padded.chars
|
216
256
|
end
|
217
257
|
|
258
|
+
# @return [Array<String>]
|
259
|
+
def caption_characters
|
260
|
+
@caption_characters ||= caption_padded.chars
|
261
|
+
end
|
262
|
+
|
218
263
|
# Pads the title with a single whitespace either side.
|
219
264
|
#
|
220
265
|
# @example
|
@@ -231,6 +276,22 @@ module Vedeu
|
|
231
276
|
truncated_title.center(truncated_title.size + 2)
|
232
277
|
end
|
233
278
|
|
279
|
+
# Pads the caption with a single whitespace either side.
|
280
|
+
#
|
281
|
+
# @example
|
282
|
+
# caption = 'Truncated!'
|
283
|
+
# width = 20
|
284
|
+
# # => ' Truncated! '
|
285
|
+
#
|
286
|
+
# width = 10
|
287
|
+
# # => ' Trunca '
|
288
|
+
#
|
289
|
+
# @return [String]
|
290
|
+
# @see #truncated_caption
|
291
|
+
def caption_padded
|
292
|
+
truncated_caption.center(truncated_caption.size + 2)
|
293
|
+
end
|
294
|
+
|
234
295
|
# Truncates the title to the width of the interface, minus characters needed
|
235
296
|
# to ensure there is at least a single character of horizontal border and a
|
236
297
|
# whitespace on either side of the title.
|
@@ -248,6 +309,23 @@ module Vedeu
|
|
248
309
|
title.chomp.slice(0..(width - 5))
|
249
310
|
end
|
250
311
|
|
312
|
+
# Truncates the caption to the width of the interface, minus characters
|
313
|
+
# needed to ensure there is at least a single character of horizontal border
|
314
|
+
# and a whitespace on either side of the caption.
|
315
|
+
#
|
316
|
+
# @example
|
317
|
+
# caption = 'Truncated!'
|
318
|
+
# width = 20
|
319
|
+
# # => 'Truncated!'
|
320
|
+
#
|
321
|
+
# width = 10
|
322
|
+
# # => 'Trunca'
|
323
|
+
#
|
324
|
+
# @return [String]
|
325
|
+
def truncated_caption
|
326
|
+
caption.chomp.slice(0..(width - 5))
|
327
|
+
end
|
328
|
+
|
251
329
|
end # RenderBorder
|
252
330
|
|
253
331
|
end # Vedeu
|
@@ -61,8 +61,10 @@ module Vedeu
|
|
61
61
|
|
62
62
|
end # Eigenclass
|
63
63
|
|
64
|
-
# @param data [String|Symbol]
|
65
|
-
# @param type [Symbol] Either :
|
64
|
+
# @param data [String|Symbol] The input to send to Vedeu.
|
65
|
+
# @param type [Symbol] Either :command or :keypress. Will trigger the
|
66
|
+
# respective capture mode within {Vedeu::Input}, or if not given, will
|
67
|
+
# treat the data as a keypress.
|
66
68
|
# @return [void]
|
67
69
|
def input(data, type = :keypress)
|
68
70
|
Vedeu.trigger(:_drb_input_, data, type)
|
data/lib/vedeu/dsl/border.rb
CHANGED
@@ -261,6 +261,23 @@ module Vedeu
|
|
261
261
|
model.title = value
|
262
262
|
end
|
263
263
|
|
264
|
+
# If you have you are showing a bottom border, you could add a caption.
|
265
|
+
#
|
266
|
+
# Vedeu.border 'border_demo' do
|
267
|
+
# caption 'My Cool Caption'
|
268
|
+
# # ... some code
|
269
|
+
# end
|
270
|
+
#
|
271
|
+
# produces, depending on other customisations:
|
272
|
+
#
|
273
|
+
# +------------------------------ My Cool Caption -+
|
274
|
+
#
|
275
|
+
# @param value [String] The caption.
|
276
|
+
# @return [String]
|
277
|
+
def caption(value)
|
278
|
+
model.caption = value
|
279
|
+
end
|
280
|
+
|
264
281
|
# Enable/disable the top border.
|
265
282
|
#
|
266
283
|
# Vedeu.border 'border_demo' do
|
data/lib/vedeu/dsl/group.rb
CHANGED
@@ -34,6 +34,15 @@ module Vedeu
|
|
34
34
|
# # ... some code
|
35
35
|
# end
|
36
36
|
#
|
37
|
+
# or more succinctly:
|
38
|
+
#
|
39
|
+
# Vedeu.group 'main_screen' do
|
40
|
+
# members 'editor_interface', 'status_interface', 'command_interface'
|
41
|
+
# # ... some code
|
42
|
+
# end
|
43
|
+
#
|
44
|
+
# or when defining an interface:
|
45
|
+
#
|
37
46
|
# Vedeu.interface 'some_interface' do
|
38
47
|
# group 'some_group'
|
39
48
|
# # ... some code
|
@@ -66,11 +75,23 @@ module Vedeu
|
|
66
75
|
# end
|
67
76
|
#
|
68
77
|
# @param interface_name [String]
|
69
|
-
# @return [
|
78
|
+
# @return [Vedeu::Group]
|
70
79
|
def add(interface_name)
|
71
80
|
model.add(interface_name)
|
72
81
|
end
|
73
82
|
|
83
|
+
# Add the named interfaces to this group in bulk.
|
84
|
+
#
|
85
|
+
# Vedeu.group 'main_screen' do
|
86
|
+
# members ['editor_interface', 'some_interface', 'other_interface']
|
87
|
+
# end
|
88
|
+
#
|
89
|
+
# @param interface_names [Array<String>]
|
90
|
+
# @return [Array<String>]
|
91
|
+
def members(*interface_names)
|
92
|
+
interface_names.each { |name| add(name) }
|
93
|
+
end
|
94
|
+
|
74
95
|
end # Group
|
75
96
|
|
76
97
|
end # DSL
|
@@ -6,15 +6,13 @@ module Vedeu
|
|
6
6
|
|
7
7
|
extend Forwardable
|
8
8
|
|
9
|
-
def_delegators :
|
10
|
-
:
|
11
|
-
:
|
12
|
-
|
13
|
-
|
14
|
-
:
|
15
|
-
:
|
16
|
-
:x,
|
17
|
-
:y
|
9
|
+
def_delegators :x,
|
10
|
+
:x_position,
|
11
|
+
:xn
|
12
|
+
|
13
|
+
def_delegators :y,
|
14
|
+
:y_position,
|
15
|
+
:yn
|
18
16
|
|
19
17
|
# Returns a new instance of Vedeu::Coordinate.
|
20
18
|
#
|
@@ -28,87 +26,87 @@ module Vedeu
|
|
28
26
|
@oy = oy
|
29
27
|
end
|
30
28
|
|
31
|
-
|
29
|
+
private
|
30
|
+
|
31
|
+
# Provide an instance of Vedeu::GenericCoordinate to determine correct x
|
32
|
+
# related coordinates.
|
32
33
|
#
|
33
|
-
# @
|
34
|
-
|
35
|
-
|
36
|
-
|
34
|
+
# @return [Vedeu::GenericCoordinate]
|
35
|
+
def x
|
36
|
+
@x ||= Vedeu::GenericCoordinate.new(name: @name, offset: @ox, type: :x)
|
37
|
+
end
|
38
|
+
|
39
|
+
# Provide an instance of Vedeu::GenericCoordinate to determine correct y
|
40
|
+
# related coordinates.
|
37
41
|
#
|
38
|
-
# @return [
|
39
|
-
def
|
40
|
-
|
41
|
-
|
42
|
+
# @return [Vedeu::GenericCoordinate]
|
43
|
+
def y
|
44
|
+
@y ||= Vedeu::GenericCoordinate.new(name: @name, offset: @oy, type: :y)
|
45
|
+
end
|
42
46
|
|
43
|
-
|
44
|
-
y + height
|
47
|
+
end # Coordinate
|
45
48
|
|
46
|
-
|
49
|
+
# Crudely corrects out of range values.
|
50
|
+
#
|
51
|
+
class GenericCoordinate
|
52
|
+
|
53
|
+
# Return a new instance of Vedeu::GenericCoordinate.
|
54
|
+
#
|
55
|
+
# @param attributes [Hash]
|
56
|
+
# @option attributes name [String]
|
57
|
+
# @option attributes type [Symbol]
|
58
|
+
# @option attributes offset [Fixnum]
|
59
|
+
# @return [Vedeu::GenericCoordinate]
|
60
|
+
def initialize(attributes = {})
|
61
|
+
@attributes = defaults.merge!(attributes)
|
62
|
+
|
63
|
+
@attributes.each { |key, value| instance_variable_set("@#{key}", value) }
|
47
64
|
end
|
48
65
|
|
49
|
-
# Returns the maximum
|
66
|
+
# Returns the maximum coordinate for an area.
|
50
67
|
#
|
51
68
|
# @example
|
52
|
-
# #
|
53
|
-
# #
|
54
|
-
#
|
69
|
+
# # d = 2
|
70
|
+
# # d_dn = 4
|
71
|
+
# dn # => 6
|
55
72
|
#
|
56
73
|
# @return [Fixnum]
|
57
|
-
def
|
58
|
-
if
|
74
|
+
def dn
|
75
|
+
if d_dn <= 0
|
59
76
|
0
|
60
77
|
|
61
78
|
else
|
62
|
-
|
79
|
+
d + d_dn
|
63
80
|
|
64
81
|
end
|
65
82
|
end
|
83
|
+
alias_method :xn, :dn
|
84
|
+
alias_method :yn, :dn
|
66
85
|
|
67
|
-
# Returns the
|
68
|
-
#
|
69
|
-
# @example
|
70
|
-
# # y_range = [7, 8, 9, 10, 11]
|
71
|
-
# y_position # => 7
|
72
|
-
# y_position(-2) # => 7
|
73
|
-
# y_position(2) # => 9
|
74
|
-
# y_position(7) # => 11
|
75
|
-
#
|
76
|
-
# @return [Fixnum]
|
77
|
-
def y_position
|
78
|
-
pos = case
|
79
|
-
when oy <= 0 then y
|
80
|
-
when oy > yn_index then yn
|
81
|
-
else
|
82
|
-
y_range[oy]
|
83
|
-
end
|
84
|
-
|
85
|
-
pos = pos < by ? by : pos
|
86
|
-
pos = pos > byn ? byn : pos
|
87
|
-
pos
|
88
|
-
end
|
89
|
-
|
90
|
-
# Returns the x coordinate for a given index.
|
86
|
+
# Returns the coordinate for a given index.
|
91
87
|
#
|
92
88
|
# @example
|
93
|
-
# #
|
94
|
-
#
|
95
|
-
#
|
96
|
-
#
|
97
|
-
#
|
89
|
+
# # d_range = [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
|
90
|
+
# position # => 4
|
91
|
+
# position(-2) # => 4
|
92
|
+
# position(2) # => 6
|
93
|
+
# position(15) # => 13
|
98
94
|
#
|
99
95
|
# @return [Fixnum]
|
100
|
-
def
|
96
|
+
def position
|
101
97
|
pos = case
|
102
|
-
when
|
103
|
-
when
|
98
|
+
when offset <= 0 then d
|
99
|
+
when offset > dn_index then dn
|
104
100
|
else
|
105
|
-
|
101
|
+
d_range[offset]
|
106
102
|
end
|
107
103
|
|
108
|
-
pos = pos <
|
109
|
-
pos = pos >
|
104
|
+
pos = pos < bd ? bd : pos
|
105
|
+
pos = pos > bdn ? bdn : pos
|
110
106
|
pos
|
111
107
|
end
|
108
|
+
alias_method :x_position, :position
|
109
|
+
alias_method :y_position, :position
|
112
110
|
|
113
111
|
protected
|
114
112
|
|
@@ -116,13 +114,13 @@ module Vedeu
|
|
116
114
|
# @return [String]
|
117
115
|
attr_reader :name
|
118
116
|
|
119
|
-
# @!attribute [r]
|
117
|
+
# @!attribute [r] offset
|
120
118
|
# @return [Fixnum]
|
121
|
-
attr_reader :
|
119
|
+
attr_reader :offset
|
122
120
|
|
123
|
-
# @!attribute [r]
|
124
|
-
# @return [
|
125
|
-
attr_reader :
|
121
|
+
# @!attribute [r] type
|
122
|
+
# @return [Symbol]
|
123
|
+
attr_reader :type
|
126
124
|
|
127
125
|
private
|
128
126
|
|
@@ -131,66 +129,88 @@ module Vedeu
|
|
131
129
|
@border ||= Vedeu.borders.by_name(name)
|
132
130
|
end
|
133
131
|
|
134
|
-
#
|
132
|
+
# Return the :x or :y value from the border.
|
135
133
|
#
|
136
|
-
# @
|
137
|
-
|
138
|
-
|
134
|
+
# @return [Fixnum]
|
135
|
+
def d
|
136
|
+
border.send(coordinate_type[0])
|
137
|
+
end
|
138
|
+
|
139
|
+
# Return the :bx or :by value from the border.
|
139
140
|
#
|
140
141
|
# @return [Fixnum]
|
141
|
-
def
|
142
|
-
|
143
|
-
|
142
|
+
def bd
|
143
|
+
border.send(coordinate_type[1])
|
144
|
+
end
|
144
145
|
|
145
|
-
|
146
|
-
|
146
|
+
# Return the :bxn or :byn value from the border.
|
147
|
+
#
|
148
|
+
# @return [Fixnum]
|
149
|
+
def bdn
|
150
|
+
border.send(coordinate_type[2])
|
151
|
+
end
|
147
152
|
|
148
|
-
|
153
|
+
# Return the :width or :height value from the border.
|
154
|
+
#
|
155
|
+
# @return [Fixnum]
|
156
|
+
def d_dn
|
157
|
+
border.send(coordinate_type[3])
|
158
|
+
end
|
159
|
+
|
160
|
+
# Ascertain the correct methods to use for determining the coordinates.
|
161
|
+
#
|
162
|
+
# @return [Fixnum]
|
163
|
+
def coordinate_type
|
164
|
+
@_type ||= case type
|
165
|
+
when :x then [:x, :bx, :bxn, :width]
|
166
|
+
when :y then [:y, :by, :byn, :height]
|
167
|
+
else
|
168
|
+
fail Vedeu::InvalidSyntax,
|
169
|
+
'Coordinate type not given, cannot continue.'
|
170
|
+
end
|
149
171
|
end
|
150
172
|
|
151
|
-
# Returns the maximum
|
173
|
+
# Returns the maximum index for an area.
|
152
174
|
#
|
153
175
|
# @example
|
154
|
-
# #
|
155
|
-
#
|
176
|
+
# # d_dn = 3
|
177
|
+
# dn_index # => 2
|
156
178
|
#
|
157
179
|
# @return [Fixnum]
|
158
|
-
def
|
159
|
-
if
|
180
|
+
def dn_index
|
181
|
+
if d_dn < 1
|
160
182
|
0
|
161
183
|
|
162
184
|
else
|
163
|
-
|
185
|
+
d_dn - 1
|
164
186
|
|
165
187
|
end
|
166
188
|
end
|
167
189
|
|
168
|
-
# Returns an array with all coordinates from
|
190
|
+
# Returns an array with all coordinates from d to dn.
|
169
191
|
#
|
170
192
|
# @example
|
171
|
-
# #
|
172
|
-
# #
|
173
|
-
# #
|
174
|
-
#
|
193
|
+
# # d_dn = 10
|
194
|
+
# # d = 4
|
195
|
+
# # dn = 14
|
196
|
+
# d_range # => [4, 5, 6, 7, 8, 9, 10, 11, 12, 13]
|
175
197
|
#
|
176
198
|
# @return [Array]
|
177
|
-
def
|
178
|
-
(
|
199
|
+
def d_range
|
200
|
+
(d...dn).to_a
|
179
201
|
end
|
180
202
|
|
181
|
-
#
|
182
|
-
#
|
183
|
-
# @example
|
184
|
-
# # height = 4
|
185
|
-
# # y = 7
|
186
|
-
# # yn = 11
|
187
|
-
# y_range # => [7, 8, 9, 10]
|
203
|
+
# The default values for a new instance of this class.
|
188
204
|
#
|
189
|
-
# @return [
|
190
|
-
def
|
191
|
-
|
205
|
+
# @return [Hash]
|
206
|
+
def defaults
|
207
|
+
{
|
208
|
+
name: '',
|
209
|
+
offset: nil,
|
210
|
+
type: :x,
|
211
|
+
}
|
192
212
|
end
|
193
213
|
|
194
|
-
end #
|
214
|
+
end # GenericCoordinate
|
195
215
|
|
196
216
|
end # Vedeu
|
data/lib/vedeu/version.rb
CHANGED
@@ -10,6 +10,7 @@ module Vedeu
|
|
10
10
|
{
|
11
11
|
bottom_left: 'm',
|
12
12
|
bottom_right: 'j',
|
13
|
+
caption: '',
|
13
14
|
client: nil,
|
14
15
|
colour: nil,
|
15
16
|
enabled: false,
|
@@ -56,6 +57,8 @@ module Vedeu
|
|
56
57
|
it { instance.must_respond_to(:bottom_left=) }
|
57
58
|
it { instance.must_respond_to(:bottom_right) }
|
58
59
|
it { instance.must_respond_to(:bottom_right=) }
|
60
|
+
it { instance.must_respond_to(:caption) }
|
61
|
+
it { instance.must_respond_to(:caption=) }
|
59
62
|
it { instance.must_respond_to(:horizontal) }
|
60
63
|
it { instance.must_respond_to(:horizontal=) }
|
61
64
|
it { instance.must_respond_to(:show_bottom) }
|
@@ -176,6 +176,15 @@ module Vedeu
|
|
176
176
|
it { subject.must_equal('Some title') }
|
177
177
|
end
|
178
178
|
|
179
|
+
describe '#caption' do
|
180
|
+
let(:_value) { 'Some caption'}
|
181
|
+
|
182
|
+
subject { instance.caption(_value) }
|
183
|
+
|
184
|
+
it { subject.must_be_instance_of(String) }
|
185
|
+
it { subject.must_equal('Some caption') }
|
186
|
+
end
|
187
|
+
|
179
188
|
describe '#top_left' do
|
180
189
|
let(:char) { 'A' }
|
181
190
|
|
@@ -47,6 +47,22 @@ module Vedeu
|
|
47
47
|
it { subject.members.must_equal(Set['editor_interface']) }
|
48
48
|
end
|
49
49
|
|
50
|
+
describe '#members' do
|
51
|
+
let(:expected) {
|
52
|
+
Set['editor_interface', 'some_interface', 'other_interface']
|
53
|
+
}
|
54
|
+
|
55
|
+
subject {
|
56
|
+
described.group(group_name) do
|
57
|
+
members('editor_interface', 'some_interface', 'other_interface')
|
58
|
+
end
|
59
|
+
}
|
60
|
+
|
61
|
+
it { subject.must_be_instance_of(Vedeu::Group) }
|
62
|
+
|
63
|
+
it { subject.members.must_equal(expected) }
|
64
|
+
end
|
65
|
+
|
50
66
|
end # Group
|
51
67
|
|
52
68
|
describe 'integration' do
|
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.5.
|
4
|
+
version: 0.5.10
|
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-08-
|
11
|
+
date: 2015-08-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: guard
|