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
data/lib/vedeu/menus/menu.rb
CHANGED
data/lib/vedeu/models/focus.rb
CHANGED
@@ -15,7 +15,7 @@ module Vedeu
|
|
15
15
|
|
16
16
|
# Set the visible state to false and store the model.
|
17
17
|
#
|
18
|
-
# @return [
|
18
|
+
# @return [Boolean]
|
19
19
|
def hide
|
20
20
|
@visible = false
|
21
21
|
|
@@ -24,7 +24,7 @@ module Vedeu
|
|
24
24
|
|
25
25
|
# Set the visible state to true and store the model.
|
26
26
|
#
|
27
|
-
# @return [
|
27
|
+
# @return [Boolean]
|
28
28
|
def show
|
29
29
|
@visible = true
|
30
30
|
|
@@ -34,7 +34,7 @@ module Vedeu
|
|
34
34
|
# Toggle the visible state and store the model. When the model is
|
35
35
|
# hidden, then it is shown, and vice versa.
|
36
36
|
#
|
37
|
-
# @return [
|
37
|
+
# @return [Boolean]
|
38
38
|
def toggle
|
39
39
|
return hide if visible?
|
40
40
|
|
@@ -150,7 +150,7 @@ module Vedeu
|
|
150
150
|
# @param klass [Class]
|
151
151
|
# @return [void]
|
152
152
|
def self.included(klass)
|
153
|
-
klass.
|
153
|
+
klass.extend(Vedeu::Toggleable::ClassMethods)
|
154
154
|
end
|
155
155
|
|
156
156
|
end # Toggleable
|
data/lib/vedeu/null/generic.rb
CHANGED
@@ -24,7 +24,7 @@ module Vedeu
|
|
24
24
|
@name = @attributes.fetch(:name, '')
|
25
25
|
end
|
26
26
|
|
27
|
-
# @return [
|
27
|
+
# @return [Boolean]
|
28
28
|
def falsy
|
29
29
|
false
|
30
30
|
end
|
@@ -73,7 +73,7 @@ module Vedeu
|
|
73
73
|
self
|
74
74
|
end
|
75
75
|
|
76
|
-
# @return [
|
76
|
+
# @return [Boolean]
|
77
77
|
def visible=(*)
|
78
78
|
false
|
79
79
|
end
|
data/lib/vedeu/output/all.rb
CHANGED
@@ -8,9 +8,7 @@ end # Vedeu
|
|
8
8
|
|
9
9
|
require 'vedeu/output/compressor_cache'
|
10
10
|
require 'vedeu/output/compressor'
|
11
|
-
require 'vedeu/output/text'
|
12
11
|
require 'vedeu/output/output'
|
13
12
|
require 'vedeu/output/viewport'
|
14
|
-
require 'vedeu/output/wordwrap'
|
15
13
|
require 'vedeu/output/refresh'
|
16
14
|
require 'vedeu/output/write'
|
data/lib/vedeu/output/output.rb
CHANGED
@@ -58,17 +58,17 @@ module Vedeu
|
|
58
58
|
|
59
59
|
# @return [Array]
|
60
60
|
def buffer_update
|
61
|
-
|
61
|
+
Vedeu::Buffers::Terminal.update(output)
|
62
62
|
end
|
63
63
|
|
64
64
|
# @return [Array]
|
65
65
|
def buffer_write
|
66
|
-
|
66
|
+
Vedeu::Buffers::Terminal.write(output)
|
67
67
|
end
|
68
68
|
|
69
69
|
# @return [Array<String>]
|
70
70
|
def direct_write
|
71
|
-
|
71
|
+
Vedeu::Terminal.output(output.to_s)
|
72
72
|
end
|
73
73
|
|
74
74
|
# Send the view to the renderers. If the output is a
|
@@ -81,10 +81,10 @@ module Vedeu
|
|
81
81
|
# @return [Array|String|NilClass]
|
82
82
|
def render_output
|
83
83
|
if escape_sequence?
|
84
|
-
direct_write
|
84
|
+
direct_write
|
85
85
|
|
86
86
|
else
|
87
|
-
buffer_write
|
87
|
+
buffer_write
|
88
88
|
|
89
89
|
end
|
90
90
|
end
|
@@ -98,21 +98,6 @@ module Vedeu
|
|
98
98
|
|
99
99
|
private
|
100
100
|
|
101
|
-
# @return [Array]
|
102
|
-
def buffer_update!
|
103
|
-
Vedeu::Buffers::Terminal.update(output)
|
104
|
-
end
|
105
|
-
|
106
|
-
# @return [Array]
|
107
|
-
def buffer_write!
|
108
|
-
Vedeu::Buffers::Terminal.write(output)
|
109
|
-
end
|
110
|
-
|
111
|
-
# @return [Array<String>]
|
112
|
-
def direct_write!
|
113
|
-
Vedeu::Terminal.output(output.to_s)
|
114
|
-
end
|
115
|
-
|
116
101
|
# @return [Boolean]
|
117
102
|
def escape_sequence?
|
118
103
|
output.is_a?(Vedeu::Cells::Escape)
|
@@ -4,6 +4,8 @@ module Vedeu
|
|
4
4
|
|
5
5
|
# Provides colour related presentation behaviour.
|
6
6
|
#
|
7
|
+
# @api private
|
8
|
+
#
|
7
9
|
module Colour
|
8
10
|
|
9
11
|
include Vedeu::Repositories::Parent
|
@@ -12,17 +14,18 @@ module Vedeu
|
|
12
14
|
|
13
15
|
# @return [Vedeu::Colours::Colour]
|
14
16
|
def colour
|
15
|
-
@_colour ||= if
|
17
|
+
@_colour ||= if colour?
|
16
18
|
Vedeu::Colours::Colour.coerce(@colour)
|
17
19
|
|
18
|
-
elsif
|
19
|
-
Vedeu::Colours::Colour.coerce(
|
20
|
+
elsif parent_colour?
|
21
|
+
Vedeu::Colours::Colour.coerce(parent_colour)
|
20
22
|
|
21
|
-
elsif
|
22
|
-
Vedeu::Colours::Colour.coerce(
|
23
|
+
elsif named_colour?
|
24
|
+
Vedeu::Colours::Colour.coerce(named_colour)
|
23
25
|
|
24
|
-
elsif
|
25
|
-
Vedeu::
|
26
|
+
elsif self.is_a?(Vedeu::Views::Char) && name
|
27
|
+
# Currently used by Vedeu::Output::Viewport
|
28
|
+
Vedeu::Colours::Colour.coerce(interface.colour)
|
26
29
|
|
27
30
|
else
|
28
31
|
Vedeu::Colours::Colour.new
|
@@ -38,6 +41,35 @@ module Vedeu
|
|
38
41
|
@_colour = @colour = Vedeu::Colours::Colour.coerce(value)
|
39
42
|
end
|
40
43
|
|
44
|
+
# @return [Boolean]
|
45
|
+
def colour?
|
46
|
+
present?(@colour)
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
# @return [Vedeu::Colours::Colour]
|
52
|
+
def named_colour
|
53
|
+
Vedeu.interfaces.by_name(name).colour
|
54
|
+
end
|
55
|
+
|
56
|
+
# @return [Boolean]
|
57
|
+
def named_colour?
|
58
|
+
return false if self.is_a?(Vedeu::Interfaces::Interface)
|
59
|
+
|
60
|
+
present?(name) && Vedeu.interfaces.registered?(name)
|
61
|
+
end
|
62
|
+
|
63
|
+
# @return [Vedeu::Colours::Colour]
|
64
|
+
def parent_colour
|
65
|
+
parent.colour
|
66
|
+
end
|
67
|
+
|
68
|
+
# @return [Boolean]
|
69
|
+
def parent_colour?
|
70
|
+
present?(parent) && parent.respond_to?(:colour?)
|
71
|
+
end
|
72
|
+
|
41
73
|
end # Colour
|
42
74
|
|
43
75
|
end # Presentation
|
@@ -15,23 +15,37 @@ module Vedeu
|
|
15
15
|
#
|
16
16
|
class Style
|
17
17
|
|
18
|
+
class << self
|
19
|
+
|
20
|
+
include Vedeu::Common
|
21
|
+
|
22
|
+
# Produces new objects of the correct class from the value,
|
23
|
+
# ignores objects that have already been coerced.
|
24
|
+
#
|
25
|
+
# @param value [Object|NilClass]
|
26
|
+
# @return [Object]
|
27
|
+
def coerce(value)
|
28
|
+
return value if value.is_a?(Vedeu::Presentation::Style)
|
29
|
+
return new(value) unless value.is_a?(Hash)
|
30
|
+
return new unless present?(value[:style])
|
31
|
+
|
32
|
+
if value[:style].is_a?(Vedeu::Presentation::Style)
|
33
|
+
value[:style]
|
34
|
+
|
35
|
+
else
|
36
|
+
new(value[:style])
|
37
|
+
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
end # Eigenclass
|
42
|
+
|
18
43
|
include Vedeu::Common
|
19
44
|
|
20
45
|
# @!attribute [rw] value
|
21
46
|
# @return [String|Symbol]
|
22
47
|
attr_accessor :value
|
23
48
|
|
24
|
-
# Produces new objects of the correct class from the value,
|
25
|
-
# ignores objects that have already been coerced.
|
26
|
-
#
|
27
|
-
# @param value [Object|NilClass]
|
28
|
-
# @return [Object]
|
29
|
-
def self.coerce(value)
|
30
|
-
return value if value.is_a?(self)
|
31
|
-
|
32
|
-
new(value)
|
33
|
-
end
|
34
|
-
|
35
49
|
# Return a new instance of Vedeu::Presentation::Style.
|
36
50
|
#
|
37
51
|
# @param value [Array<String|Symbol>|String|Symbol]
|
data/lib/vedeu/renderers/html.rb
CHANGED
@@ -36,7 +36,7 @@ module Vedeu
|
|
36
36
|
def clear
|
37
37
|
@output = Vedeu::Cells::Escape.new
|
38
38
|
|
39
|
-
''
|
39
|
+
''.freeze
|
40
40
|
end
|
41
41
|
|
42
42
|
# @param output [Vedeu::Models::Page]
|
@@ -49,14 +49,14 @@ module Vedeu
|
|
49
49
|
|
50
50
|
# @return [String]
|
51
51
|
def html_body
|
52
|
-
return '' if output.is_a?(Vedeu::Cells::Escape)
|
52
|
+
return ''.freeze if output.is_a?(Vedeu::Cells::Escape)
|
53
53
|
|
54
54
|
out = ''
|
55
55
|
|
56
56
|
output.each do |line|
|
57
|
-
out << "#{start_row_tag}\n"
|
57
|
+
out << "#{start_row_tag}\n".freeze
|
58
58
|
line.each { |char| out << char.to_html(options) }
|
59
|
-
out << "#{end_row_tag}\n"
|
59
|
+
out << "#{end_row_tag}\n".freeze
|
60
60
|
end
|
61
61
|
|
62
62
|
out.freeze
|
@@ -108,12 +108,12 @@ module Vedeu
|
|
108
108
|
# @return [Hash<Symbol => void>]
|
109
109
|
def defaults
|
110
110
|
{
|
111
|
-
content: '',
|
112
|
-
end_tag: '</td>',
|
113
|
-
end_row_tag: '</tr>',
|
114
|
-
filename: 'out',
|
115
|
-
start_tag: '<td',
|
116
|
-
start_row_tag: '<tr>',
|
111
|
+
content: ''.freeze,
|
112
|
+
end_tag: '</td>'.freeze,
|
113
|
+
end_row_tag: '</tr>'.freeze,
|
114
|
+
filename: 'out'.freeze,
|
115
|
+
start_tag: '<td'.freeze,
|
116
|
+
start_row_tag: '<tr>'.freeze,
|
117
117
|
template: default_template,
|
118
118
|
timestamp: false,
|
119
119
|
write_file: true,
|
@@ -122,7 +122,7 @@ module Vedeu
|
|
122
122
|
|
123
123
|
# @return [String]
|
124
124
|
def default_template
|
125
|
-
::File.dirname(__FILE__) + '/../templates/html_renderer.vedeu'
|
125
|
+
::File.dirname(__FILE__) + '/../templates/html_renderer.vedeu'.freeze
|
126
126
|
end
|
127
127
|
|
128
128
|
end # HTML
|
@@ -19,6 +19,15 @@ module Vedeu
|
|
19
19
|
collection[index]
|
20
20
|
end
|
21
21
|
|
22
|
+
# Returns a boolean indicating whether the collection is not
|
23
|
+
# empty.
|
24
|
+
#
|
25
|
+
# @param block [Proc]
|
26
|
+
# @return [Boolean]
|
27
|
+
def any?(&block)
|
28
|
+
collection.any?(&block)
|
29
|
+
end
|
30
|
+
|
22
31
|
# Provides iteration over the collection.
|
23
32
|
#
|
24
33
|
# @param block [Proc]
|
@@ -21,7 +21,10 @@ module Vedeu
|
|
21
21
|
# @return [void] A new instance of the class including this
|
22
22
|
# module.
|
23
23
|
def initialize(attributes = {})
|
24
|
-
|
24
|
+
fail Vedeu::Error::InvalidSyntax,
|
25
|
+
'Argument :attributes is not a Hash.' unless attributes.is_a?(Hash)
|
26
|
+
|
27
|
+
attrs = attributes.keep_if { |key, _| defaults.key?(key) }
|
25
28
|
|
26
29
|
defaults.merge!(attrs).each do |key, value|
|
27
30
|
instance_variable_set("@#{key}", value || defaults.fetch(key))
|
@@ -33,28 +33,16 @@ module Vedeu
|
|
33
33
|
# @param block [Proc] The block passed to the build method.
|
34
34
|
# @return [Object] An instance of the model.
|
35
35
|
def build(attributes = {}, &block)
|
36
|
-
attributes = defaults.merge!(attributes)
|
37
|
-
|
38
36
|
model = new(attributes)
|
39
37
|
|
40
|
-
|
41
|
-
|
42
|
-
|
38
|
+
Vedeu.log(type: :debug,
|
39
|
+
message: "DSL building: '#{model.class.name}' for " \
|
40
|
+
"'#{model.name}'".freeze)
|
43
41
|
|
44
|
-
model
|
45
|
-
end
|
42
|
+
model.deputy.instance_eval(&block) if block_given?
|
46
43
|
|
47
|
-
|
48
|
-
# a model.
|
49
|
-
#
|
50
|
-
# @param klass [Class] The member (singular) or collection
|
51
|
-
# (multiple) class name for the respective model.
|
52
|
-
# @return [void]
|
53
|
-
def child(klass)
|
54
|
-
send(:define_method, __callee__) { klass }
|
44
|
+
model
|
55
45
|
end
|
56
|
-
alias_method :member, :child
|
57
|
-
alias_method :collection, :child
|
58
46
|
|
59
47
|
# Allow models to specify their repository using a class
|
60
48
|
# method.
|
@@ -73,25 +61,7 @@ module Vedeu
|
|
73
61
|
# storing.
|
74
62
|
# @return [Object] An instance of the model.
|
75
63
|
def store(attributes = {}, &block)
|
76
|
-
|
77
|
-
new(attributes).store(&block)
|
78
|
-
|
79
|
-
else
|
80
|
-
new(attributes).store
|
81
|
-
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
private
|
86
|
-
|
87
|
-
# The default values for a new instance of this class.
|
88
|
-
#
|
89
|
-
# @return [Hash<Symbol => NilClass, String>]
|
90
|
-
def defaults
|
91
|
-
{
|
92
|
-
client: nil,
|
93
|
-
name: '',
|
94
|
-
}
|
64
|
+
new(attributes).store(&block)
|
95
65
|
end
|
96
66
|
|
97
67
|
end # ClassMethods
|
@@ -102,7 +72,7 @@ module Vedeu
|
|
102
72
|
# @param klass [Class]
|
103
73
|
# @return [void]
|
104
74
|
def self.included(klass)
|
105
|
-
klass.
|
75
|
+
klass.extend(Vedeu::Repositories::Model::ClassMethods)
|
106
76
|
end
|
107
77
|
|
108
78
|
# @note If a block is given, store the model, return the model
|
@@ -11,18 +11,18 @@ module Vedeu
|
|
11
11
|
|
12
12
|
# @return [NilClass|void]
|
13
13
|
def parent
|
14
|
-
|
14
|
+
present?(@parent) ? @parent : nil
|
15
15
|
end
|
16
16
|
|
17
17
|
# @return [NilClass|String|Symbol]
|
18
18
|
def name
|
19
|
-
|
20
|
-
|
19
|
+
if present?(@name)
|
20
|
+
@name
|
21
21
|
|
22
|
-
|
23
|
-
|
22
|
+
elsif parent && present?(parent.name)
|
23
|
+
parent.name
|
24
24
|
|
25
|
-
|
25
|
+
end
|
26
26
|
end
|
27
27
|
|
28
28
|
end # Parent
|