vedeu 0.6.56 → 0.6.57
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/.rubocop.yml +3 -0
- data/Guardfile +1 -1
- data/Rakefile +3 -3
- data/lib/vedeu/borders/all.rb +1 -0
- data/lib/vedeu/borders/border.rb +14 -80
- data/lib/vedeu/borders/caption.rb +17 -0
- data/lib/vedeu/borders/dsl.rb +2 -2
- data/lib/vedeu/borders/null.rb +14 -34
- data/lib/vedeu/borders/refresh.rb +28 -14
- data/lib/vedeu/borders/title.rb +0 -10
- data/lib/vedeu/buffers/buffer.rb +1 -1
- data/lib/vedeu/buffers/view.rb +7 -6
- data/lib/vedeu/colours/repository.rb +0 -15
- data/lib/vedeu/cursors/cursor.rb +6 -6
- data/lib/vedeu/cursors/refresh.rb +11 -19
- data/lib/vedeu/cursors/reposition.rb +3 -5
- data/lib/vedeu/editor/cropper.rb +9 -9
- data/lib/vedeu/editor/cursor.rb +5 -5
- data/lib/vedeu/editor/editor.rb +1 -1
- data/lib/vedeu/events/event.rb +1 -1
- data/lib/vedeu/events/trigger.rb +1 -1
- data/lib/vedeu/geometry/area.rb +94 -17
- data/lib/vedeu/geometry/coordinate.rb +15 -15
- data/lib/vedeu/geometry/dimension.rb +2 -2
- data/lib/vedeu/geometry/geometry.rb +30 -27
- data/lib/vedeu/geometry/null.rb +17 -11
- data/lib/vedeu/interfaces/clear.rb +5 -12
- data/lib/vedeu/output/viewport.rb +13 -13
- data/lib/vedeu/plugins/plugin.rb +1 -1
- data/lib/vedeu/repositories/repository.rb +1 -3
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/borders/border_test.rb +4 -230
- data/test/lib/vedeu/borders/caption_test.rb +15 -0
- data/test/lib/vedeu/borders/dsl_test.rb +4 -4
- data/test/lib/vedeu/borders/null_test.rb +3 -39
- data/test/lib/vedeu/buffers/view_test.rb +2 -0
- data/test/lib/vedeu/colours/repository_test.rb +0 -19
- data/test/lib/vedeu/cursors/reposition_test.rb +17 -4
- data/test/lib/vedeu/dsl/shared_test.rb +34 -0
- data/test/lib/vedeu/geometry/area_test.rb +196 -3
- data/test/lib/vedeu/geometry/dimension_test.rb +79 -79
- data/test/lib/vedeu/geometry/geometry_test.rb +4 -0
- data/test/lib/vedeu/groups/refresh_test.rb +1 -1
- data/test/lib/vedeu/logging/clock_time_test.rb +14 -0
- data/test/lib/vedeu/logging/ips_test.rb +43 -0
- data/test/lib/vedeu/output/presentation/colour_test.rb +4 -0
- data/test/lib/vedeu/repositories/repositories_test.rb +7 -1
- data/test/lib/vedeu/terminal/buffer_test.rb +10 -0
- data/test/support/examples/material_colours_app.rb +306 -47
- data/test/test_helper.rb +5 -5
- metadata +7 -4
- data/test/support/examples/borders_app.rb +0 -330
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f6b535e5cb8b4ba8c6bc115745981c6934a899e4
|
|
4
|
+
data.tar.gz: 448638ef6471487754a32e81594054b6dae011e6
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e62418c3701fd759daa1f2fce52692c92ed9d2c8b8c476acfaa1ab1e40d215d5c14247ba3c1e8b2c940a0201e9707fa0bc91e5ac62e58826cfd11106ba044f30
|
|
7
|
+
data.tar.gz: 02b5e88a20ee7b1c7e1f04395ba533c34e9325c9a84d7b2b5257f82fd73010fdcf9186e613b13c742c4e815e450273d6569cc86d67e69a39c38c563a28debf62
|
data/.rubocop.yml
CHANGED
data/Guardfile
CHANGED
data/Rakefile
CHANGED
|
@@ -8,7 +8,7 @@ Rake::TestTask.new(:test) do |task|
|
|
|
8
8
|
task.libs.push 'test'
|
|
9
9
|
task.pattern = 'test/**/*_test.rb'
|
|
10
10
|
task.verbose = false
|
|
11
|
-
task.warning = true if ENV['WARNINGS'] == 1
|
|
11
|
+
task.warning = true if ENV['WARNINGS'].to_i == 1
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
YARD::Rake::YardocTask.new(:yard) do |task|
|
|
@@ -51,7 +51,7 @@ RuboCop::RakeTask.new(:rubocop) do |task|
|
|
|
51
51
|
end
|
|
52
52
|
|
|
53
53
|
tasks_to_run = [:test]
|
|
54
|
-
tasks_to_run << :rubocop if ENV['RUBOCOP'] == 1
|
|
55
|
-
tasks_to_run << :yard if ENV['YARD'] == 1
|
|
54
|
+
tasks_to_run << :rubocop if ENV['RUBOCOP'].to_i == 1
|
|
55
|
+
tasks_to_run << :yard if ENV['YARD'].to_i == 1
|
|
56
56
|
|
|
57
57
|
task default: tasks_to_run
|
data/lib/vedeu/borders/all.rb
CHANGED
data/lib/vedeu/borders/border.rb
CHANGED
|
@@ -22,6 +22,10 @@ module Vedeu
|
|
|
22
22
|
include Vedeu::Presentation
|
|
23
23
|
|
|
24
24
|
def_delegators :geometry,
|
|
25
|
+
:bx,
|
|
26
|
+
:bxn,
|
|
27
|
+
:by,
|
|
28
|
+
:byn,
|
|
25
29
|
:x,
|
|
26
30
|
:xn,
|
|
27
31
|
:y,
|
|
@@ -37,6 +41,11 @@ module Vedeu
|
|
|
37
41
|
# border if enabled.
|
|
38
42
|
attr_accessor :bottom_right
|
|
39
43
|
|
|
44
|
+
# @!attribute [rw] caption
|
|
45
|
+
# @return [String] An optional caption for when the bottom
|
|
46
|
+
# border is to be shown.
|
|
47
|
+
attr_accessor :caption
|
|
48
|
+
|
|
40
49
|
# @!attribute [rw] horizontal
|
|
41
50
|
# @return [String] The character to be used for the horizontal
|
|
42
51
|
# side border.
|
|
@@ -66,15 +75,10 @@ module Vedeu
|
|
|
66
75
|
attr_accessor :show_top
|
|
67
76
|
alias_method :top?, :show_top
|
|
68
77
|
|
|
69
|
-
# # @!attribute [rw] caption
|
|
70
|
-
# # @return [String] An optional caption for when the bottom
|
|
71
|
-
# border is to be shown.
|
|
72
|
-
# attr_accessor :caption
|
|
73
|
-
|
|
74
78
|
# @!attribute [rw] title
|
|
75
|
-
# @return [String] An optional title for when the top
|
|
76
|
-
#
|
|
77
|
-
|
|
79
|
+
# @return [String] An optional title for when the top border is
|
|
80
|
+
# to be shown.
|
|
81
|
+
attr_accessor :title
|
|
78
82
|
|
|
79
83
|
# @!attribute [rw] top_left
|
|
80
84
|
# @return [String] The character to be used for the top left
|
|
@@ -92,8 +96,8 @@ module Vedeu
|
|
|
92
96
|
attr_accessor :vertical
|
|
93
97
|
|
|
94
98
|
# @!attribute [r] name
|
|
95
|
-
# @return [String] Associates the border with the
|
|
96
|
-
# interface/view.
|
|
99
|
+
# @return [String|Symbol] Associates the border with the
|
|
100
|
+
# same-named interface/view.
|
|
97
101
|
attr_reader :name
|
|
98
102
|
|
|
99
103
|
# @!attribute [r] parent
|
|
@@ -175,60 +179,6 @@ module Vedeu
|
|
|
175
179
|
}
|
|
176
180
|
end
|
|
177
181
|
|
|
178
|
-
# Return the column position for 1 character right of the left
|
|
179
|
-
# border.
|
|
180
|
-
#
|
|
181
|
-
# @return [Fixnum]
|
|
182
|
-
def bx
|
|
183
|
-
(enabled? && left?) ? x + 1 : x
|
|
184
|
-
end
|
|
185
|
-
|
|
186
|
-
# Return the column position for 1 character left of the right
|
|
187
|
-
# border.
|
|
188
|
-
#
|
|
189
|
-
# @return [Fixnum]
|
|
190
|
-
def bxn
|
|
191
|
-
(enabled? && right?) ? xn - 1 : xn
|
|
192
|
-
end
|
|
193
|
-
|
|
194
|
-
# Return the row position for 1 character under of the top
|
|
195
|
-
# border.
|
|
196
|
-
#
|
|
197
|
-
# @return [Fixnum]
|
|
198
|
-
def by
|
|
199
|
-
(enabled? && top?) ? y + 1 : y
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
# Return the column position for 1 character above of the bottom
|
|
203
|
-
# border.
|
|
204
|
-
#
|
|
205
|
-
# @return [Fixnum]
|
|
206
|
-
def byn
|
|
207
|
-
(enabled? && bottom?) ? yn - 1 : yn
|
|
208
|
-
end
|
|
209
|
-
|
|
210
|
-
# @return [Vedeu::Borders::Caption]
|
|
211
|
-
def caption
|
|
212
|
-
Vedeu::Borders::Caption.coerce(@caption, width)
|
|
213
|
-
end
|
|
214
|
-
|
|
215
|
-
# @param value [String]
|
|
216
|
-
# @return [Vedeu::Borders::Caption]
|
|
217
|
-
def caption=(value)
|
|
218
|
-
@caption = Vedeu::Borders::Caption.coerce(value, width)
|
|
219
|
-
end
|
|
220
|
-
|
|
221
|
-
# @return [Vedeu::Borders::Title]
|
|
222
|
-
def title
|
|
223
|
-
Vedeu::Borders::Title.coerce(@title, width)
|
|
224
|
-
end
|
|
225
|
-
|
|
226
|
-
# @param value [String]
|
|
227
|
-
# @return [Vedeu::Borders::Title]
|
|
228
|
-
def title=(value)
|
|
229
|
-
@title = Vedeu::Borders::Title.coerce(value, width)
|
|
230
|
-
end
|
|
231
|
-
|
|
232
182
|
# Returns a DSL instance responsible for defining the DSL
|
|
233
183
|
# methods of this model.
|
|
234
184
|
#
|
|
@@ -241,22 +191,6 @@ module Vedeu
|
|
|
241
191
|
Vedeu::Borders::DSL.new(self, client)
|
|
242
192
|
end
|
|
243
193
|
|
|
244
|
-
# Returns the width of the interface determined by whether a
|
|
245
|
-
# left, right, both or neither borders are shown.
|
|
246
|
-
#
|
|
247
|
-
# @return [Fixnum]
|
|
248
|
-
def width
|
|
249
|
-
(bx..bxn).size
|
|
250
|
-
end
|
|
251
|
-
|
|
252
|
-
# Returns the height of the interface determined by whether a
|
|
253
|
-
# top, bottom, both or neither borders are shown.
|
|
254
|
-
#
|
|
255
|
-
# @return [Fixnum]
|
|
256
|
-
def height
|
|
257
|
-
(by..byn).size
|
|
258
|
-
end
|
|
259
|
-
|
|
260
194
|
private
|
|
261
195
|
|
|
262
196
|
# Returns the geometry for the interface.
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Borders
|
|
4
|
+
|
|
5
|
+
# When a {Vedeu::Borders::Border} has a caption, truncate it if
|
|
6
|
+
# the caption is longer than the interface is wide, and pad with a
|
|
7
|
+
# space either side.
|
|
8
|
+
#
|
|
9
|
+
# @api private
|
|
10
|
+
#
|
|
11
|
+
class Caption < Title
|
|
12
|
+
|
|
13
|
+
end # Caption
|
|
14
|
+
|
|
15
|
+
end # Borders
|
|
16
|
+
|
|
17
|
+
end # Vedeu
|
data/lib/vedeu/borders/dsl.rb
CHANGED
|
@@ -233,7 +233,7 @@ module Vedeu
|
|
|
233
233
|
# +- My Cool Title --------------------------------+
|
|
234
234
|
#
|
|
235
235
|
# @param value [String] The title.
|
|
236
|
-
# @return [
|
|
236
|
+
# @return [String]
|
|
237
237
|
def title(value)
|
|
238
238
|
model.title = value
|
|
239
239
|
model.title
|
|
@@ -253,7 +253,7 @@ module Vedeu
|
|
|
253
253
|
# +------------------------------ My Cool Caption -+
|
|
254
254
|
#
|
|
255
255
|
# @param value [String] The caption.
|
|
256
|
-
# @return [
|
|
256
|
+
# @return [String]
|
|
257
257
|
def caption(value)
|
|
258
258
|
model.caption = value
|
|
259
259
|
model.caption
|
data/lib/vedeu/borders/null.rb
CHANGED
|
@@ -9,6 +9,20 @@ module Vedeu
|
|
|
9
9
|
#
|
|
10
10
|
class Null
|
|
11
11
|
|
|
12
|
+
extend Forwardable
|
|
13
|
+
|
|
14
|
+
def_delegators :geometry,
|
|
15
|
+
:bordered_width,
|
|
16
|
+
:bordered_height,
|
|
17
|
+
:bx,
|
|
18
|
+
:bxn,
|
|
19
|
+
:by,
|
|
20
|
+
:byn,
|
|
21
|
+
:x,
|
|
22
|
+
:xn,
|
|
23
|
+
:y,
|
|
24
|
+
:yn
|
|
25
|
+
|
|
12
26
|
# @!attribute [r] name
|
|
13
27
|
# @return [String|Symbol|NilClass]
|
|
14
28
|
attr_reader :name
|
|
@@ -23,50 +37,16 @@ module Vedeu
|
|
|
23
37
|
@name = @attributes[:name]
|
|
24
38
|
end
|
|
25
39
|
|
|
26
|
-
# @return [Fixnum]
|
|
27
|
-
def bx
|
|
28
|
-
geometry.x
|
|
29
|
-
end
|
|
30
|
-
alias_method :x, :bx
|
|
31
|
-
|
|
32
|
-
# @return [Fixnum]
|
|
33
|
-
def bxn
|
|
34
|
-
geometry.xn
|
|
35
|
-
end
|
|
36
|
-
alias_method :xn, :bxn
|
|
37
|
-
|
|
38
|
-
# @return [Fixnum]
|
|
39
|
-
def by
|
|
40
|
-
geometry.y
|
|
41
|
-
end
|
|
42
|
-
alias_method :y, :by
|
|
43
|
-
|
|
44
|
-
# @return [Fixnum]
|
|
45
|
-
def byn
|
|
46
|
-
geometry.yn
|
|
47
|
-
end
|
|
48
|
-
alias_method :yn, :byn
|
|
49
|
-
|
|
50
40
|
# @return [Boolean]
|
|
51
41
|
def enabled?
|
|
52
42
|
false
|
|
53
43
|
end
|
|
54
44
|
|
|
55
|
-
# @return [Fixnum]
|
|
56
|
-
def height
|
|
57
|
-
(by..byn).size
|
|
58
|
-
end
|
|
59
|
-
|
|
60
45
|
# @return [Array]
|
|
61
46
|
def render
|
|
62
47
|
[]
|
|
63
48
|
end
|
|
64
49
|
|
|
65
|
-
# @return [Fixnum]
|
|
66
|
-
def width
|
|
67
|
-
(bx..bxn).size
|
|
68
|
-
end
|
|
69
|
-
|
|
70
50
|
private
|
|
71
51
|
|
|
72
52
|
# Returns the geometry for the interface.
|
|
@@ -15,14 +15,9 @@ module Vedeu
|
|
|
15
15
|
:bottom?,
|
|
16
16
|
:bottom_left,
|
|
17
17
|
:bottom_right,
|
|
18
|
-
:bx,
|
|
19
|
-
:bxn,
|
|
20
|
-
:by,
|
|
21
|
-
:byn,
|
|
22
18
|
:caption,
|
|
23
19
|
:colour,
|
|
24
20
|
:enabled?,
|
|
25
|
-
:height,
|
|
26
21
|
:horizontal,
|
|
27
22
|
:left?,
|
|
28
23
|
:right?,
|
|
@@ -31,10 +26,17 @@ module Vedeu
|
|
|
31
26
|
:top?,
|
|
32
27
|
:top_left,
|
|
33
28
|
:top_right,
|
|
34
|
-
:width,
|
|
35
29
|
:vertical
|
|
36
30
|
|
|
37
31
|
def_delegators :geometry,
|
|
32
|
+
:bordered_height,
|
|
33
|
+
:bordered_width,
|
|
34
|
+
:bx,
|
|
35
|
+
:bxn,
|
|
36
|
+
:by,
|
|
37
|
+
:byn,
|
|
38
|
+
:height,
|
|
39
|
+
:width,
|
|
38
40
|
:x,
|
|
39
41
|
:xn,
|
|
40
42
|
:y,
|
|
@@ -89,12 +91,24 @@ module Vedeu
|
|
|
89
91
|
Vedeu.timer("Drawing border: '#{name}'".freeze) do
|
|
90
92
|
out = [top, bottom]
|
|
91
93
|
|
|
92
|
-
|
|
94
|
+
bordered_height.times { |y| out << [left(y), right(y)] }
|
|
93
95
|
|
|
94
96
|
out.flatten
|
|
95
97
|
end
|
|
96
98
|
end
|
|
97
99
|
|
|
100
|
+
# @return [Vedeu::Borders::Caption] An optional caption for when
|
|
101
|
+
# the bottom border is to be shown.
|
|
102
|
+
def render_caption
|
|
103
|
+
@_caption ||= Vedeu::Borders::Caption.coerce(caption, width)
|
|
104
|
+
end
|
|
105
|
+
|
|
106
|
+
# @return [Vedeu::Borders::Title] An optional title for when the
|
|
107
|
+
# top border is to be shown.
|
|
108
|
+
def render_title
|
|
109
|
+
@_title ||= Vedeu::Borders::Title.coerce(title, width)
|
|
110
|
+
end
|
|
111
|
+
|
|
98
112
|
# @param value [String]
|
|
99
113
|
# @param type [Symbol|NilClass]
|
|
100
114
|
# @param iy [Fixnum]
|
|
@@ -178,7 +192,7 @@ module Vedeu
|
|
|
178
192
|
# @param y_coordinate [Fixnum] The value of either y or yn.
|
|
179
193
|
# @return [Array<Vedeu::Views::Char>]
|
|
180
194
|
def build_horizontal(position, y_coordinate)
|
|
181
|
-
Array.new(
|
|
195
|
+
Array.new(bordered_width) do |ix|
|
|
182
196
|
build(horizontal, position, y_coordinate, (bx + ix))
|
|
183
197
|
end
|
|
184
198
|
end
|
|
@@ -233,16 +247,16 @@ module Vedeu
|
|
|
233
247
|
#
|
|
234
248
|
# @return [Array<Vedeu::Views::Char>]
|
|
235
249
|
def captionbar
|
|
236
|
-
return build_bottom if
|
|
250
|
+
return build_bottom if render_caption.empty?
|
|
237
251
|
|
|
238
|
-
caption_starts_at = (width -
|
|
252
|
+
caption_starts_at = (width - render_caption.size) - 2
|
|
239
253
|
|
|
240
254
|
caption_index = 0
|
|
241
255
|
build_bottom.each_with_index do |char, index|
|
|
242
256
|
next if index <= caption_starts_at || index > (width - 2)
|
|
243
257
|
|
|
244
258
|
char.border = nil
|
|
245
|
-
char.value =
|
|
259
|
+
char.value = render_caption.characters[caption_index]
|
|
246
260
|
caption_index += 1
|
|
247
261
|
end
|
|
248
262
|
end
|
|
@@ -252,13 +266,13 @@ module Vedeu
|
|
|
252
266
|
#
|
|
253
267
|
# @return [Array<Vedeu::Views::Char>]
|
|
254
268
|
def titlebar
|
|
255
|
-
return build_top if
|
|
269
|
+
return build_top if render_title.empty?
|
|
256
270
|
|
|
257
271
|
build_top.each_with_index do |char, index|
|
|
258
|
-
next if index == 0 || index >
|
|
272
|
+
next if index == 0 || index > render_title.size
|
|
259
273
|
|
|
260
274
|
char.border = nil
|
|
261
|
-
char.value =
|
|
275
|
+
char.value = render_title.characters[index - 1]
|
|
262
276
|
end
|
|
263
277
|
end
|
|
264
278
|
|
data/lib/vedeu/borders/title.rb
CHANGED
|
@@ -127,16 +127,6 @@ module Vedeu
|
|
|
127
127
|
|
|
128
128
|
end # Title
|
|
129
129
|
|
|
130
|
-
# When a {Vedeu::Borders::Border} has a caption, truncate it if
|
|
131
|
-
# the caption is longer than the interface is wide, and pad with a
|
|
132
|
-
# space either side.
|
|
133
|
-
#
|
|
134
|
-
# @api private
|
|
135
|
-
#
|
|
136
|
-
class Caption < Title
|
|
137
|
-
|
|
138
|
-
end # Caption
|
|
139
|
-
|
|
140
130
|
end # Borders
|
|
141
131
|
|
|
142
132
|
end # Vedeu
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
data/lib/vedeu/buffers/view.rb
CHANGED
|
@@ -21,16 +21,17 @@ module Vedeu
|
|
|
21
21
|
|
|
22
22
|
private
|
|
23
23
|
|
|
24
|
-
# @return [Vedeu::
|
|
25
|
-
def
|
|
26
|
-
Vedeu.
|
|
24
|
+
# @return [Vedeu::Geometry::Geometry]
|
|
25
|
+
def geometry
|
|
26
|
+
Vedeu.geometries.by_name(name)
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
# @return [Vedeu::Buffers::Empty]
|
|
30
30
|
def buffer
|
|
31
|
-
@_buffer ||= Vedeu::Buffers::Empty
|
|
32
|
-
|
|
33
|
-
|
|
31
|
+
@_buffer ||= Vedeu::Buffers::Empty
|
|
32
|
+
.new(height: geometry.bordered_height,
|
|
33
|
+
name: name,
|
|
34
|
+
width: geometry.bordered_width).buffer
|
|
34
35
|
end
|
|
35
36
|
|
|
36
37
|
# @return [Vedeu::Buffers::Empty]
|