vedeu 0.8.5 → 0.8.6
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/docs/dsl/by_method/geometry.md +25 -1
- data/docs/dsl/by_method/geometry/align.md +13 -1
- data/docs/events/by_name/refresh_border.md +6 -2
- data/docs/events/by_name/refresh_view.md +3 -0
- data/docs/events/by_name/refresh_view_content.md +3 -0
- data/integrations/expected/dsl_app_021.out +1 -1
- data/integrations/expected/dsl_app_022.out +1 -1
- data/integrations/test_runner.sh +2 -0
- data/lib/vedeu/application/application_view.rb +1 -2
- data/lib/vedeu/borders/dsl.rb +1 -2
- data/lib/vedeu/borders/refresh.rb +2 -4
- data/lib/vedeu/buffers/empty.rb +10 -8
- data/lib/vedeu/buffers/refresh.rb +4 -8
- data/lib/vedeu/buffers/view.rb +6 -6
- data/lib/vedeu/coercers/alignment.rb +1 -2
- data/lib/vedeu/coercers/colour_attributes.rb +1 -0
- data/lib/vedeu/coercers/horizontal_alignment.rb +1 -1
- data/lib/vedeu/coercers/vertical_alignment.rb +1 -1
- data/lib/vedeu/colours/translator.rb +1 -3
- data/lib/vedeu/common.rb +12 -4
- data/lib/vedeu/configuration/api.rb +3 -5
- data/lib/vedeu/configuration/configuration.rb +0 -2
- data/lib/vedeu/cursors/coordinate.rb +1 -2
- data/lib/vedeu/dsl/border.rb +2 -4
- data/lib/vedeu/dsl/geometry.rb +4 -31
- data/lib/vedeu/dsl/helpers/wordwrap.rb +1 -1
- data/lib/vedeu/dsl/view.rb +4 -3
- data/lib/vedeu/error.rb +17 -0
- data/lib/vedeu/geometries/dsl/dsl.rb +2 -19
- data/lib/vedeu/groups/refresh.rb +1 -2
- data/lib/vedeu/input/dsl.rb +2 -6
- data/lib/vedeu/input/mapper.rb +1 -2
- data/lib/vedeu/input/read.rb +1 -0
- data/lib/vedeu/interfaces/dsl.rb +1 -0
- data/lib/vedeu/menus/dsl.rb +1 -2
- data/lib/vedeu/models/page.rb +1 -0
- data/lib/vedeu/output/output.rb +35 -44
- data/lib/vedeu/renderers/html.rb +1 -10
- data/lib/vedeu/renderers/options.rb +16 -21
- data/lib/vedeu/renderers/terminal.rb +4 -0
- data/lib/vedeu/repositories/defaults.rb +1 -2
- data/lib/vedeu/repositories/repository.rb +2 -3
- data/lib/vedeu/runtime/router.rb +3 -6
- data/lib/vedeu/support/point.rb +11 -0
- data/lib/vedeu/templating/template.rb +1 -2
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu/views/chars.rb +1 -2
- data/lib/vedeu/views/lines.rb +1 -2
- data/lib/vedeu/views/streams.rb +1 -2
- data/lib/vedeu/views/view.rb +1 -2
- data/test/lib/vedeu/buffers/empty_test.rb +2 -2
- data/test/lib/vedeu/common_test.rb +22 -0
- data/test/lib/vedeu/output/output_test.rb +2 -2
- metadata +2 -2
data/lib/vedeu/dsl/view.rb
CHANGED
@@ -51,7 +51,7 @@ module Vedeu
|
|
51
51
|
# @param block [Proc] The directives you wish to send to this
|
52
52
|
# view.
|
53
53
|
# @macro raise_requires_block
|
54
|
-
# @
|
54
|
+
# @macro raise_missing_required
|
55
55
|
# @return [Vedeu::Views::Views<Vedeu::Views::View>]
|
56
56
|
# @todo More documentation required.
|
57
57
|
def view(name, &block)
|
@@ -82,8 +82,9 @@ module Vedeu
|
|
82
82
|
# use relative paths.
|
83
83
|
# @param object [Object] The object for which the values of
|
84
84
|
# template's variables can be obtained.
|
85
|
-
# @param options [Hash<Symbol => void>] See
|
86
|
-
#
|
85
|
+
# @param options [Hash<Symbol => void>] See
|
86
|
+
# {Vedeu::DSL::Wordwrap}
|
87
|
+
# @macro raise_missing_required
|
87
88
|
# @return [Vedeu::Views::Views<Vedeu::Views::View>]
|
88
89
|
def template_for(name, filename, object = nil, options = {})
|
89
90
|
fail Vedeu::Error::MissingRequired,
|
data/lib/vedeu/error.rb
CHANGED
@@ -45,6 +45,12 @@ module Vedeu
|
|
45
45
|
# Raised when Vedeu attempts to parse a view or interface and
|
46
46
|
# encounters a problem.
|
47
47
|
#
|
48
|
+
# @!macro [new] raise_invalid_syntax
|
49
|
+
# @raise [Vedeu::Error::InvalidSyntax] When the value given for
|
50
|
+
# an argument or parameter cannot be used because it is not
|
51
|
+
# valid for the use case, unsupported or the method expects a
|
52
|
+
# different type.
|
53
|
+
#
|
48
54
|
class InvalidSyntax < StandardError
|
49
55
|
|
50
56
|
end # InvalidSyntax
|
@@ -53,6 +59,11 @@ module Vedeu
|
|
53
59
|
# For example, when a name is not provided for a model when
|
54
60
|
# attempting to store it in a repository.
|
55
61
|
#
|
62
|
+
# @!macro [new] raise_missing_required
|
63
|
+
# @raise [Vedeu::Error::MissingRequired] When the required
|
64
|
+
# argument or parameter was given but without a meaningful or
|
65
|
+
# usable value (e.g. nil).
|
66
|
+
#
|
56
67
|
class MissingRequired < StandardError
|
57
68
|
|
58
69
|
end # MissingRequired
|
@@ -78,6 +89,12 @@ module Vedeu
|
|
78
89
|
#
|
79
90
|
# @see Vedeu::Colours::Translator
|
80
91
|
#
|
92
|
+
# @!macro [new] raise_not_implemented
|
93
|
+
# @raise [Vedeu::Error::NotImplemented] When a subclass of the
|
94
|
+
# current class actually implements the method. Usually an
|
95
|
+
# indicator that the subclass should be used instead of the
|
96
|
+
# current class.
|
97
|
+
#
|
81
98
|
class NotImplemented < StandardError
|
82
99
|
|
83
100
|
end # NotImplemented
|
@@ -83,6 +83,7 @@ module Vedeu
|
|
83
83
|
# Align the interface/view horizontally or vertically within
|
84
84
|
# the terminal.
|
85
85
|
#
|
86
|
+
# {include:file:docs/dsl/by_method/geometry/align.md}
|
86
87
|
# @param vertical [Symbol] One of :bottom, :middle, :none, :top.
|
87
88
|
# @param horizontal [Symbol] One of :center, :centre, :left,
|
88
89
|
# :none, :right.
|
@@ -92,13 +93,7 @@ module Vedeu
|
|
92
93
|
# @param height [Fixnum] The number of lines/rows tall; this is
|
93
94
|
# required when the given value for vertical is any value
|
94
95
|
# other than :none.
|
95
|
-
# @
|
96
|
-
# - When the vertical is not given.
|
97
|
-
# - When the horizontal is not given.
|
98
|
-
# - When the horizontal is given (and not :none) and the width
|
99
|
-
# is not given.
|
100
|
-
# - When the vertical is given (and not :none) and the height
|
101
|
-
# is not given.
|
96
|
+
# @macro raise_invalid_syntax
|
102
97
|
# @return [Vedeu::Geometries::Geometry]
|
103
98
|
def align(vertical: :none, horizontal: :none, width: nil, height: nil)
|
104
99
|
horizontal_alignment(horizontal, width)
|
@@ -149,8 +144,6 @@ module Vedeu
|
|
149
144
|
# default width of the terminal, this can be substituted for
|
150
145
|
# your own positive integer.
|
151
146
|
# @param height [Fixnum] The number of lines/rows.
|
152
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the height is not
|
153
|
-
# given.
|
154
147
|
# @return [Vedeu::Geometries::Geometry]
|
155
148
|
def align_bottom(height = nil)
|
156
149
|
vertical_alignment(:bottom, height)
|
@@ -178,8 +171,6 @@ module Vedeu
|
|
178
171
|
# default height of the terminal, this can be substituted for
|
179
172
|
# your own positive integer.
|
180
173
|
# @param width [Fixnum] The number of characters/columns.
|
181
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
182
|
-
# given.
|
183
174
|
# @return [Vedeu::Geometries::Geometry]
|
184
175
|
def align_centre(width = nil)
|
185
176
|
horizontal_alignment(:centre, width)
|
@@ -206,8 +197,6 @@ module Vedeu
|
|
206
197
|
# default height of the terminal, this can be substituted for
|
207
198
|
# your own positive integer.
|
208
199
|
# @param width [Fixnum] The number of characters/columns.
|
209
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
210
|
-
# given.
|
211
200
|
# @return [Vedeu::Geometries::Geometry]
|
212
201
|
def align_left(width = nil)
|
213
202
|
horizontal_alignment(:left, width)
|
@@ -234,8 +223,6 @@ module Vedeu
|
|
234
223
|
# default width of the terminal, this can be substituted for
|
235
224
|
# your own positive integer.
|
236
225
|
# @param height [Fixnum] The number of lines/rows.
|
237
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the height is not
|
238
|
-
# given.
|
239
226
|
# @return [Vedeu::Geometries::Geometry]
|
240
227
|
def align_middle(height = nil)
|
241
228
|
vertical_alignment(:middle, height)
|
@@ -261,8 +248,6 @@ module Vedeu
|
|
261
248
|
# default height of the terminal, this can be substituted for
|
262
249
|
# your own positive integer.
|
263
250
|
# @param width [Fixnum] The number of characters/columns.
|
264
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the width is not
|
265
|
-
# given.
|
266
251
|
# @return [Vedeu::Geometries::Geometry]
|
267
252
|
def align_right(width = nil)
|
268
253
|
horizontal_alignment(:right, width)
|
@@ -289,8 +274,6 @@ module Vedeu
|
|
289
274
|
# default width of the terminal, this can be substituted for
|
290
275
|
# your own positive integer.
|
291
276
|
# @param height [Fixnum] The number of lines/rows.
|
292
|
-
# @raise [Vedeu::Error::InvalidSyntax] When the height is not
|
293
|
-
# given.
|
294
277
|
# @return [Vedeu::Geometries::Geometry]
|
295
278
|
def align_top(height = nil)
|
296
279
|
vertical_alignment(:top, height)
|
data/lib/vedeu/groups/refresh.rb
CHANGED
data/lib/vedeu/input/dsl.rb
CHANGED
@@ -61,8 +61,7 @@ module Vedeu
|
|
61
61
|
# this keymap relates to.
|
62
62
|
# @param block [Proc]
|
63
63
|
# @macro raise_requires_block
|
64
|
-
# @
|
65
|
-
# given.
|
64
|
+
# @macro raise_missing_required
|
66
65
|
# @return [Vedeu::Input::Keymap]
|
67
66
|
def self.keymap(name, &block)
|
68
67
|
fail Vedeu::Error::MissingRequired unless name
|
@@ -83,10 +82,7 @@ module Vedeu
|
|
83
82
|
# defined, then the extras are treated as aliases.
|
84
83
|
# @param block [Proc] The action to perform when this key is
|
85
84
|
# pressed. Can be a method call or event triggered.
|
86
|
-
# @
|
87
|
-
# When the required block is not given, the values parameter
|
88
|
-
# is undefined, or when processing the collection, a member
|
89
|
-
# is undefined.
|
85
|
+
# @macro raise_invalid_syntax
|
90
86
|
# @return [Array] A collection containing the keypress(es).
|
91
87
|
def key(*values, &block)
|
92
88
|
fail Vedeu::Error::InvalidSyntax,
|
data/lib/vedeu/input/mapper.rb
CHANGED
@@ -27,8 +27,7 @@ module Vedeu
|
|
27
27
|
|
28
28
|
# @param key [String|Symbol] The keypress.
|
29
29
|
# @param name [String|Symbol] The keymap name.
|
30
|
-
# @
|
31
|
-
# params are missing.
|
30
|
+
# @macro raise_missing_required
|
32
31
|
# @return [Boolean]
|
33
32
|
def registered?(key = nil, name = nil)
|
34
33
|
fail Vedeu::Error::MissingRequired,
|
data/lib/vedeu/input/read.rb
CHANGED
data/lib/vedeu/interfaces/dsl.rb
CHANGED
@@ -35,6 +35,7 @@ module Vedeu
|
|
35
35
|
# @param block [Proc] A set of attributes which define the
|
36
36
|
# features of the interface.
|
37
37
|
# @macro raise_requires_block
|
38
|
+
# @macro raise_missing_required
|
38
39
|
# @return [Vedeu::Interfaces::Interface]
|
39
40
|
# @todo More documentation required.
|
40
41
|
def interface(name, &block)
|
data/lib/vedeu/menus/dsl.rb
CHANGED
@@ -35,8 +35,7 @@ module Vedeu
|
|
35
35
|
# end
|
36
36
|
#
|
37
37
|
# @macro raise_requires_block
|
38
|
-
# @
|
39
|
-
# given.
|
38
|
+
# @macro raise_missing_required
|
40
39
|
# @return [API::Menu]
|
41
40
|
def menu(name, &block)
|
42
41
|
fail Vedeu::Error::MissingRequired unless name
|
data/lib/vedeu/models/page.rb
CHANGED
data/lib/vedeu/output/output.rb
CHANGED
@@ -11,61 +11,59 @@ module Vedeu
|
|
11
11
|
#
|
12
12
|
class Output
|
13
13
|
|
14
|
-
|
15
|
-
# @return [Array]
|
16
|
-
def self.buffer_update(output)
|
17
|
-
return nil if output.nil?
|
14
|
+
include Vedeu::Common
|
18
15
|
|
19
|
-
|
20
|
-
end
|
21
|
-
|
22
|
-
# @param output (see #output)
|
23
|
-
# @return [Array]
|
24
|
-
def self.buffer_write(output)
|
25
|
-
return nil if output.nil?
|
16
|
+
class << self
|
26
17
|
|
27
|
-
|
28
|
-
|
18
|
+
# @param (see #output)
|
19
|
+
# @return (see #buffer_update)
|
20
|
+
def buffer_update(output)
|
21
|
+
new(output).buffer_update
|
22
|
+
end
|
29
23
|
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
24
|
+
# @param (see #output)
|
25
|
+
# @return (see #buffer_write)
|
26
|
+
def buffer_write(output)
|
27
|
+
new(output).buffer_write
|
28
|
+
end
|
34
29
|
|
35
|
-
|
36
|
-
|
30
|
+
# @param (see #output)
|
31
|
+
# @return (see #direct_write)
|
32
|
+
def direct_write(output)
|
33
|
+
new(output).direct_write
|
34
|
+
end
|
37
35
|
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
36
|
+
# Writes output to the defined renderers.
|
37
|
+
#
|
38
|
+
# @param (see #output)
|
39
|
+
# @return (see #render_output)
|
40
|
+
def render_output(output)
|
41
|
+
new(output).render_output
|
42
|
+
end
|
44
43
|
|
45
|
-
|
46
|
-
end
|
44
|
+
end # Eigenclass
|
47
45
|
|
48
46
|
# Return a new instance of Vedeu::Output::Output.
|
49
47
|
#
|
50
|
-
# @param
|
48
|
+
# @param (see #output)
|
51
49
|
# @return [Vedeu::Output::Output]
|
52
50
|
def initialize(output)
|
53
51
|
@output = output
|
54
52
|
end
|
55
53
|
|
56
|
-
# @return
|
54
|
+
# @return (see #render_output)
|
57
55
|
def buffer_update
|
58
|
-
Vedeu::Buffers::Terminal.update(output)
|
56
|
+
Vedeu::Buffers::Terminal.update(output) if present?(output)
|
59
57
|
end
|
60
58
|
|
61
|
-
# @return
|
59
|
+
# @return (see #render_output)
|
62
60
|
def buffer_write
|
63
|
-
Vedeu::Buffers::Terminal.write(output)
|
61
|
+
Vedeu::Buffers::Terminal.write(output) if present?(output)
|
64
62
|
end
|
65
63
|
|
66
|
-
# @return
|
64
|
+
# @return (see #render_output)
|
67
65
|
def direct_write
|
68
|
-
Vedeu::Terminal.output(output.to_s)
|
66
|
+
Vedeu::Terminal.output(output.to_s) if present?(output)
|
69
67
|
end
|
70
68
|
|
71
69
|
# Send the view to the renderers. If the output is a
|
@@ -75,9 +73,9 @@ module Vedeu
|
|
75
73
|
# because escape sequences only make sense to the terminal and
|
76
74
|
# not other renderers.
|
77
75
|
#
|
78
|
-
# @return [Array
|
76
|
+
# @return [Array<String>|String|NilClass]
|
79
77
|
def render_output
|
80
|
-
if
|
78
|
+
if escape?(output)
|
81
79
|
direct_write
|
82
80
|
|
83
81
|
else
|
@@ -93,13 +91,6 @@ module Vedeu
|
|
93
91
|
# NilClass|Vedeu::Cells::Escape|Vedeu::Cells::Cursor]
|
94
92
|
attr_reader :output
|
95
93
|
|
96
|
-
private
|
97
|
-
|
98
|
-
# @return [Boolean]
|
99
|
-
def escape_sequence?
|
100
|
-
output.is_a?(Vedeu::Cells::Escape) || output.is_a?(Vedeu::Cells::Cursor)
|
101
|
-
end
|
102
|
-
|
103
94
|
end # Output
|
104
95
|
|
105
96
|
end # Output
|
@@ -113,7 +104,7 @@ module Vedeu
|
|
113
104
|
# Vedeu.render_output(output)
|
114
105
|
#
|
115
106
|
# @!method render_output
|
116
|
-
# @return
|
107
|
+
# @return (see Vedeu::Output::Output#render_output)
|
117
108
|
def_delegators Vedeu::Output::Output,
|
118
109
|
:buffer_update,
|
119
110
|
:buffer_write,
|
data/lib/vedeu/renderers/html.rb
CHANGED
@@ -41,18 +41,9 @@ module Vedeu
|
|
41
41
|
end
|
42
42
|
end
|
43
43
|
|
44
|
-
# Returns a boolean indicating whether the output is a
|
45
|
-
# {Vedeu::Cells::Escape}. If it is, it won't be rendered in
|
46
|
-
# HTML.
|
47
|
-
#
|
48
|
-
# @return [Boolean]
|
49
|
-
def escape?
|
50
|
-
output.is_a?(Vedeu::Cells::Escape) || output.is_a?(Vedeu::Cells::Cursor)
|
51
|
-
end
|
52
|
-
|
53
44
|
# @return [Boolean]
|
54
45
|
def valid?
|
55
|
-
return false if string?(output) || escape?
|
46
|
+
return false if string?(output) || escape?(output)
|
56
47
|
|
57
48
|
true
|
58
49
|
end
|
@@ -17,6 +17,20 @@ module Vedeu
|
|
17
17
|
# Returns a new instance of the class including this module.
|
18
18
|
#
|
19
19
|
# @param opts [Hash]
|
20
|
+
# @option opts content [String] Defaults to an empty string.
|
21
|
+
# @option opts end_tag [String] Defaults to '</td>'.
|
22
|
+
# @option opts end_row_tag [String] Defaults to '</tr>'.
|
23
|
+
# @option opts filename [String] Provide a filename for the
|
24
|
+
# output. Defaults to 'out'.
|
25
|
+
# @option opts start_tag [String] Defaults to '<td' (note the
|
26
|
+
# end of the tag is missing, this is so that inline styles can
|
27
|
+
# be added later).
|
28
|
+
# @option opts start_row_tag [String] Defaults to '<tr>'.
|
29
|
+
# @option opts template [String]
|
30
|
+
# @option opts timestamp [Boolean] Append a timestamp to the
|
31
|
+
# filename.
|
32
|
+
# @option opts write_file [Boolean] Whether to write the file
|
33
|
+
# to the given filename.
|
20
34
|
# @return [void]
|
21
35
|
def initialize(opts = {})
|
22
36
|
@options = defaults.merge!(opts || {})
|
@@ -28,7 +42,6 @@ module Vedeu
|
|
28
42
|
end
|
29
43
|
|
30
44
|
# @param output [Vedeu::Models::Page]
|
31
|
-
# @param opts [Hash]
|
32
45
|
# @return [void]
|
33
46
|
def render(output = '')
|
34
47
|
options.merge!(output: output)
|
@@ -36,9 +49,7 @@ module Vedeu
|
|
36
49
|
write
|
37
50
|
end
|
38
51
|
|
39
|
-
# @
|
40
|
-
# must implement this method.
|
41
|
-
# @return [Vedeu::Error::NotImplemented]
|
52
|
+
# @macro raise_not_implemented
|
42
53
|
def write
|
43
54
|
fail Vedeu::Error::NotImplemented, 'Including classes implement this.'
|
44
55
|
end
|
@@ -66,29 +77,13 @@ module Vedeu
|
|
66
77
|
end
|
67
78
|
end
|
68
79
|
|
69
|
-
# @
|
80
|
+
# @macro raise_not_implemented
|
70
81
|
def content
|
71
82
|
fail Vedeu::Error::NotImplemented, 'Including classes implement this.'
|
72
83
|
end
|
73
84
|
|
74
85
|
# The default values for a new instance of this class.
|
75
86
|
#
|
76
|
-
# @param options [Hash]
|
77
|
-
# @option options content [String] Defaults to an empty string.
|
78
|
-
# @option options end_tag [String] Defaults to '</td>'.
|
79
|
-
# @option options end_row_tag [String] Defaults to '</tr>'.
|
80
|
-
# @option options filename [String] Provide a filename for the
|
81
|
-
# output. Defaults to 'out'.
|
82
|
-
# @option options start_tag [String] Defaults to '<td' (note the
|
83
|
-
# end of the tag is missing, this is so that inline styles can
|
84
|
-
# be added later).
|
85
|
-
# @option options start_row_tag [String] Defaults to '<tr>'.
|
86
|
-
# @option options template [String]
|
87
|
-
# @option options timestamp [Boolean] Append a timestamp to the
|
88
|
-
# filename.
|
89
|
-
# @option options write_file [Boolean] Whether to write the file
|
90
|
-
# to the given filename.
|
91
|
-
#
|
92
87
|
# @return [Hash<Symbol => void>]
|
93
88
|
def defaults
|
94
89
|
{
|
@@ -38,8 +38,7 @@ module Vedeu
|
|
38
38
|
end
|
39
39
|
|
40
40
|
# @param attributes [Hash]
|
41
|
-
# @
|
42
|
-
# param is not a Hash.
|
41
|
+
# @macro raise_invalid_syntax
|
43
42
|
# @return [Hash]
|
44
43
|
def validate(attributes)
|
45
44
|
fail Vedeu::Error::InvalidSyntax,
|