vedeu 0.7.4 → 0.8.0
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/docs/api.md +5 -1
- data/docs/borders.md +2 -26
- data/docs/dsl.md +4 -4
- data/docs/dsl_elements.md +100 -0
- data/docs/events/by_name/action.md +3 -0
- data/docs/events/by_name/cursor_hide.md +3 -0
- data/docs/events/by_name/cursor_reset.md +3 -0
- data/docs/events/by_name/cursor_show.md +3 -0
- data/docs/events/by_name/geometry_down.md +3 -0
- data/docs/events/by_name/geometry_left.md +3 -0
- data/docs/events/by_name/geometry_right.md +3 -0
- data/docs/events/by_name/geometry_up.md +3 -0
- data/docs/events/by_name/hide_view.md +3 -0
- data/docs/events/by_name/set_border_caption.md +13 -0
- data/docs/events/by_name/set_border_title.md +13 -0
- data/docs/events/by_name/show_view.md +3 -0
- data/docs/events/by_name/standalone.md +3 -0
- data/docs/events/by_name/toggle_view.md +3 -0
- data/docs/events/by_name/view_down.md +4 -0
- data/docs/events/by_name/view_left.md +4 -0
- data/docs/events/by_name/view_right.md +4 -0
- data/docs/events/by_name/view_up.md +4 -0
- data/examples/views/empty_template.rb +46 -0
- data/examples/views/expected/line.out +1 -0
- data/examples/views/expected/lines.out +1 -0
- data/examples/views/expected/lines_alignment.out +1 -0
- data/examples/views/line.rb +220 -0
- data/examples/views/lines.rb +281 -0
- data/examples/views/lines_alignment.rb +231 -0
- data/examples/views/lines_line_stream.rb +99 -0
- data/examples/views/lines_line_streams.rb +73 -0
- data/examples/views/lines_line_streams_stream.rb +83 -0
- data/examples/views/lines_line_streams_stream_stream.rb +53 -0
- data/examples/views/lines_streams.rb +50 -0
- data/examples/views/lines_streams_stream.rb +51 -0
- data/examples/views/runner.sh +27 -0
- data/lib/vedeu/all.rb +6 -2
- data/lib/vedeu/application/controller.rb +1 -1
- data/lib/vedeu/boolean.rb +35 -0
- data/lib/vedeu/borders/border.rb +3 -3
- data/lib/vedeu/borders/caption.rb +1 -1
- data/lib/vedeu/borders/dsl.rb +1 -20
- data/lib/vedeu/borders/title.rb +6 -8
- data/lib/vedeu/buffers/buffer.rb +2 -2
- data/lib/vedeu/buffers/refresh.rb +1 -1
- data/lib/vedeu/cells/border.rb +0 -11
- data/lib/vedeu/cells/empty.rb +4 -4
- data/lib/vedeu/{geometries/alignment → coercers}/alignment.rb +50 -53
- data/lib/vedeu/coercers/all.rb +16 -0
- data/lib/vedeu/coercers/colour.rb +78 -0
- data/lib/vedeu/coercers/colour_attributes.rb +122 -0
- data/lib/vedeu/coercers/horizontal_alignment.rb +28 -0
- data/lib/vedeu/coercers/vertical_alignment.rb +27 -0
- data/lib/vedeu/colours/all.rb +1 -0
- data/lib/vedeu/colours/background.rb +13 -2
- data/lib/vedeu/colours/colour.rb +16 -31
- data/lib/vedeu/colours/foreground.rb +13 -2
- data/lib/vedeu/colours/translator.rb +21 -59
- data/lib/vedeu/colours/validator.rb +84 -0
- data/lib/vedeu/common.rb +52 -0
- data/lib/vedeu/configuration/api.rb +4 -10
- data/lib/vedeu/configuration/configuration.rb +4 -4
- data/lib/vedeu/cursors/coordinate.rb +1 -1
- data/lib/vedeu/cursors/cursor.rb +1 -1
- data/lib/vedeu/cursors/dsl.rb +1 -28
- data/lib/vedeu/dsl/all.rb +7 -7
- data/lib/vedeu/dsl/attributes.rb +224 -0
- data/lib/vedeu/dsl/border.rb +127 -0
- data/lib/vedeu/dsl/cursors.rb +44 -0
- data/lib/vedeu/dsl/dsl.rb +9 -0
- data/lib/vedeu/dsl/elements.rb +335 -0
- data/lib/vedeu/dsl/geometry.rb +113 -0
- data/lib/vedeu/dsl/string/align.rb +127 -0
- data/lib/vedeu/dsl/string/all.rb +14 -0
- data/lib/vedeu/dsl/string/text.rb +107 -0
- data/lib/vedeu/dsl/string/truncate.rb +111 -0
- data/lib/vedeu/{output → dsl/string}/wordwrap.rb +10 -6
- data/lib/vedeu/dsl/view.rb +124 -248
- data/lib/vedeu/dsl/views.rb +244 -0
- data/lib/vedeu/editor/cursor.rb +1 -1
- data/lib/vedeu/editor/delete.rb +3 -1
- data/lib/vedeu/editor/insert.rb +22 -6
- data/lib/vedeu/editor/line.rb +15 -9
- data/lib/vedeu/editor/lines.rb +27 -18
- data/lib/vedeu/esc/actions.rb +73 -26
- data/lib/vedeu/esc/all.rb +2 -0
- data/lib/vedeu/esc/background.rb +219 -0
- data/lib/vedeu/esc/borders.rb +72 -26
- data/lib/vedeu/esc/colours.rb +26 -27
- data/lib/vedeu/esc/esc.rb +4 -4
- data/lib/vedeu/esc/foreground.rb +219 -0
- data/lib/vedeu/esc/mouse.rb +16 -13
- data/lib/vedeu/events/aliases.rb +2 -2
- data/lib/vedeu/events/event.rb +1 -1
- data/lib/vedeu/geometries/all.rb +0 -1
- data/lib/vedeu/geometries/area/dimension.rb +2 -2
- data/lib/vedeu/geometries/dsl/dsl.rb +3 -51
- data/lib/vedeu/geometries/dsl/validator.rb +4 -4
- data/lib/vedeu/geometries/geometry.rb +10 -10
- data/lib/vedeu/geometries/move.rb +4 -4
- data/lib/vedeu/groups/dsl.rb +1 -0
- data/lib/vedeu/groups/group.rb +1 -1
- data/lib/vedeu/input/all.rb +1 -0
- data/lib/vedeu/input/capture.rb +14 -10
- data/lib/vedeu/input/dsl.rb +20 -26
- data/lib/vedeu/input/key.rb +0 -6
- data/lib/vedeu/input/keymap.rb +4 -9
- data/lib/vedeu/input/keys.rb +13 -0
- data/lib/vedeu/input/mapper.rb +29 -14
- data/lib/vedeu/input/read.rb +4 -2
- data/lib/vedeu/interfaces/dsl.rb +23 -22
- data/lib/vedeu/interfaces/interface.rb +2 -2
- data/lib/vedeu/logging/debug.rb +33 -0
- data/lib/vedeu/logging/log.rb +42 -33
- data/lib/vedeu/menus/dsl.rb +7 -18
- data/lib/vedeu/menus/menu.rb +1 -1
- data/lib/vedeu/models/focus.rb +1 -1
- data/lib/vedeu/models/toggleable.rb +4 -4
- data/lib/vedeu/null/generic.rb +2 -2
- data/lib/vedeu/output/all.rb +0 -2
- data/lib/vedeu/output/compressor_cache.rb +1 -1
- data/lib/vedeu/output/output.rb +5 -20
- data/lib/vedeu/presentation/colour.rb +39 -7
- data/lib/vedeu/presentation/style.rb +25 -11
- data/lib/vedeu/renderers/html.rb +11 -11
- data/lib/vedeu/repositories/assemblage.rb +9 -0
- data/lib/vedeu/repositories/collection.rb +1 -0
- data/lib/vedeu/repositories/defaults.rb +4 -1
- data/lib/vedeu/repositories/model.rb +7 -37
- data/lib/vedeu/repositories/parent.rb +6 -6
- data/lib/vedeu/repositories/registerable.rb +16 -2
- data/lib/vedeu/repositories/repositories.rb +1 -1
- data/lib/vedeu/repositories/repository.rb +2 -12
- data/lib/vedeu/runtime/flags.rb +1 -1
- data/lib/vedeu/terminal/terminal.rb +7 -2
- data/lib/vedeu/version.rb +1 -1
- data/lib/vedeu/views/all.rb +4 -1
- data/lib/vedeu/views/char.rb +5 -4
- data/lib/vedeu/views/chars.rb +42 -0
- data/lib/vedeu/views/composition.rb +15 -30
- data/lib/vedeu/views/default_attributes.rb +74 -0
- data/lib/vedeu/views/html_char.rb +2 -2
- data/lib/vedeu/views/line.rb +27 -53
- data/lib/vedeu/views/lines.rb +31 -0
- data/lib/vedeu/views/stream.rb +31 -78
- data/lib/vedeu/views/streams.rb +42 -0
- data/lib/vedeu/views/value.rb +150 -0
- data/lib/vedeu/views/view.rb +32 -36
- data/lib/vedeu/views/{view_collection.rb → views.rb} +2 -2
- data/test/lib/vedeu/application/application_controller_test.rb +5 -0
- data/test/lib/vedeu/application/controller_test.rb +22 -28
- data/test/lib/vedeu/boolean_test.rb +57 -0
- data/test/lib/vedeu/borders/border_test.rb +130 -36
- data/test/lib/vedeu/borders/dsl_test.rb +63 -10
- data/test/lib/vedeu/borders/title_test.rb +16 -5
- data/test/lib/vedeu/buffers/buffer_test.rb +26 -10
- data/test/lib/vedeu/buffers/empty_test.rb +1 -1
- data/test/lib/vedeu/cells/border_test.rb +0 -6
- data/test/lib/vedeu/cells/clear_test.rb +2 -0
- data/test/lib/vedeu/cells/empty_test.rb +12 -2
- data/test/lib/vedeu/cells/escape_test.rb +7 -2
- data/test/lib/vedeu/{geometries/alignment → coercers}/alignment_test.rb +44 -19
- data/test/lib/vedeu/coercers/colour_attributes_test.rb +168 -0
- data/test/lib/vedeu/coercers/colour_test.rb +75 -0
- data/test/lib/vedeu/{geometries/alignment → coercers}/horizontal_alignment_test.rb +6 -6
- data/test/lib/vedeu/{geometries/alignment → coercers}/vertical_alignment_test.rb +6 -6
- data/test/lib/vedeu/colours/background_test.rb +17 -1
- data/test/lib/vedeu/colours/colour_test.rb +74 -2
- data/test/lib/vedeu/colours/foreground_test.rb +17 -1
- data/test/lib/vedeu/colours/repository_test.rb +1 -1
- data/test/lib/vedeu/colours/translator_test.rb +8 -1
- data/test/lib/vedeu/colours/validator_test.rb +60 -0
- data/test/lib/vedeu/common_test.rb +138 -0
- data/test/lib/vedeu/configuration/api_test.rb +96 -51
- data/test/lib/vedeu/cursors/coordinate_test.rb +58 -117
- data/test/lib/vedeu/cursors/cursor_test.rb +46 -17
- data/test/lib/vedeu/cursors/dsl_test.rb +19 -5
- data/test/lib/vedeu/distributed/client_test.rb +8 -3
- data/test/lib/vedeu/distributed/server_test.rb +8 -0
- data/test/lib/vedeu/distributed/test_application_test.rb +62 -19
- data/test/lib/vedeu/distributed/uri_test.rb +4 -2
- data/test/lib/vedeu/dsl/attributes_test.rb +212 -0
- data/test/lib/vedeu/dsl/border_test.rb +51 -0
- data/test/lib/vedeu/dsl/{lines_test.rb → cursors_test.rb} +2 -2
- data/test/lib/vedeu/dsl/dsl_test.rb +44 -0
- data/test/lib/vedeu/dsl/elements_test.rb +118 -0
- data/test/lib/vedeu/dsl/geometry_test.rb +35 -0
- data/test/lib/vedeu/dsl/presentation_test.rb +52 -11
- data/test/lib/vedeu/dsl/string/align_test.rb +147 -0
- data/test/lib/vedeu/dsl/string/text_test.rb +213 -0
- data/test/lib/vedeu/dsl/string/truncate_test.rb +97 -0
- data/test/lib/vedeu/{output → dsl/string}/wordwrap_test.rb +3 -3
- data/test/lib/vedeu/dsl/view_test.rb +30 -42
- data/test/lib/vedeu/dsl/views_test.rb +61 -0
- data/test/lib/vedeu/editor/cursor_test.rb +30 -12
- data/test/lib/vedeu/editor/document_test.rb +18 -10
- data/test/lib/vedeu/editor/line_test.rb +4 -1
- data/test/lib/vedeu/editor/lines_test.rb +11 -3
- data/test/lib/vedeu/esc/actions_test.rb +42 -4
- data/test/lib/vedeu/esc/background_test.rb +185 -0
- data/test/lib/vedeu/esc/borders_test.rb +37 -9
- data/test/lib/vedeu/esc/colours_test.rb +0 -59
- data/test/lib/vedeu/esc/foreground_test.rb +185 -0
- data/test/lib/vedeu/esc/mouse_test.rb +9 -4
- data/test/lib/vedeu/geometries/area/area_test.rb +34 -11
- data/test/lib/vedeu/geometries/dsl/dsl_test.rb +52 -61
- data/test/lib/vedeu/geometries/geometry_test.rb +62 -18
- data/test/lib/vedeu/geometries/position_test.rb +14 -7
- data/test/lib/vedeu/groups/dsl_test.rb +24 -15
- data/test/lib/vedeu/groups/group_test.rb +18 -8
- data/test/lib/vedeu/input/dsl_test.rb +33 -16
- data/test/lib/vedeu/input/key_test.rb +8 -1
- data/test/lib/vedeu/input/keymap_test.rb +4 -1
- data/test/lib/vedeu/input/keys_test.rb +16 -0
- data/test/lib/vedeu/interfaces/dsl_test.rb +24 -30
- data/test/lib/vedeu/interfaces/interface_test.rb +79 -24
- data/test/lib/vedeu/logging/ips_test.rb +10 -1
- data/test/lib/vedeu/menus/dsl_test.rb +24 -23
- data/test/lib/vedeu/menus/menu_test.rb +18 -8
- data/test/lib/vedeu/models/page_test.rb +5 -1
- data/test/lib/vedeu/models/row_test.rb +4 -0
- data/test/lib/vedeu/models/toggleable_test.rb +10 -6
- data/test/lib/vedeu/null/generic_test.rb +90 -1
- data/test/lib/vedeu/output/viewport_test.rb +11 -10
- data/test/lib/vedeu/plugins/plugin_test.rb +22 -9
- data/test/lib/vedeu/presentation/colour_test.rb +2 -1
- data/test/lib/vedeu/presentation/presentation_test.rb +13 -8
- data/test/lib/vedeu/presentation/style_test.rb +28 -13
- data/test/lib/vedeu/renderers/file_test.rb +4 -2
- data/test/lib/vedeu/renderers/options_test.rb +1 -1
- data/test/lib/vedeu/repositories/assemblage_test.rb +18 -0
- data/test/lib/vedeu/repositories/collection_test.rb +34 -10
- data/test/lib/vedeu/repositories/defaults_test.rb +6 -0
- data/test/lib/vedeu/repositories/model_test.rb +4 -13
- data/test/lib/vedeu/repositories/repository_test.rb +12 -5
- data/test/lib/vedeu/repositories/store_test.rb +9 -0
- data/test/lib/vedeu/runtime/flags_test.rb +6 -4
- data/test/lib/vedeu/runtime/launcher_test.rb +1 -1
- data/test/lib/vedeu/templating/helpers_test.rb +93 -65
- data/test/lib/vedeu/templating/view_template_test.rb +26 -26
- data/test/lib/vedeu/views/char_test.rb +36 -11
- data/test/lib/vedeu/views/chars_test.rb +71 -0
- data/test/lib/vedeu/views/composition_test.rb +17 -16
- data/test/lib/vedeu/views/default_attributes_test.rb +97 -0
- data/test/lib/vedeu/views/line_test.rb +20 -75
- data/test/lib/vedeu/views/lines_test.rb +47 -0
- data/test/lib/vedeu/views/stream_test.rb +38 -63
- data/test/lib/vedeu/views/streams_test.rb +9 -0
- data/test/lib/vedeu/views/value_test.rb +112 -0
- data/test/lib/vedeu/views/view_test.rb +67 -45
- data/test/lib/vedeu/views/views_test.rb +22 -0
- data/test/support/examples/material_colours_app.rb +2 -2
- data/test/support/helpers/model_test_class.rb +1 -0
- data/test/test_helper.rb +3 -1
- data/vedeu.gemspec +2 -2
- metadata +124 -58
- data/lib/vedeu/dsl/composition.rb +0 -150
- data/lib/vedeu/dsl/line.rb +0 -119
- data/lib/vedeu/dsl/lines.rb +0 -23
- data/lib/vedeu/dsl/shared.rb +0 -85
- data/lib/vedeu/dsl/stream.rb +0 -40
- data/lib/vedeu/dsl/streams.rb +0 -23
- data/lib/vedeu/dsl/text.rb +0 -98
- data/lib/vedeu/geometries/alignment/all.rb +0 -11
- data/lib/vedeu/geometries/alignment/horizontal_alignment.rb +0 -27
- data/lib/vedeu/geometries/alignment/vertical_alignment.rb +0 -27
- data/lib/vedeu/output/text.rb +0 -275
- data/test/lib/vedeu/dsl/composition_test.rb +0 -67
- data/test/lib/vedeu/dsl/line_test.rb +0 -85
- data/test/lib/vedeu/dsl/shared_test.rb +0 -66
- data/test/lib/vedeu/dsl/stream_test.rb +0 -30
- data/test/lib/vedeu/dsl/streams_test.rb +0 -13
- data/test/lib/vedeu/dsl/text_test.rb +0 -122
- data/test/lib/vedeu/output/text_test.rb +0 -156
- data/test/lib/vedeu/views/view_collection_test.rb +0 -13
@@ -0,0 +1,35 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
# Represent a boolean object.
|
4
|
+
#
|
5
|
+
# @api private
|
6
|
+
#
|
7
|
+
class Boolean
|
8
|
+
|
9
|
+
# @param value [void]
|
10
|
+
# @return [Vedeu::Boolean]
|
11
|
+
def initialize(value = nil)
|
12
|
+
@value = value
|
13
|
+
end
|
14
|
+
|
15
|
+
# @return [Boolean]
|
16
|
+
def false?
|
17
|
+
value.nil? || value == false
|
18
|
+
end
|
19
|
+
|
20
|
+
# @return [Boolean]
|
21
|
+
def true?
|
22
|
+
return false if false?
|
23
|
+
|
24
|
+
true
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
# @!attribute [r] value
|
30
|
+
# @return [void]
|
31
|
+
attr_reader :value
|
32
|
+
|
33
|
+
end # Boolean
|
34
|
+
|
35
|
+
end # Vedeu
|
data/lib/vedeu/borders/border.rb
CHANGED
@@ -296,13 +296,13 @@ module Vedeu
|
|
296
296
|
bottom_horizontal: nil,
|
297
297
|
bottom_left: nil,
|
298
298
|
bottom_right: nil,
|
299
|
-
caption: '',
|
299
|
+
caption: ''.freeze,
|
300
300
|
client: nil,
|
301
301
|
colour: nil,
|
302
302
|
enabled: false,
|
303
303
|
horizontal: Vedeu::EscapeSequences::Borders.horizontal,
|
304
304
|
left_vertical: nil,
|
305
|
-
name: '',
|
305
|
+
name: ''.freeze,
|
306
306
|
parent: nil,
|
307
307
|
repository: Vedeu.borders,
|
308
308
|
right_vertical: nil,
|
@@ -311,7 +311,7 @@ module Vedeu
|
|
311
311
|
show_right: true,
|
312
312
|
show_top: true,
|
313
313
|
style: nil,
|
314
|
-
title: '',
|
314
|
+
title: ''.freeze,
|
315
315
|
top_horizontal: nil,
|
316
316
|
top_left: nil,
|
317
317
|
top_right: nil,
|
data/lib/vedeu/borders/dsl.rb
CHANGED
@@ -7,29 +7,10 @@ module Vedeu
|
|
7
7
|
class DSL
|
8
8
|
|
9
9
|
include Vedeu::DSL
|
10
|
+
include Vedeu::DSL::Border
|
10
11
|
include Vedeu::DSL::Presentation
|
11
12
|
include Vedeu::DSL::Use
|
12
13
|
|
13
|
-
# Specify the border of an interface or view with a simple DSL.
|
14
|
-
#
|
15
|
-
# Vedeu.border :some_interface do
|
16
|
-
# # ...
|
17
|
-
# end
|
18
|
-
#
|
19
|
-
# @param name [String|Symbol] The name of the interface or view
|
20
|
-
# to which this border belongs.
|
21
|
-
# @param block [Proc]
|
22
|
-
# @raise [Vedeu::Error::MissingRequired|
|
23
|
-
# Vedeu::Error::RequiresBlock] When a name or block
|
24
|
-
# respectively are not given.
|
25
|
-
# @return [Vedeu::Borders::Border]
|
26
|
-
def self.border(name, &block)
|
27
|
-
fail Vedeu::Error::MissingRequired unless name
|
28
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
29
|
-
|
30
|
-
Vedeu::Borders::Border.build(enabled: true, name: name, &block).store
|
31
|
-
end
|
32
|
-
|
33
14
|
# Set the character to be used to draw the bottom left corner of
|
34
15
|
# the border.
|
35
16
|
#
|
data/lib/vedeu/borders/title.rb
CHANGED
@@ -67,7 +67,7 @@ module Vedeu
|
|
67
67
|
#
|
68
68
|
# @return [String]
|
69
69
|
def value
|
70
|
-
@value || ''
|
70
|
+
@value || ''.freeze
|
71
71
|
end
|
72
72
|
alias_method :title, :value
|
73
73
|
alias_method :caption, :value
|
@@ -89,10 +89,8 @@ module Vedeu
|
|
89
89
|
# @param x [Fixnum]
|
90
90
|
# @return [Hash<Symbol => void>]
|
91
91
|
def attributes(char, x)
|
92
|
-
|
93
|
-
|
94
|
-
@_attributes.merge!(position: Vedeu::Geometries::Position.new(y, x),
|
95
|
-
value: char)
|
92
|
+
border.attributes.merge(position: Vedeu::Geometries::Position.new(y, x),
|
93
|
+
value: char)
|
96
94
|
end
|
97
95
|
|
98
96
|
# @return [Vedeu::Borders::Border]
|
@@ -169,7 +167,7 @@ module Vedeu
|
|
169
167
|
#
|
170
168
|
# @return [String]
|
171
169
|
def truncate
|
172
|
-
|
170
|
+
value.chomp.slice(0...(width - 4))
|
173
171
|
end
|
174
172
|
|
175
173
|
# Return the size of the horizontal border given.
|
@@ -181,12 +179,12 @@ module Vedeu
|
|
181
179
|
|
182
180
|
# @return [Fixnum]
|
183
181
|
def x
|
184
|
-
|
182
|
+
geometry.bx + start_index
|
185
183
|
end
|
186
184
|
|
187
185
|
# @return [Fixnum]
|
188
186
|
def y
|
189
|
-
|
187
|
+
geometry.y
|
190
188
|
end
|
191
189
|
|
192
190
|
end # Title
|
data/lib/vedeu/buffers/buffer.rb
CHANGED
@@ -176,7 +176,7 @@ module Vedeu
|
|
176
176
|
{
|
177
177
|
back: nil,
|
178
178
|
front: nil,
|
179
|
-
name: '',
|
179
|
+
name: ''.freeze,
|
180
180
|
previous: nil,
|
181
181
|
repository: Vedeu.buffers,
|
182
182
|
}
|
@@ -192,7 +192,7 @@ module Vedeu
|
|
192
192
|
#
|
193
193
|
# @return [Boolean]
|
194
194
|
def swap
|
195
|
-
Vedeu.log(type: :
|
195
|
+
Vedeu.log(type: :buffer, message: "Buffer swapping: '#{name}'".freeze)
|
196
196
|
|
197
197
|
@previous = front
|
198
198
|
@front = back
|
data/lib/vedeu/cells/border.rb
CHANGED
@@ -40,17 +40,6 @@ module Vedeu
|
|
40
40
|
self
|
41
41
|
end
|
42
42
|
|
43
|
-
# @return [Vedeu::Borders::Border|Vedeu::Interfaces::Interface]
|
44
|
-
def named_parent
|
45
|
-
if border
|
46
|
-
border
|
47
|
-
|
48
|
-
elsif interface
|
49
|
-
interface
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
43
|
# @return [String]
|
55
44
|
def value
|
56
45
|
return '' unless present?(@value)
|
data/lib/vedeu/cells/empty.rb
CHANGED
@@ -60,7 +60,7 @@ module Vedeu
|
|
60
60
|
# @param _options [Hash] Ignored.
|
61
61
|
# @return [String]
|
62
62
|
def to_html(_options = {})
|
63
|
-
''
|
63
|
+
''.freeze
|
64
64
|
end
|
65
65
|
|
66
66
|
# @return [String]
|
@@ -75,10 +75,10 @@ module Vedeu
|
|
75
75
|
def defaults
|
76
76
|
{
|
77
77
|
colour: {},
|
78
|
-
name: '',
|
78
|
+
name: ''.freeze,
|
79
79
|
position: nil,
|
80
|
-
style: '',
|
81
|
-
value: '',
|
80
|
+
style: ''.freeze,
|
81
|
+
value: ''.freeze,
|
82
82
|
}
|
83
83
|
end
|
84
84
|
|
@@ -1,52 +1,51 @@
|
|
1
1
|
module Vedeu
|
2
2
|
|
3
|
-
module
|
3
|
+
module Coercers
|
4
4
|
|
5
5
|
# The subclasses of this class, HorizontalAlignment and
|
6
|
-
# VerticalAlignment provide the mechanism to
|
7
|
-
#
|
8
|
-
# space.
|
6
|
+
# VerticalAlignment provide the mechanism to validate a horizontal
|
7
|
+
# or vertical alignment value.
|
9
8
|
#
|
10
|
-
# @see Vedeu::
|
11
|
-
# @see Vedeu::
|
9
|
+
# @see Vedeu::Coercers::HorizontalAlignment
|
10
|
+
# @see Vedeu::Coercers::VerticalAlignment
|
12
11
|
#
|
13
12
|
# @api private
|
14
13
|
#
|
15
14
|
class Alignment
|
16
15
|
|
17
|
-
|
18
|
-
# @return (see #align)
|
19
|
-
def self.align(value = nil)
|
20
|
-
new(value).align
|
21
|
-
end
|
22
|
-
|
23
|
-
# @param value [NilClass|Symbol|Vedeu::Geometries::Alignment]
|
24
|
-
# @return [Vedeu::Geometries::Alignment]
|
25
|
-
def self.coerce(value = nil)
|
26
|
-
if value.is_a?(self)
|
27
|
-
value
|
16
|
+
include Vedeu::Common
|
28
17
|
|
29
|
-
|
30
|
-
|
18
|
+
# @!attribute [r] value
|
19
|
+
# @return [Symbol]
|
20
|
+
attr_reader :value
|
31
21
|
|
32
|
-
|
33
|
-
|
22
|
+
# @param value [Symbol|Vedeu::Coercers::Alignment]
|
23
|
+
# @return [Vedeu::Coercers::Alignment]
|
24
|
+
def self.coerce(value = :none)
|
25
|
+
return value if value.is_a?(self)
|
34
26
|
|
35
|
-
|
27
|
+
new(value).coerce
|
36
28
|
end
|
37
29
|
|
38
|
-
# Returns a new instance of Vedeu::
|
30
|
+
# Returns a new instance of Vedeu::Coercers::Alignment.
|
39
31
|
#
|
40
|
-
# @param value [
|
41
|
-
# @return [Vedeu::
|
42
|
-
def initialize(value =
|
43
|
-
@value = value
|
32
|
+
# @param value [Symbol]
|
33
|
+
# @return [Vedeu::Coercers::Alignment]
|
34
|
+
def initialize(value = :none)
|
35
|
+
@value = value || :none
|
44
36
|
end
|
45
37
|
|
46
|
-
# @
|
47
|
-
|
48
|
-
|
49
|
-
|
38
|
+
# @return [Symbol]
|
39
|
+
def coerce
|
40
|
+
if value == :center
|
41
|
+
@value = :centre
|
42
|
+
|
43
|
+
elsif invalid?
|
44
|
+
@value = :none
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
self
|
50
49
|
end
|
51
50
|
|
52
51
|
# Return a boolean indicating alignment was set to :bottom.
|
@@ -63,6 +62,20 @@ module Vedeu
|
|
63
62
|
value == :centre
|
64
63
|
end
|
65
64
|
|
65
|
+
# An object is equal when its values are the same.
|
66
|
+
#
|
67
|
+
# @param other [void]
|
68
|
+
# @return [Boolean]
|
69
|
+
def eql?(other)
|
70
|
+
self.class == other.class && value == other.value
|
71
|
+
end
|
72
|
+
alias_method :==, :eql?
|
73
|
+
|
74
|
+
# @return [Boolean]
|
75
|
+
def invalid?
|
76
|
+
!valid?
|
77
|
+
end
|
78
|
+
|
66
79
|
# Return a boolean indicating alignment was set to :left.
|
67
80
|
#
|
68
81
|
# @return [Boolean]
|
@@ -98,37 +111,21 @@ module Vedeu
|
|
98
111
|
value == :none
|
99
112
|
end
|
100
113
|
|
101
|
-
|
102
|
-
|
103
|
-
# @return [Boolean]
|
104
|
-
def none?
|
105
|
-
@value == :none || @value.nil? || !(@value.is_a?(Symbol))
|
106
|
-
end
|
107
|
-
|
114
|
+
# Return a boolean indicating the value is a valid alignment.
|
115
|
+
#
|
108
116
|
# @return [Boolean]
|
109
117
|
def valid?
|
110
|
-
values.include?(value)
|
118
|
+
present?(value) && value.is_a?(Symbol) && values.include?(value)
|
111
119
|
end
|
112
120
|
|
113
|
-
|
114
|
-
def value
|
115
|
-
@_value ||= if none?
|
116
|
-
:none
|
117
|
-
|
118
|
-
elsif @value == :center
|
119
|
-
:centre
|
120
|
-
|
121
|
-
else
|
122
|
-
@value.to_sym
|
123
|
-
|
124
|
-
end
|
125
|
-
end
|
121
|
+
private
|
126
122
|
|
127
123
|
# @return [Array<Symbol>]
|
128
124
|
def values
|
129
125
|
[
|
130
126
|
:bottom,
|
131
127
|
:centre,
|
128
|
+
:center,
|
132
129
|
:left,
|
133
130
|
:middle,
|
134
131
|
:none,
|
@@ -139,6 +136,6 @@ module Vedeu
|
|
139
136
|
|
140
137
|
end # Alignment
|
141
138
|
|
142
|
-
end #
|
139
|
+
end # Coercers
|
143
140
|
|
144
141
|
end # Vedeu
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
# Provides a mechanism to coerce values within Vedeu.
|
4
|
+
#
|
5
|
+
module Coercers
|
6
|
+
|
7
|
+
end # Coercers
|
8
|
+
|
9
|
+
end # Vedeu
|
10
|
+
|
11
|
+
require 'vedeu/coercers/alignment'
|
12
|
+
require 'vedeu/coercers/horizontal_alignment'
|
13
|
+
require 'vedeu/coercers/vertical_alignment'
|
14
|
+
|
15
|
+
require 'vedeu/coercers/colour'
|
16
|
+
require 'vedeu/coercers/colour_attributes'
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Coercers
|
4
|
+
|
5
|
+
# Converts a given value into a {Vedeu::Colours::Colour} if
|
6
|
+
# possible.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
#
|
10
|
+
class Colour
|
11
|
+
|
12
|
+
include Vedeu::Common
|
13
|
+
|
14
|
+
# @param (see #initialize)
|
15
|
+
# @return (see #coerce)
|
16
|
+
def self.coerce(value)
|
17
|
+
new(value).coerce
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param value [void]
|
21
|
+
# @return [Vedeu::Coercers::Colour]
|
22
|
+
def initialize(value)
|
23
|
+
@value = value
|
24
|
+
end
|
25
|
+
|
26
|
+
# @raise [Vedeu::Error::Fatal] When the value cannot be coerced.
|
27
|
+
# @return [void]
|
28
|
+
def coerce
|
29
|
+
if absent?(value)
|
30
|
+
Vedeu::Colours::Colour.new
|
31
|
+
|
32
|
+
elsif background?
|
33
|
+
Vedeu::Colours::Colour.new(background: value)
|
34
|
+
|
35
|
+
elsif colour?
|
36
|
+
value
|
37
|
+
|
38
|
+
elsif foreground?
|
39
|
+
Vedeu::Colours::Colour.new(foreground: value)
|
40
|
+
|
41
|
+
elsif hash?(value)
|
42
|
+
attributes = Vedeu::Coercers::ColourAttributes.coerce(value)
|
43
|
+
Vedeu::Colours::Colour.new(attributes)
|
44
|
+
|
45
|
+
else
|
46
|
+
fail Vedeu::Error::Fatal, 'Vedeu cannot coerce this colour.'.freeze
|
47
|
+
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
protected
|
52
|
+
|
53
|
+
# @!attribute [r] value
|
54
|
+
# @return [void]
|
55
|
+
attr_reader :value
|
56
|
+
|
57
|
+
private
|
58
|
+
|
59
|
+
# @return [Boolean]
|
60
|
+
def background?
|
61
|
+
value.is_a?(Vedeu::Colours::Background)
|
62
|
+
end
|
63
|
+
|
64
|
+
# @return [Boolean]
|
65
|
+
def colour?
|
66
|
+
value.is_a?(Vedeu::Colours::Colour)
|
67
|
+
end
|
68
|
+
|
69
|
+
# @return [Boolean]
|
70
|
+
def foreground?
|
71
|
+
value.is_a?(Vedeu::Colours::Foreground)
|
72
|
+
end
|
73
|
+
|
74
|
+
end # Colour
|
75
|
+
|
76
|
+
end # Coercers
|
77
|
+
|
78
|
+
end # Vedeu
|