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,84 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module Colours
|
4
|
+
|
5
|
+
# Validates the value as a valid colour string in HTML/CSS format,
|
6
|
+
# e.g. '#123456'.
|
7
|
+
#
|
8
|
+
# @api private
|
9
|
+
#
|
10
|
+
class Validator
|
11
|
+
|
12
|
+
include Vedeu::Common
|
13
|
+
|
14
|
+
# @param value [String]
|
15
|
+
# @return [Boolean]
|
16
|
+
def self.valid?(value)
|
17
|
+
new(value).valid?
|
18
|
+
end
|
19
|
+
|
20
|
+
# @param value [String]
|
21
|
+
# @return [Vedeu::Colours::Validator]
|
22
|
+
def initialize(value)
|
23
|
+
@value = value
|
24
|
+
end
|
25
|
+
|
26
|
+
# Returns a boolean indicating whether the value is within the
|
27
|
+
# range of valid terminal numbered colours.
|
28
|
+
#
|
29
|
+
# @return [Boolean]
|
30
|
+
def within_range?
|
31
|
+
numeric?(value) && value >= 0 && value <= 255
|
32
|
+
end
|
33
|
+
|
34
|
+
# Returns a boolean indicating whether the colour provided is a
|
35
|
+
# valid named colour.
|
36
|
+
#
|
37
|
+
# @return [Boolean]
|
38
|
+
def named?
|
39
|
+
Vedeu::EscapeSequences::Esc.valid_name?(value)
|
40
|
+
end
|
41
|
+
|
42
|
+
# Returns a boolean indicated whether the colour is a valid
|
43
|
+
# HTML/CSS colour.
|
44
|
+
#
|
45
|
+
# @return [Boolean]
|
46
|
+
def rgb?
|
47
|
+
return true if value =~ /^#([A-Fa-f0-9]{6})$/.freeze
|
48
|
+
|
49
|
+
false
|
50
|
+
end
|
51
|
+
|
52
|
+
# @return [Boolean]
|
53
|
+
def valid?
|
54
|
+
background? || colour? || foreground? || rgb? || named? || within_range?
|
55
|
+
end
|
56
|
+
|
57
|
+
protected
|
58
|
+
|
59
|
+
# @!attribute [r] value
|
60
|
+
# @return [String]
|
61
|
+
attr_reader :value
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
# @return [Boolean]
|
66
|
+
def background?
|
67
|
+
value.is_a?(Vedeu::Colours::Background)
|
68
|
+
end
|
69
|
+
|
70
|
+
# @return [Boolean]
|
71
|
+
def colour?
|
72
|
+
value.is_a?(Vedeu::Colours::Colour)
|
73
|
+
end
|
74
|
+
|
75
|
+
# @return [Boolean]
|
76
|
+
def foreground?
|
77
|
+
value.is_a?(Vedeu::Colours::Foreground)
|
78
|
+
end
|
79
|
+
|
80
|
+
end # Validator
|
81
|
+
|
82
|
+
end # Colours
|
83
|
+
|
84
|
+
end # Vedeu
|
data/lib/vedeu/common.rb
CHANGED
@@ -24,6 +24,41 @@ module Vedeu
|
|
24
24
|
klass.new(attributes)
|
25
25
|
end
|
26
26
|
|
27
|
+
# Returns a boolean indicating the value was a boolean.
|
28
|
+
#
|
29
|
+
# @param value [void]
|
30
|
+
# @return [Boolean]
|
31
|
+
def boolean(value)
|
32
|
+
return value if boolean?(value)
|
33
|
+
return false if falsy?(value)
|
34
|
+
return true if truthy?(value)
|
35
|
+
end
|
36
|
+
|
37
|
+
# Returns a boolean indicating whether the value is a Boolean.
|
38
|
+
#
|
39
|
+
# @param value [Boolean]
|
40
|
+
# @return [Boolean]
|
41
|
+
def boolean?(value)
|
42
|
+
value.is_a?(TrueClass) || value.is_a?(FalseClass)
|
43
|
+
end
|
44
|
+
|
45
|
+
# Returns a boolean indicating whether the value should be
|
46
|
+
# considered false.
|
47
|
+
#
|
48
|
+
# @param value [void]
|
49
|
+
# @return [Boolean]
|
50
|
+
def falsy?(value)
|
51
|
+
value.nil? || value.is_a?(FalseClass)
|
52
|
+
end
|
53
|
+
|
54
|
+
# Returns a boolean indicating whether the value is a Hash.
|
55
|
+
#
|
56
|
+
# @param value [Hash|void]
|
57
|
+
# @return [Boolean]
|
58
|
+
def hash?(value)
|
59
|
+
value.is_a?(Hash)
|
60
|
+
end
|
61
|
+
|
27
62
|
# Returns a boolean indicating whether the value is a Fixnum.
|
28
63
|
#
|
29
64
|
# @param value [Fixnum|void]
|
@@ -64,6 +99,23 @@ module Vedeu
|
|
64
99
|
name
|
65
100
|
end
|
66
101
|
|
102
|
+
# Returns a boolean indicating whether the value is a Fixnum.
|
103
|
+
#
|
104
|
+
# @param value [String|void]
|
105
|
+
# @return [Boolean]
|
106
|
+
def string?(value)
|
107
|
+
value.is_a?(String)
|
108
|
+
end
|
109
|
+
|
110
|
+
# Returns a boolean indicating whether the value should be
|
111
|
+
# considered true.
|
112
|
+
#
|
113
|
+
# @param value [void]
|
114
|
+
# @return [Boolean]
|
115
|
+
def truthy?(value)
|
116
|
+
!falsy?(value)
|
117
|
+
end
|
118
|
+
|
67
119
|
end # Common
|
68
120
|
|
69
121
|
end # Vedeu
|
@@ -556,10 +556,7 @@ module Vedeu
|
|
556
556
|
def background(value = nil)
|
557
557
|
return options[:background] unless value
|
558
558
|
|
559
|
-
|
560
|
-
|
561
|
-
options[:background] = colour_attributes(background: bg)
|
562
|
-
.fetch(:background)
|
559
|
+
options[:background] = value
|
563
560
|
end
|
564
561
|
|
565
562
|
# Sets the foreground of the terminal.
|
@@ -574,10 +571,7 @@ module Vedeu
|
|
574
571
|
def foreground(value = nil)
|
575
572
|
return options[:foreground] unless value
|
576
573
|
|
577
|
-
|
578
|
-
|
579
|
-
options[:foreground] = colour_attributes(foreground: fg)
|
580
|
-
.fetch(:foreground)
|
574
|
+
options[:foreground] = value
|
581
575
|
end
|
582
576
|
|
583
577
|
# Sets the background and foreground of the terminal.
|
@@ -590,8 +584,8 @@ module Vedeu
|
|
590
584
|
# @param attrs [Hash<Symbol => String>]
|
591
585
|
# @return [Hash<Symbol => void>]
|
592
586
|
def colour(attrs = {})
|
593
|
-
options[:background] =
|
594
|
-
options[:foreground] =
|
587
|
+
options[:background] = attrs[:background]
|
588
|
+
options[:foreground] = attrs[:foreground]
|
595
589
|
options
|
596
590
|
end
|
597
591
|
|
@@ -19,7 +19,7 @@ module Vedeu
|
|
19
19
|
#
|
20
20
|
# @return [Vedeu::Colours::Background]
|
21
21
|
def background
|
22
|
-
instance.options[:background]
|
22
|
+
Vedeu::Colours::Background.coerce(instance.options[:background])
|
23
23
|
end
|
24
24
|
|
25
25
|
# Returns the base_path value.
|
@@ -134,7 +134,7 @@ module Vedeu
|
|
134
134
|
#
|
135
135
|
# @return [Vedeu::Colours::Foreground]
|
136
136
|
def foreground
|
137
|
-
instance.options[:foreground]
|
137
|
+
Vedeu::Colours::Foreground.coerce(instance.options[:foreground])
|
138
138
|
end
|
139
139
|
|
140
140
|
# Returns the client defined height for the terminal.
|
@@ -325,7 +325,7 @@ module Vedeu
|
|
325
325
|
# @return [Hash<Symbol => void>]
|
326
326
|
def defaults
|
327
327
|
{
|
328
|
-
background:
|
328
|
+
background: :default,
|
329
329
|
base_path: base_path,
|
330
330
|
colour_mode: detect_colour_mode,
|
331
331
|
compression: true,
|
@@ -335,7 +335,7 @@ module Vedeu
|
|
335
335
|
drb_port: nil,
|
336
336
|
drb_height: 25,
|
337
337
|
drb_width: 80,
|
338
|
-
foreground:
|
338
|
+
foreground: :default,
|
339
339
|
height: nil,
|
340
340
|
interactive: true,
|
341
341
|
log: nil,
|
data/lib/vedeu/cursors/cursor.rb
CHANGED
data/lib/vedeu/cursors/dsl.rb
CHANGED
@@ -8,34 +8,7 @@ module Vedeu
|
|
8
8
|
# See {file:docs/cursors.md#view_cursors}
|
9
9
|
module DSL
|
10
10
|
|
11
|
-
|
12
|
-
#
|
13
|
-
# @param value [Boolean] Any value other than nil or false will
|
14
|
-
# evaluate to true.
|
15
|
-
# @return [Vedeu::Cursors::Cursor]
|
16
|
-
def cursor(value = true)
|
17
|
-
boolean = value ? true : false
|
18
|
-
|
19
|
-
model.cursor_visible = boolean
|
20
|
-
|
21
|
-
Vedeu::Cursors::Cursor.store(name: model.name, visible: boolean)
|
22
|
-
end
|
23
|
-
|
24
|
-
# Set the cursor to visible for the interface or view.
|
25
|
-
#
|
26
|
-
# @return [Vedeu::Cursors::Cursor]
|
27
|
-
def cursor!
|
28
|
-
cursor(true)
|
29
|
-
end
|
30
|
-
alias_method :show_cursor!, :cursor!
|
31
|
-
|
32
|
-
# Set the cursor to invisible for the interface or view.
|
33
|
-
#
|
34
|
-
# @return [Vedeu::Cursors::Cursor]
|
35
|
-
def no_cursor!
|
36
|
-
cursor(false)
|
37
|
-
end
|
38
|
-
alias_method :hide_cursor!, :no_cursor!
|
11
|
+
include Vedeu::DSL::Cursors
|
39
12
|
|
40
13
|
end # DSL
|
41
14
|
|
data/lib/vedeu/dsl/all.rb
CHANGED
@@ -8,14 +8,14 @@ module Vedeu
|
|
8
8
|
|
9
9
|
end # Vedeu
|
10
10
|
|
11
|
+
require 'vedeu/dsl/string/all'
|
12
|
+
require 'vedeu/dsl/border'
|
13
|
+
require 'vedeu/dsl/cursors'
|
11
14
|
require 'vedeu/dsl/dsl'
|
12
|
-
require 'vedeu/dsl/
|
15
|
+
require 'vedeu/dsl/attributes'
|
16
|
+
require 'vedeu/dsl/geometry'
|
13
17
|
require 'vedeu/dsl/use'
|
14
18
|
require 'vedeu/dsl/presentation'
|
15
|
-
require 'vedeu/dsl/composition'
|
16
|
-
require 'vedeu/dsl/text'
|
17
|
-
require 'vedeu/dsl/lines'
|
18
|
-
require 'vedeu/dsl/line'
|
19
|
-
require 'vedeu/dsl/streams'
|
20
|
-
require 'vedeu/dsl/stream'
|
21
19
|
require 'vedeu/dsl/view'
|
20
|
+
require 'vedeu/dsl/elements'
|
21
|
+
require 'vedeu/dsl/views'
|
@@ -0,0 +1,224 @@
|
|
1
|
+
module Vedeu
|
2
|
+
|
3
|
+
module DSL
|
4
|
+
|
5
|
+
# Creates attributes for DSL objects.
|
6
|
+
#
|
7
|
+
# @api private
|
8
|
+
#
|
9
|
+
class Attributes
|
10
|
+
|
11
|
+
include Vedeu::Common
|
12
|
+
|
13
|
+
# @param (see #initialize)
|
14
|
+
# @return (see #attributes)
|
15
|
+
def self.build(context = nil,
|
16
|
+
model = nil,
|
17
|
+
value = ''.freeze,
|
18
|
+
options = {},
|
19
|
+
&block)
|
20
|
+
new(context, model, value, options, &block).attributes
|
21
|
+
end
|
22
|
+
|
23
|
+
# @param options [Hash]
|
24
|
+
# @option options align [Symbol] One of :center, :centre, :left,
|
25
|
+
# :none (default) or :right.
|
26
|
+
# @option options background [String] The background colour.
|
27
|
+
# @option options colour [Hash] The colour.
|
28
|
+
# @option colour background [String] The background colour.
|
29
|
+
# @option colour foreground [String] The foreground colour.
|
30
|
+
# @option options foreground [String] The foreground colour.
|
31
|
+
# @option options name [NilClass|String|Symbol]
|
32
|
+
# @option options pad [String] The character to use to pad the
|
33
|
+
# value.
|
34
|
+
# @option options style [Array<Symbol>|
|
35
|
+
# Hash<Symbol => Array<Symbol>|Symbol>|Symbol] The style.
|
36
|
+
# @option options truncate [Boolean] Whether the value should be
|
37
|
+
# truncated.
|
38
|
+
# @option options width [Fixnum] The desired width for the
|
39
|
+
# value.
|
40
|
+
# @option options wordwrap [Boolean] Whether the value should be
|
41
|
+
# wordwrapped.
|
42
|
+
# @return [Vedeu::DSL::Attributes]
|
43
|
+
def initialize(context = nil,
|
44
|
+
model = nil,
|
45
|
+
value = ''.freeze,
|
46
|
+
options = {},
|
47
|
+
&block)
|
48
|
+
@context = context
|
49
|
+
@model = model
|
50
|
+
@value = value || ''.freeze
|
51
|
+
@options = options || {}
|
52
|
+
@block = block
|
53
|
+
end
|
54
|
+
|
55
|
+
# @return [Hash]
|
56
|
+
def attributes
|
57
|
+
{
|
58
|
+
align: align,
|
59
|
+
client: client,
|
60
|
+
colour: colour,
|
61
|
+
name: name,
|
62
|
+
pad: pad,
|
63
|
+
style: style,
|
64
|
+
truncate: truncate,
|
65
|
+
width: width,
|
66
|
+
wordwrap: wordwrap,
|
67
|
+
}.merge!(value)
|
68
|
+
end
|
69
|
+
|
70
|
+
protected
|
71
|
+
|
72
|
+
# @!attribute [r] context
|
73
|
+
# @return [NilClass|Vedeu::DSL::Elements]
|
74
|
+
attr_reader :context
|
75
|
+
|
76
|
+
# @!attribute [r] model
|
77
|
+
# @return [NilClass|Vedeu::Views::*]
|
78
|
+
attr_reader :model
|
79
|
+
|
80
|
+
# @!attribute [r] block
|
81
|
+
# @return [NilClass|Proc]
|
82
|
+
attr_reader :block
|
83
|
+
|
84
|
+
private
|
85
|
+
|
86
|
+
# @return [Vedeu::Coercers::Alignment]
|
87
|
+
def align
|
88
|
+
Vedeu::Coercers::Alignment.coerce(options[:align])
|
89
|
+
end
|
90
|
+
|
91
|
+
# Returns the client object which called the DSL method.
|
92
|
+
#
|
93
|
+
# @return [Object]
|
94
|
+
def client
|
95
|
+
if block
|
96
|
+
if eval('client', block.binding).nil?
|
97
|
+
eval(context.class.name, block.binding)
|
98
|
+
|
99
|
+
else
|
100
|
+
eval('client', block.binding)
|
101
|
+
|
102
|
+
end
|
103
|
+
elsif present?(model)
|
104
|
+
model.client
|
105
|
+
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
# @return [Vedeu::Colours::Colour]
|
110
|
+
def colour
|
111
|
+
Vedeu::Colours::Colour.coerce(new_colour_options)
|
112
|
+
end
|
113
|
+
|
114
|
+
# @return [Hash]
|
115
|
+
def defaults
|
116
|
+
{
|
117
|
+
align: :none,
|
118
|
+
client: nil,
|
119
|
+
colour: nil,
|
120
|
+
name: nil,
|
121
|
+
pad: ' '.freeze,
|
122
|
+
style: nil,
|
123
|
+
truncate: false,
|
124
|
+
width: nil,
|
125
|
+
wordwrap: false,
|
126
|
+
}
|
127
|
+
end
|
128
|
+
|
129
|
+
# @return [NilClass|Vedeu::Geometries::Geometry]
|
130
|
+
def geometry
|
131
|
+
@_geometry ||= Vedeu.geometries.by_name(name)
|
132
|
+
end
|
133
|
+
|
134
|
+
# @return [NilClass|String|Symbol]
|
135
|
+
def name
|
136
|
+
return model.name if present?(model) && present?(model.name)
|
137
|
+
|
138
|
+
nil
|
139
|
+
end
|
140
|
+
|
141
|
+
# @return [Hash]
|
142
|
+
def options
|
143
|
+
defaults.merge!(@options)
|
144
|
+
end
|
145
|
+
|
146
|
+
# @return [String]
|
147
|
+
def pad
|
148
|
+
options[:pad].to_s[0] || ' '.freeze
|
149
|
+
end
|
150
|
+
|
151
|
+
# @return [NilClass|Vedeu::Presentation::Style]
|
152
|
+
def style
|
153
|
+
Vedeu::Presentation::Style.coerce(options[:style])
|
154
|
+
end
|
155
|
+
|
156
|
+
# @return [Boolean]
|
157
|
+
def truncate
|
158
|
+
truthy?(options[:truncate])
|
159
|
+
end
|
160
|
+
|
161
|
+
# @return [Hash<Symbol => String>]
|
162
|
+
def value
|
163
|
+
if block
|
164
|
+
{}
|
165
|
+
|
166
|
+
elsif absent?(@value)
|
167
|
+
{}
|
168
|
+
|
169
|
+
else
|
170
|
+
{
|
171
|
+
value: @value
|
172
|
+
}
|
173
|
+
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
# @return [Fixnum|NilClass]
|
178
|
+
def width
|
179
|
+
if numeric?(options[:width])
|
180
|
+
options[:width]
|
181
|
+
|
182
|
+
elsif name
|
183
|
+
geometry.bordered_width
|
184
|
+
|
185
|
+
end
|
186
|
+
end
|
187
|
+
|
188
|
+
# @return [Boolean]
|
189
|
+
def wordwrap
|
190
|
+
truthy?(options[:wordwrap])
|
191
|
+
end
|
192
|
+
|
193
|
+
# @return [Array<Symbol>]
|
194
|
+
def colour_attributes
|
195
|
+
[:background, :colour, :foreground]
|
196
|
+
end
|
197
|
+
|
198
|
+
# @return [Hash]
|
199
|
+
def colour_options
|
200
|
+
options.select { |k, _| colour_attributes.include?(k) }
|
201
|
+
end
|
202
|
+
|
203
|
+
# @return [Hash]
|
204
|
+
def coerce_colour_options
|
205
|
+
Vedeu::Coercers::ColourAttributes.coerce(colour_options)
|
206
|
+
end
|
207
|
+
|
208
|
+
# @return [Hash]
|
209
|
+
def model_colour
|
210
|
+
return {} unless present?(model) && model.colour
|
211
|
+
|
212
|
+
model.colour.attributes
|
213
|
+
end
|
214
|
+
|
215
|
+
# @return [Hash]
|
216
|
+
def new_colour_options
|
217
|
+
model_colour.merge(coerce_colour_options)
|
218
|
+
end
|
219
|
+
|
220
|
+
end # Attributes
|
221
|
+
|
222
|
+
end # DSL
|
223
|
+
|
224
|
+
end # Vedeu
|