vedeu 0.5.9 → 0.5.10
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/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
|