vedeu 0.6.35 → 0.6.36
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/.codeclimate.yml +3 -3
- data/examples/dsl_alignment.rb +162 -0
- data/examples/{demo_groups.rb → dsl_demo_groups.rb} +0 -0
- data/examples/{hello_worlds.rb → dsl_hello_worlds.rb} +0 -0
- data/examples/{alignment.rb → dsl_horizontal_alignment.rb} +13 -25
- data/examples/dsl_vertical_alignment.rb +183 -0
- data/lib/vedeu/geometry/alignment.rb +14 -25
- data/lib/vedeu/geometry/all.rb +4 -0
- data/lib/vedeu/geometry/area.rb +18 -17
- data/lib/vedeu/geometry/dimension.rb +61 -19
- data/lib/vedeu/geometry/dsl.rb +193 -13
- data/lib/vedeu/geometry/geometry.rb +58 -38
- data/lib/vedeu/geometry/horizontal_alignment.rb +25 -0
- data/lib/vedeu/geometry/vertical_alignment.rb +25 -0
- data/lib/vedeu/geometry/x_dimension.rb +33 -0
- data/lib/vedeu/geometry/y_dimension.rb +33 -0
- data/lib/vedeu/output/compressor.rb +9 -6
- data/lib/vedeu/output/renderers/file.rb +35 -11
- data/lib/vedeu/output/renderers/json.rb +2 -2
- data/lib/vedeu/version.rb +1 -1
- data/test/lib/vedeu/geometry/alignment_test.rb +4 -70
- data/test/lib/vedeu/geometry/area_test.rb +24 -22
- data/test/lib/vedeu/geometry/dimension_test.rb +97 -189
- data/test/lib/vedeu/geometry/dsl_test.rb +191 -24
- data/test/lib/vedeu/geometry/geometry_test.rb +31 -26
- data/test/lib/vedeu/geometry/horizontal_alignment_test.rb +61 -0
- data/test/lib/vedeu/geometry/vertical_alignment_test.rb +55 -0
- data/test/lib/vedeu/geometry/x_dimension_test.rb +74 -0
- data/test/lib/vedeu/geometry/y_dimension_test.rb +74 -0
- data/test/lib/vedeu/output/renderers/file_test.rb +6 -4
- metadata +19 -5
|
@@ -31,9 +31,13 @@ module Vedeu
|
|
|
31
31
|
:height,
|
|
32
32
|
:width
|
|
33
33
|
|
|
34
|
-
# @!attribute [rw]
|
|
34
|
+
# @!attribute [rw] horizontal_alignment
|
|
35
35
|
# @return [Symbol]
|
|
36
|
-
attr_accessor :
|
|
36
|
+
attr_accessor :horizontal_alignment
|
|
37
|
+
|
|
38
|
+
# @!attribute [rw] vertical_alignment
|
|
39
|
+
# @return [Symbol]
|
|
40
|
+
attr_accessor :vertical_alignment
|
|
37
41
|
|
|
38
42
|
# @!attribute [rw] centred
|
|
39
43
|
# @return [Boolean]
|
|
@@ -85,6 +89,8 @@ module Vedeu
|
|
|
85
89
|
# Returns a new instance of Vedeu::Geometry::Geometry.
|
|
86
90
|
#
|
|
87
91
|
# @param attributes [Hash]
|
|
92
|
+
# @option attributes horizontal_alignment [Symbol]
|
|
93
|
+
# @option attributes vertical_alignment [Symbol]
|
|
88
94
|
# @option attributes centred [Boolean]
|
|
89
95
|
# @option attributes maximised [Boolean]
|
|
90
96
|
# @option attributes height [Fixnum]
|
|
@@ -105,18 +111,19 @@ module Vedeu
|
|
|
105
111
|
# @return [Hash]
|
|
106
112
|
def attributes
|
|
107
113
|
{
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
maximised:
|
|
113
|
-
name:
|
|
114
|
-
repository:
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
114
|
+
client: @client,
|
|
115
|
+
centred: @centred,
|
|
116
|
+
height: height,
|
|
117
|
+
horizontal_alignment: @horizontal_alignment,
|
|
118
|
+
maximised: @maximised,
|
|
119
|
+
name: @name,
|
|
120
|
+
repository: @repository,
|
|
121
|
+
vertical_alignment: @vertical_alignment,
|
|
122
|
+
width: width,
|
|
123
|
+
x: x,
|
|
124
|
+
xn: xn,
|
|
125
|
+
y: y,
|
|
126
|
+
yn: yn,
|
|
120
127
|
}
|
|
121
128
|
end
|
|
122
129
|
|
|
@@ -227,15 +234,16 @@ module Vedeu
|
|
|
227
234
|
# @return [Hash<Symbol => Boolean, Fixnum>]
|
|
228
235
|
def area_attributes
|
|
229
236
|
{
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
maximised:
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
237
|
+
centred: @centred,
|
|
238
|
+
horizontal_alignment: @horizontal_alignment,
|
|
239
|
+
maximised: @maximised,
|
|
240
|
+
vertical_alignment: @vertical_alignment,
|
|
241
|
+
x: @x.is_a?(Proc) ? @x.call : @x,
|
|
242
|
+
xn: @xn.is_a?(Proc) ? @xn.call : @xn,
|
|
243
|
+
x_xn: @width.is_a?(Proc) ? @width.call : @width,
|
|
244
|
+
y: @y.is_a?(Proc) ? @y.call : @y,
|
|
245
|
+
yn: @yn.is_a?(Proc) ? @yn.call : @yn,
|
|
246
|
+
y_yn: @height.is_a?(Proc) ? @height.call : @height,
|
|
239
247
|
}
|
|
240
248
|
end
|
|
241
249
|
|
|
@@ -257,9 +265,10 @@ module Vedeu
|
|
|
257
265
|
# @option coordinates yn [Fixnum] The ending row/line position.
|
|
258
266
|
# @return [Hash<Symbol => Boolean, Fixnum>]
|
|
259
267
|
def move(coordinates = {})
|
|
260
|
-
attrs = attributes.merge!(
|
|
261
|
-
|
|
262
|
-
maximised:
|
|
268
|
+
attrs = attributes.merge!(centred: false,
|
|
269
|
+
horizontal_alignment: :none,
|
|
270
|
+
maximised: false,
|
|
271
|
+
vertical_alignment: :none)
|
|
263
272
|
.merge!(coordinates)
|
|
264
273
|
|
|
265
274
|
Vedeu::Geometry::Geometry.store(attrs)
|
|
@@ -270,21 +279,32 @@ module Vedeu
|
|
|
270
279
|
# @return [Hash]
|
|
271
280
|
def defaults
|
|
272
281
|
{
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
maximised:
|
|
278
|
-
name:
|
|
279
|
-
repository:
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
282
|
+
client: nil,
|
|
283
|
+
centred: false,
|
|
284
|
+
height: nil,
|
|
285
|
+
horizontal_alignment: default_horizontal_alignment,
|
|
286
|
+
maximised: false,
|
|
287
|
+
name: nil,
|
|
288
|
+
repository: Vedeu.geometries,
|
|
289
|
+
vertical_alignment: default_vertical_alignment,
|
|
290
|
+
width: nil,
|
|
291
|
+
x: nil,
|
|
292
|
+
xn: nil,
|
|
293
|
+
y: nil,
|
|
294
|
+
yn: nil,
|
|
285
295
|
}
|
|
286
296
|
end
|
|
287
297
|
|
|
298
|
+
# @return [Symbol]
|
|
299
|
+
def default_horizontal_alignment
|
|
300
|
+
Vedeu::Geometry::HorizontalAlignment.align(:none)
|
|
301
|
+
end
|
|
302
|
+
|
|
303
|
+
# @return [Symbol]
|
|
304
|
+
def default_vertical_alignment
|
|
305
|
+
Vedeu::Geometry::VerticalAlignment.align(:none)
|
|
306
|
+
end
|
|
307
|
+
|
|
288
308
|
end # Geometry
|
|
289
309
|
|
|
290
310
|
end # Geometry
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Geometry
|
|
4
|
+
|
|
5
|
+
# Provides the mechanism to align an interface/view horizontally
|
|
6
|
+
# within the available terminal space.
|
|
7
|
+
#
|
|
8
|
+
class HorizontalAlignment < Vedeu::Geometry::Alignment
|
|
9
|
+
|
|
10
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is not one
|
|
11
|
+
# of :bottom, :centre, :left, :middle, :right, :top.
|
|
12
|
+
# @return [Symbol]
|
|
13
|
+
def align
|
|
14
|
+
return value if valid?
|
|
15
|
+
|
|
16
|
+
fail Vedeu::Error::InvalidSyntax,
|
|
17
|
+
'No horizontal alignment value given. Valid values are :center, ' \
|
|
18
|
+
':centre, :left, :none, :right.'.freeze
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # HorizontalAlignment
|
|
22
|
+
|
|
23
|
+
end # Geometry
|
|
24
|
+
|
|
25
|
+
end # Vedeu
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Geometry
|
|
4
|
+
|
|
5
|
+
# Provides the mechanism to align an interface/view vertically
|
|
6
|
+
# within the available terminal space.
|
|
7
|
+
#
|
|
8
|
+
class VerticalAlignment < Vedeu::Geometry::Alignment
|
|
9
|
+
|
|
10
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value is not one
|
|
11
|
+
# of :bottom, :centre, :left, :middle, :right, :top.
|
|
12
|
+
# @return [Symbol]
|
|
13
|
+
def align
|
|
14
|
+
return value if valid?
|
|
15
|
+
|
|
16
|
+
fail Vedeu::Error::InvalidSyntax,
|
|
17
|
+
'No vertical alignment value given. Valid values are :bottom, ' \
|
|
18
|
+
':middle, :none, :top.'.freeze
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
end # VerticalAlignment
|
|
22
|
+
|
|
23
|
+
end # Geometry
|
|
24
|
+
|
|
25
|
+
end # Vedeu
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Geometry
|
|
4
|
+
|
|
5
|
+
# The X Dimension provides the width of an entity.
|
|
6
|
+
#
|
|
7
|
+
class XDimension < Vedeu::Geometry::Dimension
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @return [Symbol]
|
|
12
|
+
def alignment
|
|
13
|
+
horizontal_alignment
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @return [Hash<Symbol => NilClass,Boolean,Symbol>]
|
|
17
|
+
def defaults
|
|
18
|
+
super.merge!(
|
|
19
|
+
default: Vedeu.width,
|
|
20
|
+
horizontal_alignment: default_alignment,
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [Symbol]
|
|
25
|
+
def default_alignment
|
|
26
|
+
Vedeu::Geometry::HorizontalAlignment.align(:none)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end # XDimension
|
|
30
|
+
|
|
31
|
+
end # Geometry
|
|
32
|
+
|
|
33
|
+
end # Vedeu
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
module Vedeu
|
|
2
|
+
|
|
3
|
+
module Geometry
|
|
4
|
+
|
|
5
|
+
# The Y Dimension provides the height of an entity.
|
|
6
|
+
#
|
|
7
|
+
class YDimension < Vedeu::Geometry::Dimension
|
|
8
|
+
|
|
9
|
+
private
|
|
10
|
+
|
|
11
|
+
# @return [Symbol]
|
|
12
|
+
def alignment
|
|
13
|
+
vertical_alignment
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
# @return [Hash<Symbol => NilClass,Boolean,Symbol>]
|
|
17
|
+
def defaults
|
|
18
|
+
super.merge!(
|
|
19
|
+
default: Vedeu.height,
|
|
20
|
+
vertical_alignment: default_alignment,
|
|
21
|
+
)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
# @return [Symbol]
|
|
25
|
+
def default_alignment
|
|
26
|
+
Vedeu::Geometry::VerticalAlignment.align(:none)
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
end # YDimension
|
|
30
|
+
|
|
31
|
+
end # Geometry
|
|
32
|
+
|
|
33
|
+
end # Vedeu
|
|
@@ -13,18 +13,21 @@ module Vedeu
|
|
|
13
13
|
|
|
14
14
|
# @param (see #initialize)
|
|
15
15
|
# @return [String]
|
|
16
|
-
def self.render(output)
|
|
17
|
-
new(output).render
|
|
16
|
+
def self.render(output, options = {})
|
|
17
|
+
new(output, options).render
|
|
18
18
|
end
|
|
19
19
|
|
|
20
20
|
# Returns a new instance of Vedeu::Output::Compressor.
|
|
21
21
|
#
|
|
22
22
|
# @param output [Array<Array<Vedeu::Views::Char>>]
|
|
23
|
+
# @param options [Hash]
|
|
24
|
+
# @option options compression [Boolean]
|
|
23
25
|
# @return [Vedeu::Output::Compressor]
|
|
24
|
-
def initialize(output)
|
|
25
|
-
@output
|
|
26
|
-
@
|
|
27
|
-
@
|
|
26
|
+
def initialize(output, options = {})
|
|
27
|
+
@output = output
|
|
28
|
+
@options = options
|
|
29
|
+
@colour = ''
|
|
30
|
+
@style = ''
|
|
28
31
|
end
|
|
29
32
|
|
|
30
33
|
# @note
|
|
@@ -24,31 +24,54 @@ module Vedeu
|
|
|
24
24
|
|
|
25
25
|
# Render a cleared output.
|
|
26
26
|
#
|
|
27
|
+
# @param output [Vedeu::Models::Page]
|
|
28
|
+
# @param opts [Hash]
|
|
27
29
|
# @return [String]
|
|
28
|
-
def clear(output = '')
|
|
29
|
-
|
|
30
|
+
def clear(output = '', opts = {})
|
|
31
|
+
@options = options.merge!(opts)
|
|
32
|
+
|
|
33
|
+
::File.write(filename, out(output)) if write_file?
|
|
30
34
|
|
|
31
|
-
output
|
|
35
|
+
out(output)
|
|
32
36
|
end
|
|
33
37
|
|
|
34
38
|
# @param output [Vedeu::Models::Page]
|
|
39
|
+
# @param opts [Hash]
|
|
35
40
|
# @return [String]
|
|
36
|
-
def render(output)
|
|
37
|
-
|
|
41
|
+
def render(output = '', opts = {})
|
|
42
|
+
@options = options.merge!(opts)
|
|
43
|
+
|
|
44
|
+
::File.write(filename, out(output)) if write_file?
|
|
38
45
|
|
|
39
|
-
output
|
|
46
|
+
out(output)
|
|
40
47
|
end
|
|
41
48
|
|
|
42
49
|
private
|
|
43
50
|
|
|
51
|
+
def out(output)
|
|
52
|
+
if compress?
|
|
53
|
+
Vedeu::Output::Compressor.render(output, options)
|
|
54
|
+
|
|
55
|
+
else
|
|
56
|
+
output
|
|
57
|
+
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
|
|
44
61
|
# @return [String]
|
|
45
62
|
def filename
|
|
46
|
-
options[:filename] +
|
|
63
|
+
options[:filename] + timestamp
|
|
47
64
|
end
|
|
48
65
|
|
|
49
66
|
# @return [Float]
|
|
50
67
|
def timestamp
|
|
51
|
-
|
|
68
|
+
if options[:timestamp]
|
|
69
|
+
"_#{Time.now.to_f}".freeze
|
|
70
|
+
|
|
71
|
+
else
|
|
72
|
+
''.freeze
|
|
73
|
+
|
|
74
|
+
end
|
|
52
75
|
end
|
|
53
76
|
|
|
54
77
|
# @return [Boolean]
|
|
@@ -61,9 +84,10 @@ module Vedeu
|
|
|
61
84
|
# @return [Hash]
|
|
62
85
|
def defaults
|
|
63
86
|
{
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
87
|
+
compression: Vedeu::Configuration.compression?,
|
|
88
|
+
filename: 'out',
|
|
89
|
+
timestamp: false,
|
|
90
|
+
write_file: true,
|
|
67
91
|
}
|
|
68
92
|
end
|
|
69
93
|
|
|
@@ -20,7 +20,7 @@ module Vedeu
|
|
|
20
20
|
def clear
|
|
21
21
|
json = parse({})
|
|
22
22
|
|
|
23
|
-
super(json)
|
|
23
|
+
super(json, { compression: false })
|
|
24
24
|
|
|
25
25
|
json
|
|
26
26
|
end
|
|
@@ -30,7 +30,7 @@ module Vedeu
|
|
|
30
30
|
def render(output)
|
|
31
31
|
json = parse(output)
|
|
32
32
|
|
|
33
|
-
super(json)
|
|
33
|
+
super(json, { compression: false })
|
|
34
34
|
|
|
35
35
|
json
|
|
36
36
|
end
|
data/lib/vedeu/version.rb
CHANGED
|
@@ -18,79 +18,13 @@ module Vedeu
|
|
|
18
18
|
describe '.align' do
|
|
19
19
|
subject { described.align(_value) }
|
|
20
20
|
|
|
21
|
-
|
|
22
|
-
it { subject.must_equal(:none) }
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
context 'when the value is not a Symbol' do
|
|
26
|
-
let(:_value) { 'invalid' }
|
|
27
|
-
|
|
28
|
-
it { subject.must_equal(:none) }
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
context 'when the value is :center' do
|
|
32
|
-
let(:_value) { :center }
|
|
33
|
-
|
|
34
|
-
it { subject.must_equal(:centre) }
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
context 'when the value is :centre' do
|
|
38
|
-
let(:_value) { :centre }
|
|
39
|
-
|
|
40
|
-
it { subject.must_equal(:centre) }
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
context 'when the value is :left' do
|
|
44
|
-
let(:_value) { :left }
|
|
45
|
-
|
|
46
|
-
it { subject.must_equal(:left) }
|
|
47
|
-
end
|
|
48
|
-
|
|
49
|
-
context 'when the value is :right' do
|
|
50
|
-
let(:_value) { :right }
|
|
51
|
-
|
|
52
|
-
it { subject.must_equal(:right) }
|
|
53
|
-
end
|
|
54
|
-
|
|
55
|
-
context 'when the value is :alignment' do
|
|
56
|
-
let(:_value) { :alignment }
|
|
57
|
-
|
|
58
|
-
it { subject.must_equal(:none) }
|
|
59
|
-
end
|
|
60
|
-
|
|
61
|
-
context 'when the value is :align_center' do
|
|
62
|
-
let(:_value) { :align_center }
|
|
63
|
-
|
|
64
|
-
it { subject.must_equal(:centre) }
|
|
65
|
-
end
|
|
66
|
-
|
|
67
|
-
context 'when the value is :align_centre' do
|
|
68
|
-
let(:_value) { :align_centre }
|
|
69
|
-
|
|
70
|
-
it { subject.must_equal(:centre) }
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
context 'when the value is :align_left' do
|
|
74
|
-
let(:_value) { :align_left }
|
|
75
|
-
|
|
76
|
-
it { subject.must_equal(:left) }
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
context 'when the value is :align_right' do
|
|
80
|
-
let(:_value) { :align_right }
|
|
81
|
-
|
|
82
|
-
it { subject.must_equal(:right) }
|
|
83
|
-
end
|
|
84
|
-
|
|
85
|
-
context 'when the value is :align_invalid' do
|
|
86
|
-
let(:_value) { :align_invalid }
|
|
87
|
-
|
|
88
|
-
it { proc { subject }.must_raise(Vedeu::Error::InvalidSyntax) }
|
|
89
|
-
end
|
|
21
|
+
it { proc { subject }.must_raise(Vedeu::Error::NotImplemented) }
|
|
90
22
|
end
|
|
91
23
|
|
|
92
24
|
describe '#align' do
|
|
93
|
-
|
|
25
|
+
subject { instance.align }
|
|
26
|
+
|
|
27
|
+
it { proc { subject }.must_raise(Vedeu::Error::NotImplemented) }
|
|
94
28
|
end
|
|
95
29
|
|
|
96
30
|
end # Alignment
|