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
@@ -1,150 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# DSL for creating collections of interfaces.
|
6
|
-
#
|
7
|
-
# Views with Vedeu are made up of simple building blocks. These
|
8
|
-
# blocks can be arranged in a multitude of ways which I hope is
|
9
|
-
# more than sufficient for your design needs.
|
10
|
-
|
11
|
-
# - A view (`Composition`) is made up of one or more interfaces.
|
12
|
-
# - An interface is an area on the screen where you can take input
|
13
|
-
# or direct output. You will define it's colour and style, its
|
14
|
-
# dimensions, including position and give it a name. You can
|
15
|
-
# then direct the output of a command, or event, to this
|
16
|
-
# interface and Vedeu will ensure the content is placed there.
|
17
|
-
# - Interfaces (`Interface`) are made up of lines (`Line`), their
|
18
|
-
# length being the width of the interface and their number being
|
19
|
-
# the height of the interface.
|
20
|
-
# - An interface with `width: 12, height: 5` will have five lines,
|
21
|
-
# each made of 12 characters- providing 60 cells. Colours and
|
22
|
-
# styles are handled by terminal escape sequences and therefore
|
23
|
-
# do not consume a cell.
|
24
|
-
# - Lines are made up of zero, one or multiple streams which are
|
25
|
-
# basically subsets of the line.
|
26
|
-
# - An interface, line or stream can have a colour attribute.
|
27
|
-
# - An interface, line or stream can have a style attribute.
|
28
|
-
# - Interfaces have a position (`y`, `x`) on the screen, and a
|
29
|
-
# size. (`width`, `height`)
|
30
|
-
# - Interfaces can be placed relative to each other based on their
|
31
|
-
# attributes.
|
32
|
-
# - An interface has a `top`, `right`, `bottom`, `left`.
|
33
|
-
# - An interface also has a `north` and `west` (`top` and `left`
|
34
|
-
# minus 1 respectively).
|
35
|
-
# - An interface also has a `south` and `east` (`bottom` and
|
36
|
-
# `right` plus 1 respectively).
|
37
|
-
# - Colours are defined in CSS-style values, i.e. `#ff0000` would
|
38
|
-
# be red.
|
39
|
-
# - Styles are named. See the table below for supported styles.
|
40
|
-
#
|
41
|
-
class Composition
|
42
|
-
|
43
|
-
include Vedeu::DSL
|
44
|
-
|
45
|
-
# Define a view.
|
46
|
-
#
|
47
|
-
# A view is just an Interface object.
|
48
|
-
#
|
49
|
-
# When a view already exists, we take its attributes and use
|
50
|
-
# them as the basis for the newly defined view. This way we
|
51
|
-
# don't need to specify everything again.
|
52
|
-
#
|
53
|
-
# @todo More documentation required.
|
54
|
-
# @param name [String|Symbol] The name of the interface you are
|
55
|
-
# targetting for this view.
|
56
|
-
# @param block [Proc] The directives you wish to send to this
|
57
|
-
# interface.
|
58
|
-
#
|
59
|
-
# @example
|
60
|
-
# view :my_interface do
|
61
|
-
# # ...
|
62
|
-
# end
|
63
|
-
#
|
64
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
65
|
-
# @return [Vedeu::Views::Views<Vedeu::Views::View>]
|
66
|
-
def view(name = '', &block)
|
67
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
68
|
-
|
69
|
-
new_model = model.member.build(new_attributes(name), &block)
|
70
|
-
|
71
|
-
model.add(new_model)
|
72
|
-
end
|
73
|
-
|
74
|
-
# Load content from an ERb template.
|
75
|
-
#
|
76
|
-
# @example
|
77
|
-
# Vedeu.renders do
|
78
|
-
# template_for(:my_interface,
|
79
|
-
# '/path/to/template.erb',
|
80
|
-
# @some_object, options)
|
81
|
-
# end
|
82
|
-
#
|
83
|
-
# @todo More documentation required.
|
84
|
-
#
|
85
|
-
# @param name [String|Symbol] The name of interface for which this
|
86
|
-
# template's content belongs to.
|
87
|
-
# @param filename [String] The filename (including path) to the
|
88
|
-
# template to be used. Yoy can use `File.dirname(__FILE__)` to
|
89
|
-
# use relative paths.
|
90
|
-
# @param object [Object] The object for which the values of
|
91
|
-
# template's variables can be obtained.
|
92
|
-
# @param options [Hash<Symbol => void>] See {Vedeu::Output::Wordwrap}
|
93
|
-
# @raise [Vedeu::Error::MissingRequired]
|
94
|
-
# @return [Vedeu::Views::Views<Vedeu::Views::View>]
|
95
|
-
def template_for(name, filename, object = nil, options = {})
|
96
|
-
fail Vedeu::Error::MissingRequired,
|
97
|
-
'Cannot render template without the name of the ' \
|
98
|
-
'view.'.freeze unless name
|
99
|
-
fail Vedeu::Error::MissingRequired,
|
100
|
-
'Cannot render template without a filename.'.freeze unless filename
|
101
|
-
|
102
|
-
options.merge!(name: name)
|
103
|
-
|
104
|
-
content = Vedeu::Templating::ViewTemplate.parse(object,
|
105
|
-
filename,
|
106
|
-
options)
|
107
|
-
|
108
|
-
# lines = Vedeu::Output::Wordwrap.for(content, options)
|
109
|
-
|
110
|
-
new_model = model.member.build(template_attributes(name, content))
|
111
|
-
|
112
|
-
model.add(new_model)
|
113
|
-
end
|
114
|
-
|
115
|
-
private
|
116
|
-
|
117
|
-
# @param name [String|Symbol]
|
118
|
-
# @param lines [Vedeu::Views::Lines]
|
119
|
-
# @return [Hash<Symbol => void>]
|
120
|
-
def template_attributes(name, lines)
|
121
|
-
new_attributes(name).merge!(value: lines)
|
122
|
-
end
|
123
|
-
|
124
|
-
# Return the current attributes combined with the existing
|
125
|
-
# interface attributes defined by the interface.
|
126
|
-
#
|
127
|
-
# @param name [String|Symbol] The name of the interface.
|
128
|
-
# @return [Hash<Symbol => void>]
|
129
|
-
def new_attributes(name)
|
130
|
-
existing_attributes(name).merge!(attributes)
|
131
|
-
end
|
132
|
-
|
133
|
-
# Retrieve the attributes of the interface by name.
|
134
|
-
#
|
135
|
-
# @param name [String|Symbol] The name of the interface.
|
136
|
-
# @return [Hash<Symbol => void>]
|
137
|
-
def existing_attributes(name)
|
138
|
-
interface(name).attributes
|
139
|
-
end
|
140
|
-
|
141
|
-
# @return [Vedeu::Interfaces::Interface]
|
142
|
-
def interface(name)
|
143
|
-
Vedeu.interfaces.by_name(name)
|
144
|
-
end
|
145
|
-
|
146
|
-
end # Composition
|
147
|
-
|
148
|
-
end # DSL
|
149
|
-
|
150
|
-
end # Vedeu
|
data/lib/vedeu/dsl/line.rb
DELETED
@@ -1,119 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# Provides methods to be used to define views.
|
6
|
-
#
|
7
|
-
# Vedeu.renders do
|
8
|
-
# view :my_interface do
|
9
|
-
# lines do
|
10
|
-
# background '#000000'
|
11
|
-
# foreground '#ffffff'
|
12
|
-
# line 'This is white text on a black background.'
|
13
|
-
# line 'Next is a blank line:'
|
14
|
-
# line ''
|
15
|
-
#
|
16
|
-
# streams { stream 'We can define ' }
|
17
|
-
#
|
18
|
-
# streams do
|
19
|
-
# foreground '#ff0000'
|
20
|
-
# stream 'parts of a line '
|
21
|
-
# end
|
22
|
-
#
|
23
|
-
# streams { stream 'independently using ' }
|
24
|
-
#
|
25
|
-
# streams do
|
26
|
-
# foreground '#00ff00'
|
27
|
-
# stream 'streams.'
|
28
|
-
# end
|
29
|
-
# end
|
30
|
-
# end
|
31
|
-
# end
|
32
|
-
#
|
33
|
-
class Line
|
34
|
-
|
35
|
-
include Vedeu::DSL
|
36
|
-
include Vedeu::DSL::Presentation
|
37
|
-
include Vedeu::DSL::Text
|
38
|
-
|
39
|
-
# Specify a single line in a view.
|
40
|
-
#
|
41
|
-
# Vedeu.renders do
|
42
|
-
# view :my_interface do
|
43
|
-
# lines do
|
44
|
-
# line 'some text...'
|
45
|
-
# # ... some code
|
46
|
-
#
|
47
|
-
# line 'some more text...'
|
48
|
-
# # ... some code
|
49
|
-
# end
|
50
|
-
# end
|
51
|
-
# end
|
52
|
-
#
|
53
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
54
|
-
# @return [Vedeu::Views::Lines]
|
55
|
-
def line(value = '', &block)
|
56
|
-
if block_given?
|
57
|
-
content = Vedeu::Views::Line.build(client: client,
|
58
|
-
parent: model.parent, &block)
|
59
|
-
|
60
|
-
elsif value
|
61
|
-
content = Vedeu::Views::Line.build(client: client,
|
62
|
-
parent: model.parent,
|
63
|
-
value: [build_stream(value)])
|
64
|
-
|
65
|
-
else
|
66
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
67
|
-
|
68
|
-
end
|
69
|
-
|
70
|
-
model.parent.add(content)
|
71
|
-
end
|
72
|
-
alias_method :line=, :line
|
73
|
-
|
74
|
-
# Define multiple streams (a stream is a subset of a line).
|
75
|
-
# Uses {Vedeu::DSL::Stream} for all directives within the
|
76
|
-
# required block.
|
77
|
-
#
|
78
|
-
# Vedeu.renders do
|
79
|
-
# view :my_interface do
|
80
|
-
# lines do
|
81
|
-
# line do
|
82
|
-
# streams do
|
83
|
-
# # ... some code
|
84
|
-
# end
|
85
|
-
#
|
86
|
-
# stream do
|
87
|
-
# # ... some code
|
88
|
-
# end
|
89
|
-
# end
|
90
|
-
# end
|
91
|
-
# end
|
92
|
-
# end
|
93
|
-
#
|
94
|
-
# @param block [Proc]
|
95
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
96
|
-
# @return [Vedeu::Views::Streams<Vedeu::Views::Stream>]
|
97
|
-
# @see Vedeu::DSL::Stream for subdirectives.
|
98
|
-
def streams(&block)
|
99
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
100
|
-
|
101
|
-
model.add(model.member.build(attributes, &block))
|
102
|
-
end
|
103
|
-
alias_method :stream, :streams
|
104
|
-
alias_method :stream=, :streams
|
105
|
-
alias_method :streams=, :streams
|
106
|
-
|
107
|
-
private
|
108
|
-
|
109
|
-
# @param value [String]
|
110
|
-
# @return [Vedeu::Views::Stream]
|
111
|
-
def build_stream(value)
|
112
|
-
Vedeu::Views::Stream.build(client: client, parent: model, value: value)
|
113
|
-
end
|
114
|
-
|
115
|
-
end # Line
|
116
|
-
|
117
|
-
end # DSL
|
118
|
-
|
119
|
-
end # Vedeu
|
data/lib/vedeu/dsl/lines.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# Provides the mechanism to add lines to a view via the DSL.
|
6
|
-
#
|
7
|
-
class Lines
|
8
|
-
|
9
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
10
|
-
# @return [Vedeu::Views::Lines]
|
11
|
-
# def lines(&block)
|
12
|
-
# fail Vedeu::Error::RequiresBlock unless block_given?
|
13
|
-
|
14
|
-
# client = eval('self', block.binding)
|
15
|
-
|
16
|
-
# # Vedeu::Models::Lines.new
|
17
|
-
# end
|
18
|
-
|
19
|
-
end # Lines
|
20
|
-
|
21
|
-
end # DSL
|
22
|
-
|
23
|
-
end # Vedeu
|
data/lib/vedeu/dsl/shared.rb
DELETED
@@ -1,85 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# Provides behaviour to be shared between both
|
6
|
-
# {Vedeu::Interfaces::DSL} and {Vedeu::DSL::View} objects.
|
7
|
-
#
|
8
|
-
module Shared
|
9
|
-
|
10
|
-
# Allows the setting of a border for the interface.
|
11
|
-
#
|
12
|
-
# @example
|
13
|
-
# Vedeu.interface :my_interface do
|
14
|
-
# border do
|
15
|
-
# # ... see Vedeu::Borders::DSL for DSL methods for
|
16
|
-
# # borders.
|
17
|
-
# end
|
18
|
-
# end
|
19
|
-
#
|
20
|
-
# @param name [String|Symbol] The name of the interface; this is
|
21
|
-
# already provided when we define the interface or view,
|
22
|
-
# setting it here is just mirroring functionality of
|
23
|
-
# {Vedeu::Borders::DSL.border}.
|
24
|
-
# @param block [Proc]
|
25
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
26
|
-
# @return [Vedeu::Borders::Border]
|
27
|
-
# @see Vedeu::Borders::DSL
|
28
|
-
def border(name = nil, &block)
|
29
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
30
|
-
|
31
|
-
model_name = name ? name : model.name
|
32
|
-
|
33
|
-
border_attrs = attributes.merge!(enabled: true,
|
34
|
-
name: model_name)
|
35
|
-
|
36
|
-
Vedeu::Borders::Border.build(border_attrs, &block).store
|
37
|
-
end
|
38
|
-
|
39
|
-
# Applies the default border to the interface.
|
40
|
-
#
|
41
|
-
# @example
|
42
|
-
# Vedeu.interface :my_interface do
|
43
|
-
# border!
|
44
|
-
#
|
45
|
-
# # ... some code
|
46
|
-
# end
|
47
|
-
#
|
48
|
-
# @return [Vedeu::Borders::Border]
|
49
|
-
def border!
|
50
|
-
border do
|
51
|
-
# adds default border
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Define the geometry for an interface.
|
56
|
-
#
|
57
|
-
# @example
|
58
|
-
# Vedeu.interface :my_interface do
|
59
|
-
# geometry do
|
60
|
-
# # ... see Vedeu::Geometries::DSL for DSL methods for
|
61
|
-
# # geometries.
|
62
|
-
# end
|
63
|
-
# end
|
64
|
-
#
|
65
|
-
# @param name [String|Symbol] The name of the interface; this is
|
66
|
-
# already provided when we define the interface or view,
|
67
|
-
# setting it here is just mirroring functionality of
|
68
|
-
# {Vedeu::Geometries::DSL.geometry}.
|
69
|
-
# @param block [Proc]
|
70
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
71
|
-
# @return [Vedeu::Geometries::Geometry]
|
72
|
-
# @see Vedeu::Geometries::DSL
|
73
|
-
def geometry(name = nil, &block)
|
74
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
75
|
-
|
76
|
-
model_name = name ? name : model.name
|
77
|
-
|
78
|
-
Vedeu::Geometries::Geometry.build(name: model_name, &block).store
|
79
|
-
end
|
80
|
-
|
81
|
-
end # Shared
|
82
|
-
|
83
|
-
end # DSL
|
84
|
-
|
85
|
-
end # Vedeu
|
data/lib/vedeu/dsl/stream.rb
DELETED
@@ -1,40 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# Provides methods to be used to define views.
|
6
|
-
#
|
7
|
-
class Stream
|
8
|
-
|
9
|
-
include Vedeu::DSL
|
10
|
-
include Vedeu::DSL::Presentation
|
11
|
-
include Vedeu::DSL::Text
|
12
|
-
|
13
|
-
# @param block [Proc]
|
14
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
15
|
-
# @return [void]
|
16
|
-
def stream(&block)
|
17
|
-
fail Vedeu::Error::RequiresBlock unless block_given?
|
18
|
-
|
19
|
-
model.add(model.class.build(attributes, &block))
|
20
|
-
end
|
21
|
-
|
22
|
-
private
|
23
|
-
|
24
|
-
# Returns the default attributes for the new model.
|
25
|
-
#
|
26
|
-
# Overrides {Vedeu::DSL#attributes}.
|
27
|
-
#
|
28
|
-
# @return [Hash<Symbol => void>]
|
29
|
-
def attributes
|
30
|
-
{
|
31
|
-
client: client,
|
32
|
-
parent: model.parent,
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
end # Stream
|
37
|
-
|
38
|
-
end # DSL
|
39
|
-
|
40
|
-
end # Vedeu
|
data/lib/vedeu/dsl/streams.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Vedeu
|
2
|
-
|
3
|
-
module DSL
|
4
|
-
|
5
|
-
# Provides the mechanism to add streams to a line via the DSL.
|
6
|
-
#
|
7
|
-
class Streams
|
8
|
-
|
9
|
-
# @raise [Vedeu::Error::RequiresBlock]
|
10
|
-
# @return [Vedeu::Views::Streams]
|
11
|
-
# def streams(&block)
|
12
|
-
# fail Vedeu::Error::RequiresBlock unless block_given?
|
13
|
-
|
14
|
-
# client = eval('self', block.binding)
|
15
|
-
|
16
|
-
# # Vedeu::Models::Stream.new
|
17
|
-
# end
|
18
|
-
|
19
|
-
end # Streams
|
20
|
-
|
21
|
-
end # DSL
|
22
|
-
|
23
|
-
end # Vedeu
|