vedeu 0.6.44 → 0.6.45
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/lib/vedeu/cursors/cursor.rb +23 -28
- data/lib/vedeu/geometry/all.rb +1 -0
- data/lib/vedeu/geometry/dsl.rb +9 -26
- data/lib/vedeu/geometry/validator.rb +56 -0
- data/lib/vedeu/output/renderers/file.rb +11 -12
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/cursors/cursor_test.rb +8 -0
- data/test/lib/vedeu/geometry/validator_test.rb +83 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +2 -7
- metadata +4 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: c76c4e0d9abb0d4ce8fd8f6161c07504a3d6cbbb
|
4
|
+
data.tar.gz: 7ee11459a372f200d2d2ae141fc159c96b941fbe
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cc488bb31f2ba6d6a6fc2dfe6b808ea88dda9627ef7f9b767273ecf00538ef72205f20683ea7f0e6b4d96173d6dcd07b3e3747d6a604d1535dd003979a39d041
|
7
|
+
data.tar.gz: b1683006f7daa19a790928fd58ccd03fab1567064c67240db9813776389d300b65cab261bcf03cacff38e6949661aae2a02c0d86f577176bdeaa4f9103657562
|
data/lib/vedeu/cursors/cursor.rb
CHANGED
@@ -97,7 +97,7 @@ module Vedeu
|
|
97
97
|
@oy += 1
|
98
98
|
@y = coordinate(oy, :y).y
|
99
99
|
|
100
|
-
|
100
|
+
store_and_refresh
|
101
101
|
end
|
102
102
|
|
103
103
|
# Moves the cursor left by one column.
|
@@ -110,7 +110,7 @@ module Vedeu
|
|
110
110
|
@ox -= 1
|
111
111
|
@x = coordinate(ox, :x).x
|
112
112
|
|
113
|
-
|
113
|
+
store_and_refresh
|
114
114
|
end
|
115
115
|
|
116
116
|
# Moves the cursor to the top left of the named interface.
|
@@ -138,7 +138,7 @@ module Vedeu
|
|
138
138
|
@ox += 1
|
139
139
|
@x = coordinate(ox, :x).x
|
140
140
|
|
141
|
-
|
141
|
+
store_and_refresh
|
142
142
|
end
|
143
143
|
|
144
144
|
# Moves the cursor up by one row.
|
@@ -151,7 +151,7 @@ module Vedeu
|
|
151
151
|
@oy -= 1
|
152
152
|
@y = coordinate(oy, :y).y
|
153
153
|
|
154
|
-
|
154
|
+
store_and_refresh
|
155
155
|
end
|
156
156
|
|
157
157
|
# Renders the cursor.
|
@@ -300,6 +300,17 @@ module Vedeu
|
|
300
300
|
attributes.merge!(x: new_x, y: new_y, ox: new_ox, oy: new_oy)
|
301
301
|
end
|
302
302
|
|
303
|
+
# Store the cursor and refresh the cursor.
|
304
|
+
#
|
305
|
+
# @return [void]
|
306
|
+
def store_and_refresh
|
307
|
+
store
|
308
|
+
|
309
|
+
Vedeu.trigger(:_refresh_cursor_, name)
|
310
|
+
|
311
|
+
self
|
312
|
+
end
|
313
|
+
|
303
314
|
# Returns the escape sequence for setting the visibility of the
|
304
315
|
# cursor.
|
305
316
|
#
|
@@ -340,45 +351,29 @@ module Vedeu
|
|
340
351
|
|
341
352
|
# See {file:docs/cursors.md}
|
342
353
|
Vedeu.bind(:_cursor_left_) do |name|
|
343
|
-
|
344
|
-
|
345
|
-
if cursor.visible?
|
346
|
-
cursor.move_left
|
347
|
-
|
348
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
354
|
+
Vedeu.cursors.by_name(name).tap do |cursor|
|
355
|
+
cursor.move_left if cursor.visible?
|
349
356
|
end
|
350
357
|
end
|
351
358
|
|
352
359
|
# See {file:docs/cursors.md}
|
353
360
|
Vedeu.bind(:_cursor_down_) do |name|
|
354
|
-
|
355
|
-
|
356
|
-
if cursor.visible?
|
357
|
-
cursor.move_down
|
358
|
-
|
359
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
361
|
+
Vedeu.cursors.by_name(name).tap do |cursor|
|
362
|
+
cursor.move_down if cursor.visible?
|
360
363
|
end
|
361
364
|
end
|
362
365
|
|
363
366
|
# See {file:docs/cursors.md}
|
364
367
|
Vedeu.bind(:_cursor_up_) do |name|
|
365
|
-
|
366
|
-
|
367
|
-
if cursor.visible?
|
368
|
-
cursor.move_up
|
369
|
-
|
370
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
368
|
+
Vedeu.cursors.by_name(name).tap do |cursor|
|
369
|
+
cursor.move_up if cursor.visible?
|
371
370
|
end
|
372
371
|
end
|
373
372
|
|
374
373
|
# See {file:docs/cursors.md}
|
375
374
|
Vedeu.bind(:_cursor_right_) do |name|
|
376
|
-
|
377
|
-
|
378
|
-
if cursor.visible?
|
379
|
-
cursor.move_right
|
380
|
-
|
381
|
-
Vedeu.trigger(:_refresh_cursor_, name)
|
375
|
+
Vedeu.cursors.by_name(name).tap do |cursor|
|
376
|
+
cursor.move_right if cursor.visible?
|
382
377
|
end
|
383
378
|
end
|
384
379
|
|
data/lib/vedeu/geometry/all.rb
CHANGED
@@ -21,6 +21,7 @@ require 'vedeu/geometry/coordinate'
|
|
21
21
|
require 'vedeu/geometry/dimension'
|
22
22
|
require 'vedeu/geometry/x_dimension'
|
23
23
|
require 'vedeu/geometry/y_dimension'
|
24
|
+
require 'vedeu/geometry/validator'
|
24
25
|
require 'vedeu/geometry/dsl'
|
25
26
|
require 'vedeu/geometry/coordinate'
|
26
27
|
require 'vedeu/geometry/geometry'
|
data/lib/vedeu/geometry/dsl.rb
CHANGED
@@ -76,6 +76,7 @@ module Vedeu
|
|
76
76
|
include Vedeu::Common
|
77
77
|
include Vedeu::DSL
|
78
78
|
include Vedeu::DSL::Use
|
79
|
+
include Vedeu::Geometry::Validator
|
79
80
|
|
80
81
|
# Specify the geometry of an interface or view with a simple
|
81
82
|
# DSL.
|
@@ -147,22 +148,10 @@ module Vedeu
|
|
147
148
|
# is not given.
|
148
149
|
# @return [Vedeu::Geometry::Geometry]
|
149
150
|
def align(vertical, horizontal, width, height)
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
'No horizontal alignment given. Valid values are :center, ' \
|
155
|
-
':centre, :left, :none, :right.'.freeze unless present?(horizontal)
|
156
|
-
|
157
|
-
unless vertical == :none
|
158
|
-
fail Vedeu::Error::InvalidSyntax,
|
159
|
-
'No height given.'.freeze if absent?(height)
|
160
|
-
end
|
161
|
-
|
162
|
-
unless horizontal == :none
|
163
|
-
fail Vedeu::Error::InvalidSyntax,
|
164
|
-
'No width given.'.freeze if absent?(width)
|
165
|
-
end
|
151
|
+
validate_vertical_alignment!(vertical)
|
152
|
+
validate_horizontal_alignment!(horizontal)
|
153
|
+
validate_height!(height) unless vertical == :none
|
154
|
+
validate_width!(width) unless horizontal == :none
|
166
155
|
|
167
156
|
horizontal_alignment(horizontal, width)
|
168
157
|
vertical_alignment(vertical, height)
|
@@ -173,11 +162,8 @@ module Vedeu
|
|
173
162
|
# @param width [Fixnum] The number of characters/columns.
|
174
163
|
# @return [Vedeu::Geometry::Geometry]
|
175
164
|
def horizontal_alignment(value, width)
|
176
|
-
|
177
|
-
|
178
|
-
':centre, :left, :none, :right.'.freeze unless present?(value)
|
179
|
-
fail Vedeu::Error::InvalidSyntax,
|
180
|
-
'No width given.'.freeze unless present?(width)
|
165
|
+
validate_horizontal_alignment!(value)
|
166
|
+
validate_width!(width)
|
181
167
|
|
182
168
|
model.horizontal_alignment = Vedeu::Geometry::HorizontalAlignment
|
183
169
|
.coerce(value)
|
@@ -189,11 +175,8 @@ module Vedeu
|
|
189
175
|
# @param height [Fixnum] The number of lines/rows.
|
190
176
|
# @return [Vedeu::Geometry::Geometry]
|
191
177
|
def vertical_alignment(value, height)
|
192
|
-
|
193
|
-
|
194
|
-
':middle, :none, :top.'.freeze unless present?(value)
|
195
|
-
fail Vedeu::Error::InvalidSyntax,
|
196
|
-
'No height given.'.freeze unless present?(height)
|
178
|
+
validate_vertical_alignment!(value)
|
179
|
+
validate_height!(height)
|
197
180
|
|
198
181
|
model.vertical_alignment = Vedeu::Geometry::VerticalAlignment
|
199
182
|
.coerce(value)
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Geometry
|
4
|
+
|
5
|
+
module Validator
|
6
|
+
|
7
|
+
include Vedeu::Common
|
8
|
+
|
9
|
+
# @param value [Fixnum] The number of lines/rows.
|
10
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
11
|
+
# @return [TrueClass]
|
12
|
+
def validate_height!(value)
|
13
|
+
fail Vedeu::Error::InvalidSyntax,
|
14
|
+
'No height given.'.freeze if absent?(value)
|
15
|
+
|
16
|
+
true
|
17
|
+
end
|
18
|
+
|
19
|
+
# @param value [Symbol] One of :center, :centre, :left,
|
20
|
+
# :none, :right.
|
21
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
22
|
+
# @return [TrueClass]
|
23
|
+
def validate_horizontal_alignment!(value)
|
24
|
+
fail Vedeu::Error::InvalidSyntax,
|
25
|
+
'No horizontal alignment given. Valid values are :center, ' \
|
26
|
+
':centre, :left, :none, :right.'.freeze unless present?(value)
|
27
|
+
|
28
|
+
true
|
29
|
+
end
|
30
|
+
|
31
|
+
# @param vertical [Symbol] One of :bottom, :middle, :none, :top.
|
32
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
33
|
+
# @return [TrueClass]
|
34
|
+
def validate_vertical_alignment!(value)
|
35
|
+
fail Vedeu::Error::InvalidSyntax,
|
36
|
+
'No vertical alignment given. Valid values are :bottom, ' \
|
37
|
+
':middle, :none, :top.'.freeze unless present?(value)
|
38
|
+
|
39
|
+
true
|
40
|
+
end
|
41
|
+
|
42
|
+
# @param value [Fixnum] The number of characters/columns.
|
43
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is nil.
|
44
|
+
# @return [TrueClass]
|
45
|
+
def validate_width!(value)
|
46
|
+
fail Vedeu::Error::InvalidSyntax,
|
47
|
+
'No width given.'.freeze if absent?(value)
|
48
|
+
|
49
|
+
true
|
50
|
+
end
|
51
|
+
|
52
|
+
end # Validator
|
53
|
+
|
54
|
+
end # Geometry
|
55
|
+
|
56
|
+
end # Vedeu
|
@@ -22,19 +22,8 @@ module Vedeu
|
|
22
22
|
@options = options || {}
|
23
23
|
end
|
24
24
|
|
25
|
-
# Render a
|
25
|
+
# Render the output (either content or clearing) to a file.
|
26
26
|
#
|
27
|
-
# @param output [Vedeu::Models::Page]
|
28
|
-
# @param opts [Hash]
|
29
|
-
# @return [String]
|
30
|
-
def clear(output = '', opts = {})
|
31
|
-
@options = options.merge!(opts)
|
32
|
-
|
33
|
-
::File.write(filename, out(output)) if write_file?
|
34
|
-
|
35
|
-
out(output)
|
36
|
-
end
|
37
|
-
|
38
27
|
# @param output [Vedeu::Models::Page]
|
39
28
|
# @param opts [Hash]
|
40
29
|
# @return [String]
|
@@ -45,6 +34,7 @@ module Vedeu
|
|
45
34
|
|
46
35
|
out(output)
|
47
36
|
end
|
37
|
+
alias_method :clear, :render
|
48
38
|
|
49
39
|
private
|
50
40
|
|
@@ -62,11 +52,18 @@ module Vedeu
|
|
62
52
|
end
|
63
53
|
end
|
64
54
|
|
55
|
+
# Return the filename given in the options, (or use the
|
56
|
+
# default), and append a timestamp if the :timestamp option was
|
57
|
+
# set to true.
|
58
|
+
#
|
65
59
|
# @return [String]
|
66
60
|
def filename
|
67
61
|
options[:filename] + timestamp
|
68
62
|
end
|
69
63
|
|
64
|
+
# Return a timestamp for use as part of the filename if the
|
65
|
+
# :timestamp option was set to true, otherwise an empty string.
|
66
|
+
#
|
70
67
|
# @return [Float]
|
71
68
|
def timestamp
|
72
69
|
if options[:timestamp]
|
@@ -78,6 +75,8 @@ module Vedeu
|
|
78
75
|
end
|
79
76
|
end
|
80
77
|
|
78
|
+
# Returns a boolean indicating whether a file should be written.
|
79
|
+
#
|
81
80
|
# @return [Boolean]
|
82
81
|
def write_file?
|
83
82
|
options[:write_file]
|
data/lib/vedeu/version.rb
CHANGED
@@ -129,6 +129,8 @@ module Vedeu
|
|
129
129
|
let(:ox) { 3 }
|
130
130
|
let(:oy) { 2 }
|
131
131
|
|
132
|
+
before { Vedeu.stubs(:trigger).with(:_refresh_cursor_, _name) }
|
133
|
+
|
132
134
|
subject { instance.move_down }
|
133
135
|
|
134
136
|
it { subject.must_be_instance_of(described) }
|
@@ -145,6 +147,8 @@ module Vedeu
|
|
145
147
|
let(:ox) { 3 }
|
146
148
|
let(:oy) { 2 }
|
147
149
|
|
150
|
+
before { Vedeu.stubs(:trigger).with(:_refresh_cursor_, _name) }
|
151
|
+
|
148
152
|
subject { instance.move_left }
|
149
153
|
|
150
154
|
it { subject.must_be_instance_of(described) }
|
@@ -177,6 +181,8 @@ module Vedeu
|
|
177
181
|
let(:ox) { 3 }
|
178
182
|
let(:oy) { 2 }
|
179
183
|
|
184
|
+
before { Vedeu.stubs(:trigger).with(:_refresh_cursor_, _name) }
|
185
|
+
|
180
186
|
subject { instance.move_right }
|
181
187
|
|
182
188
|
it { subject.must_be_instance_of(described) }
|
@@ -193,6 +199,8 @@ module Vedeu
|
|
193
199
|
let(:ox) { 3 }
|
194
200
|
let(:oy) { 2 }
|
195
201
|
|
202
|
+
before { Vedeu.stubs(:trigger).with(:_refresh_cursor_, _name) }
|
203
|
+
|
196
204
|
subject { instance.move_up }
|
197
205
|
|
198
206
|
it { subject.must_be_instance_of(described) }
|
@@ -0,0 +1,83 @@
|
|
1
|
+
require 'test_helper'
|
2
|
+
|
3
|
+
module Vedeu
|
4
|
+
|
5
|
+
module Geometry
|
6
|
+
|
7
|
+
class ValidatorTestClass
|
8
|
+
include Vedeu::Geometry::Validator
|
9
|
+
end
|
10
|
+
|
11
|
+
describe Validator do
|
12
|
+
|
13
|
+
let(:included) { Vedeu::Geometry::ValidatorTestClass.new }
|
14
|
+
|
15
|
+
describe '#validate_height!' do
|
16
|
+
let(:_value) {}
|
17
|
+
|
18
|
+
subject { included.validate_height!(_value) }
|
19
|
+
|
20
|
+
context 'when the value is given' do
|
21
|
+
let(:_value) { 11 }
|
22
|
+
|
23
|
+
it { subject.must_equal(true) }
|
24
|
+
end
|
25
|
+
|
26
|
+
context 'when the value is not given' do
|
27
|
+
it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
|
28
|
+
end
|
29
|
+
end
|
30
|
+
|
31
|
+
describe '#validate_horizontal_alignment!' do
|
32
|
+
let(:_value) {}
|
33
|
+
|
34
|
+
subject { included.validate_horizontal_alignment!(_value) }
|
35
|
+
|
36
|
+
context 'when the value is given' do
|
37
|
+
let(:_value) { :left }
|
38
|
+
|
39
|
+
it { subject.must_equal(true) }
|
40
|
+
end
|
41
|
+
|
42
|
+
context 'when the value is not given' do
|
43
|
+
it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
describe '#validate_vertical_alignment!' do
|
48
|
+
let(:_value) {}
|
49
|
+
|
50
|
+
subject { included.validate_vertical_alignment!(_value) }
|
51
|
+
|
52
|
+
context 'when the value is given' do
|
53
|
+
let(:_value) { :top }
|
54
|
+
|
55
|
+
it { subject.must_equal(true) }
|
56
|
+
end
|
57
|
+
|
58
|
+
context 'when the value is not given' do
|
59
|
+
it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
|
60
|
+
end
|
61
|
+
end
|
62
|
+
|
63
|
+
describe '#validate_width!' do
|
64
|
+
let(:_value) {}
|
65
|
+
|
66
|
+
subject { included.validate_width!(_value) }
|
67
|
+
|
68
|
+
context 'when the value is given' do
|
69
|
+
let(:_value) { 11 }
|
70
|
+
|
71
|
+
it { subject.must_equal(true) }
|
72
|
+
end
|
73
|
+
|
74
|
+
context 'when the value is not given' do
|
75
|
+
it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
|
76
|
+
end
|
77
|
+
end
|
78
|
+
|
79
|
+
end # Validator
|
80
|
+
|
81
|
+
end # Geometry
|
82
|
+
|
83
|
+
end # Vedeu
|
@@ -27,18 +27,13 @@ module Vedeu
|
|
27
27
|
it { instance.instance_variable_get('@options').must_equal(options) }
|
28
28
|
end
|
29
29
|
|
30
|
-
describe '#clear' do
|
31
|
-
subject { instance.clear }
|
32
|
-
|
33
|
-
it { subject.must_be_instance_of(String) }
|
34
|
-
it { subject.must_equal('') }
|
35
|
-
end
|
36
|
-
|
37
30
|
describe '#render' do
|
38
31
|
let(:_time) { Time.new(2015, 4, 12, 20, 05, 00, "+01:00") }
|
39
32
|
|
40
33
|
subject { instance.render(output) }
|
41
34
|
|
35
|
+
it { instance.must_respond_to(:clear) }
|
36
|
+
|
42
37
|
# it { subject.must_be_instance_of(String) }
|
43
38
|
|
44
39
|
context 'when the filename option is not set' do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
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.45
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Gavin Laking
|
@@ -413,6 +413,7 @@ files:
|
|
413
413
|
- lib/vedeu/geometry/null.rb
|
414
414
|
- lib/vedeu/geometry/position.rb
|
415
415
|
- lib/vedeu/geometry/repository.rb
|
416
|
+
- lib/vedeu/geometry/validator.rb
|
416
417
|
- lib/vedeu/geometry/vertical_alignment.rb
|
417
418
|
- lib/vedeu/geometry/x_dimension.rb
|
418
419
|
- lib/vedeu/geometry/y_dimension.rb
|
@@ -586,6 +587,7 @@ files:
|
|
586
587
|
- test/lib/vedeu/geometry/null_test.rb
|
587
588
|
- test/lib/vedeu/geometry/position_test.rb
|
588
589
|
- test/lib/vedeu/geometry/repository_test.rb
|
590
|
+
- test/lib/vedeu/geometry/validator_test.rb
|
589
591
|
- test/lib/vedeu/geometry/vertical_alignment_test.rb
|
590
592
|
- test/lib/vedeu/geometry/x_dimension_test.rb
|
591
593
|
- test/lib/vedeu/geometry/y_dimension_test.rb
|
@@ -787,6 +789,7 @@ test_files:
|
|
787
789
|
- test/lib/vedeu/geometry/null_test.rb
|
788
790
|
- test/lib/vedeu/geometry/position_test.rb
|
789
791
|
- test/lib/vedeu/geometry/repository_test.rb
|
792
|
+
- test/lib/vedeu/geometry/validator_test.rb
|
790
793
|
- test/lib/vedeu/geometry/vertical_alignment_test.rb
|
791
794
|
- test/lib/vedeu/geometry/x_dimension_test.rb
|
792
795
|
- test/lib/vedeu/geometry/y_dimension_test.rb
|