vedeu 0.7.2 → 0.7.3

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.
Files changed (99) hide show
  1. checksums.yaml +4 -4
  2. data/docs/borders.md +1 -5
  3. data/docs/cursors.md +23 -92
  4. data/docs/events/application.md +1 -8
  5. data/docs/events/by_name/cleanup.md +7 -0
  6. data/docs/events/by_name/clear.md +2 -0
  7. data/docs/events/by_name/clear_group.md +6 -0
  8. data/docs/events/by_name/clear_view.md +5 -0
  9. data/docs/events/by_name/clear_view_content.md +5 -0
  10. data/docs/events/by_name/command.md +19 -0
  11. data/docs/events/by_name/cursor_bottom.md +7 -0
  12. data/docs/events/by_name/cursor_down.md +4 -0
  13. data/docs/events/by_name/cursor_left.md +6 -0
  14. data/docs/events/by_name/cursor_origin.md +6 -0
  15. data/docs/events/by_name/cursor_position.md +10 -0
  16. data/docs/events/by_name/cursor_reposition.md +4 -0
  17. data/docs/events/by_name/cursor_right.md +4 -0
  18. data/docs/events/by_name/cursor_top.md +7 -0
  19. data/docs/events/by_name/cursor_up.md +6 -0
  20. data/docs/events/by_name/drb_input.md +7 -0
  21. data/docs/events/by_name/drb_restart.md +5 -0
  22. data/docs/events/by_name/drb_retrieve_output.md +2 -0
  23. data/docs/events/by_name/drb_start.md +5 -0
  24. data/docs/events/by_name/drb_status.md +5 -0
  25. data/docs/events/by_name/drb_stop.md +5 -0
  26. data/docs/events/by_name/drb_store_output.md +2 -0
  27. data/docs/events/by_name/editor.md +9 -0
  28. data/docs/events/by_name/editor_delete_character.md +5 -0
  29. data/docs/events/by_name/editor_delete_line.md +5 -0
  30. data/docs/events/by_name/editor_down.md +5 -0
  31. data/docs/events/by_name/editor_execute.md +3 -0
  32. data/docs/events/by_name/editor_insert_character.md +7 -0
  33. data/docs/events/by_name/editor_insert_line.md +5 -0
  34. data/docs/events/by_name/editor_left.md +5 -0
  35. data/docs/events/by_name/editor_right.md +5 -0
  36. data/docs/events/by_name/editor_up.md +5 -0
  37. data/docs/events/by_name/exit.md +6 -0
  38. data/docs/events/by_name/focus_by_name.md +6 -0
  39. data/docs/events/by_name/focus_next.md +6 -0
  40. data/docs/events/by_name/focus_prev.md +6 -0
  41. data/docs/events/by_name/goto.md +8 -0
  42. data/docs/events/by_name/hide_cursor.md +10 -0
  43. data/docs/events/by_name/hide_group.md +5 -0
  44. data/docs/events/by_name/hide_interface.md +5 -0
  45. data/docs/events/by_name/initialize.md +6 -0
  46. data/docs/events/by_name/keypress.md +40 -0
  47. data/docs/events/by_name/log.md +7 -0
  48. data/docs/events/by_name/maximise.md +6 -0
  49. data/docs/events/by_name/menu_bottom.md +4 -0
  50. data/docs/events/by_name/menu_current.md +4 -0
  51. data/docs/events/by_name/menu_deselect.md +4 -0
  52. data/docs/events/by_name/menu_items.md +5 -0
  53. data/docs/events/by_name/menu_next.md +5 -0
  54. data/docs/events/by_name/menu_prev.md +5 -0
  55. data/docs/events/by_name/menu_select.md +4 -0
  56. data/docs/events/by_name/menu_selected.md +4 -0
  57. data/docs/events/by_name/menu_top.md +4 -0
  58. data/docs/events/by_name/menu_view.md +5 -0
  59. data/docs/events/by_name/mode_switch.md +7 -0
  60. data/docs/events/by_name/movement_refresh.md +19 -0
  61. data/docs/events/by_name/refresh.md +9 -0
  62. data/docs/events/by_name/refresh_border.md +5 -0
  63. data/docs/events/by_name/refresh_cursor.md +5 -0
  64. data/docs/events/by_name/refresh_group.md +4 -0
  65. data/docs/events/by_name/refresh_view.md +4 -0
  66. data/docs/events/by_name/refresh_view_content.md +4 -0
  67. data/docs/events/by_name/resize.md +5 -0
  68. data/docs/events/by_name/show_cursor.md +10 -0
  69. data/docs/events/by_name/show_group.md +5 -0
  70. data/docs/events/by_name/show_interface.md +5 -0
  71. data/docs/events/by_name/toggle_cursor.md +9 -0
  72. data/docs/events/by_name/toggle_group.md +5 -0
  73. data/docs/events/by_name/toggle_interface.md +5 -0
  74. data/docs/events/by_name/unmaximise.md +6 -0
  75. data/docs/events/document.md +9 -45
  76. data/docs/events/drb.md +7 -31
  77. data/docs/events/focus.md +3 -18
  78. data/docs/events/menu.md +10 -44
  79. data/docs/events/refresh.md +6 -25
  80. data/docs/events/system.md +8 -101
  81. data/docs/events/view.md +4 -36
  82. data/docs/events/visibility.md +10 -48
  83. data/lib/vedeu/borders/border.rb +117 -37
  84. data/lib/vedeu/borders/refresh.rb +29 -113
  85. data/lib/vedeu/borders/repository.rb +0 -5
  86. data/lib/vedeu/buffers/buffer.rb +13 -17
  87. data/lib/vedeu/buffers/refresh.rb +4 -4
  88. data/lib/vedeu/cursors/refresh.rb +2 -7
  89. data/lib/vedeu/groups/clear.rb +3 -1
  90. data/lib/vedeu/groups/refresh.rb +2 -2
  91. data/lib/vedeu/interfaces/clear.rb +2 -2
  92. data/lib/vedeu/output/refresh.rb +2 -2
  93. data/lib/vedeu/repositories/model.rb +2 -6
  94. data/lib/vedeu/repositories/repository.rb +17 -6
  95. data/lib/vedeu/runtime/flags.rb +2 -0
  96. data/lib/vedeu/version.rb +1 -1
  97. data/test/lib/vedeu/borders/border_test.rb +128 -12
  98. data/test/lib/vedeu/cursors/dsl_test.rb +13 -0
  99. metadata +72 -2
data/docs/events/focus.md CHANGED
@@ -4,23 +4,8 @@
4
4
 
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
- ### `:_focus_by_name_`
8
- When triggered with an interface name will focus that interface and
9
- restore the cursor position and visibility.
7
+ {include:file:docs/events/by_name/focus_by_name.md}
10
8
 
11
- Vedeu.trigger(:_focus_by_name_, name) # or
12
- Vedeu.focus_by_name(name)
9
+ {include:file:docs/events/by_name/focus_next.md}
13
10
 
14
- ### `:_focus_next_`
15
- When triggered will focus the next visible interface and restore the
16
- cursor position and visibility.
17
-
18
- Vedeu.trigger(:_focus_next_) # or
19
- Vedeu.focus_next
20
-
21
- ### `:_focus_prev_`
22
- When triggered will focus the previous visible interface and restore
23
- the cursor position and visibility.
24
-
25
- Vedeu.trigger(:_focus_prev_) # or
26
- Vedeu.focus_previous
11
+ {include:file:docs/events/by_name/focus_prev.md}
data/docs/events/menu.md CHANGED
@@ -4,56 +4,22 @@
4
4
 
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
- ### `:_menu_bottom_`
8
- Makes the last menu item the current menu item.
7
+ {include:file:docs/events/by_name/menu_bottom.md}
9
8
 
10
- Vedeu.trigger(:_menu_bottom_, name)
9
+ {include:file:docs/events/by_name/menu_current.md}
11
10
 
12
- ### `:_menu_current_`
13
- Returns the current menu item.
11
+ {include:file:docs/events/by_name/menu_deselect.md}
14
12
 
15
- Vedeu.trigger(:_menu_current_, name)
13
+ {include:file:docs/events/by_name/menu_items.md}
16
14
 
17
- ### `:_menu_deselect_`
18
- Deselects all menu items.
15
+ {include:file:docs/events/by_name/menu_next.md}
19
16
 
20
- Vedeu.trigger(:_menu_deselect_, name)
17
+ {include:file:docs/events/by_name/menu_prev.md}
21
18
 
22
- ### `:_menu_items_`
23
- Returns all the menu items with respective `current` or `selected`
24
- boolean indicators.
19
+ {include:file:docs/events/by_name/menu_selected.md}
25
20
 
26
- Vedeu.trigger(:_menu_items_, name)
21
+ {include:file:docs/events/by_name/menu_select.md}
27
22
 
28
- ### `:_menu_next_`
29
- Makes the next menu item the current menu item, until it reaches the
30
- last item.
23
+ {include:file:docs/events/by_name/menu_top.md}
31
24
 
32
- Vedeu.trigger(:_menu_next_, name)
33
-
34
- ### `:_menu_prev_`
35
- Makes the previous menu item the current menu item, until it reaches
36
- the first item.
37
-
38
- Vedeu.trigger(:_menu_prev_, name)
39
-
40
- ### `:_menu_selected_`
41
- Returns the selected menu item.
42
-
43
- Vedeu.trigger(:_menu_selected_, name)
44
-
45
- ### `:_menu_select_`
46
- Makes the current menu item also the selected menu item.
47
-
48
- Vedeu.trigger(:_menu_select_, name)
49
-
50
- ### `:_menu_top_`
51
- Makes the first menu item the current menu item.
52
-
53
- Vedeu.trigger(:_menu_top_, name)
54
-
55
- ### `:_menu_view_`
56
- Returns a subset of the menu items; starting at the current item to
57
- the last item.
58
-
59
- Vedeu.trigger(:_menu_view_, name)
25
+ {include:file:docs/events/by_name/menu_view.md}
@@ -4,33 +4,14 @@
4
4
 
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
- ### `:_refresh_`
8
- Refreshes all registered interfaces.
7
+ {include:file:docs/events/by_name/refresh.md}
9
8
 
10
- The interfaces will be refreshed in z-index order, meaning that
11
- interfaces with a lower z-index will be drawn first. This means
12
- overlapping interfaces will be drawn as specified. Hidden interfaces
13
- will be still refreshed in memory but not shown.
9
+ {include:file:docs/events/by_name/refresh_border.md}
14
10
 
15
- Vedeu.trigger(:_refresh_)
11
+ {include:file:docs/events/by_name/refresh_cursor.md}
16
12
 
17
- ### `:_refresh_cursor_`
18
- Will cause the named cursor to refresh, or the cursor of the interface
19
- which is currently in focus.
13
+ {include:file:docs/events/by_name/refresh_group.md}
20
14
 
21
- Vedeu.trigger(:_refresh_cursor_, name)
15
+ {include:file:docs/events/by_name/refresh_view.md}
22
16
 
23
- ### `:_refresh_group_`
24
- Will cause all interfaces in the named group to refresh.
25
-
26
- Vedeu.trigger(:_refresh_group_, name)
27
-
28
- ### `:_refresh_view_`
29
- Will cause the named view to refresh.
30
-
31
- Vedeu.trigger(:_refresh_view_, name)
32
-
33
- ### `:_refresh_view_content_`
34
- Will cause only the content of the named view to refresh.
35
-
36
- Vedeu.trigger(:_refresh_view_content_, name)
17
+ {include:file:docs/events/by_name/refresh_view_content.md}
@@ -2,111 +2,18 @@
2
2
 
3
3
  ## System Events
4
4
 
5
- ### `:_cleanup_`
6
- Vedeu triggers this event when `:_exit_` is triggered. You can hook
7
- into this to perform a special action before the application
8
- terminates. Saving the user's work, session or preferences might be
9
- popular here.
5
+ {include:file:docs/events/by_name/cleanup.md}
10
6
 
11
- Vedeu.trigger(:_exit_)
7
+ {include:file:docs/events/by_name/command.md}
12
8
 
13
- ### `:_command_`
14
- This event is used by Vedeu internally, though you can bind to it if
15
- you wish. It is preferred for you to bind to `:command` though.
9
+ {include:file:docs/events/by_name/editor.md}
16
10
 
17
- Will cause the triggering of the `:command` event; which you should
18
- define to 'do things'.
11
+ {include:file:docs/events/by_name/exit.md}
19
12
 
20
- Vedeu.trigger(:_command_, command)
13
+ {include:file:docs/events/by_name/initialize.md}
21
14
 
22
- Vedeu.bind(:command) do
23
- # ... your code here ...
24
- end
15
+ {include:file:docs/events/by_name/keypress.md}
25
16
 
26
- Alternatively, you can access commands entered using the following
27
- API methods: (See {Vedeu::Input::Store} for more details).
17
+ {include:file:docs/events/by_name/log.md}
28
18
 
29
- Vedeu.all_commands
30
-
31
- Vedeu.last_command
32
-
33
- ### `:_editor_`
34
- This event is called by {Vedeu::Input::Capture#read}. When
35
- invoked, the key will be passed to the editor for currently
36
- focussed view.
37
-
38
- Note: 'key' is a String for alphanumeric keys and special keys are
39
- represented by Symbols.
40
-
41
- Vedeu.trigger(:_editor_, key)
42
-
43
- ### `:_exit_`
44
- When triggered, Vedeu will trigger a `:cleanup` event which you can
45
- define (to save files, etc) and attempt to exit.
46
-
47
- Vedeu.trigger(:_exit_)
48
- Vedeu.exit
49
-
50
- ### `:_initialize_`
51
- Vedeu triggers this event when it is ready to enter the main loop.
52
- Client applications can listen for this event and perform some
53
- action(s), like render the first screen, interface or make a sound.
54
-
55
- Vedeu.trigger(:_initialize_)
56
-
57
- ### `:_keypress_`
58
- This event is used by Vedeu internally, though you can bind to it if
59
- you wish. It is preferred for you to bind to `:key` though.
60
-
61
- When the name is given:
62
-
63
- - The given key is passed to the named keymap. If the keymap is
64
- registered, and the key has an associated action assigned, then
65
- the action will be called/triggered.
66
- - If the keymap is not registered, the key will be passed to the
67
- global keymap to be actioned, or ignored if the global keymap does
68
- not have an action assigned for the key pressed.
69
-
70
- When the name is not given:
71
-
72
- - The given key is passed to the named keymap associated with the
73
- interface/view currently in focus. If the key has an associated
74
- action assigned, then the action will be called or triggered,
75
- otherwise, the key is (as above) passed to the global keymap to be
76
- processed.
77
-
78
- It is also to be noted, that a `:key` event will be triggered
79
- irrespective of the conditions above, you can bind to this event
80
- separately to 'do things'.
81
-
82
- Vedeu.bind(:key) do
83
- # ... your code here ...
84
- end
85
-
86
- Alternatively, you can access keypresses entered using the following
87
- API methods: (See {Vedeu::Input::Store} for more details).
88
-
89
- Vedeu.all_keypresses
90
-
91
- Vedeu.last_keypress
92
-
93
- A list of supported keypresses can be found here:
94
- {Vedeu::Input::Capture}.
95
-
96
- Vedeu.trigger(:_keypress_, key, optional_name)
97
-
98
- ### `:_log_`
99
- When triggered with a message will cause Vedeu to log the message if
100
- logging is enabled in the configuration.
101
-
102
- Note: 'message' is a String.
103
-
104
- Vedeu.trigger(:_log_, message)
105
-
106
- ### `:_mode_switch_`
107
- When triggered, Vedeu switches between modes of the terminal. The idea
108
- here being that the raw mode is for single keypress actions, whilst
109
- fake and cooked modes allow the user to enter more elaborate commands-
110
- such as commands with arguments.
111
-
112
- Vedeu.trigger(:_mode_switch_, mode)
19
+ {include:file:docs/events/by_name/mode_switch.md}
data/docs/events/view.md CHANGED
@@ -4,42 +4,10 @@
4
4
 
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
- ### `:_maximise_`
8
- Maximising an interface.
7
+ {include:file:docs/events/by_name/maximise.md}
9
8
 
10
- Vedeu.trigger(:_maximise_, name)
9
+ {include:file:docs/events/by_name/movement_refresh.md}
11
10
 
12
- See {Vedeu::Geometries::Geometry#maximise}
11
+ {include:file:docs/events/by_name/resize.md}
13
12
 
14
- ### `:_movement_refresh_`
15
- When triggered, triggers additional events which aid the updating of
16
- the output. Used when moving an interface/view.
17
-
18
- Vedeu.trigger(:_movement_refresh_, name)
19
-
20
- At this time, triggering this event will:
21
-
22
- - Clear the entire terminal (assuming at least one renderer is the
23
- default (Vedeu::Renderer::Terminal)). This action is performed when
24
- moving an interface/view so that there are no 'artefacts' left
25
- behind.
26
- - Refresh the entire terminal (as above). This means all visible
27
- interfaces are re-rendered. This action is performed to ensure other
28
- views currently visible are rendered in their current position.
29
- - Clears the named view. This action removes the named view from the
30
- terminal (or output).
31
- - Refreshes the named view. This action adds the named view to the
32
- terminal (or output); in the new position.
33
-
34
- ### `:_resize_`
35
- When triggered will cause Vedeu to trigger the `:_clear_` and
36
- `:_refresh_` events. Please see those events for their behaviour.
37
-
38
- Vedeu.trigger(:_resize_)
39
-
40
- ### `:_unmaximise_`
41
- Unmaximising an interface.
42
-
43
- Vedeu.trigger(:_unmaximise_, name)
44
-
45
- See {Vedeu::Geometries::Geometry#unmaximise}
13
+ {include:file:docs/events/by_name/unmaximise.md}
@@ -4,60 +4,22 @@
4
4
 
5
5
  Note: 'name' is a Symbol unless mentioned otherwise.
6
6
 
7
- ### `:_clear_`
8
- See {Vedeu::Buffers::Terminal#clear}
7
+ {include:file:docs/events/by_name/clear.md}
9
8
 
10
- ### `:_clear_group_`
11
- Clears the spaces occupied by the interfaces belonging to the named
12
- group.
9
+ {include:file:docs/events/by_name/clear_group.md}
13
10
 
14
- Vedeu.trigger(:_clear_group_, name)
15
- Vedeu.clear_by_group(name)
11
+ {include:file:docs/events/by_name/clear_view.md}
16
12
 
17
- ### `:_clear_view_`
18
- Clears the named view/interface area.
13
+ {include:file:docs/events/by_name/clear_view_content.md}
19
14
 
20
- Vedeu.trigger(:_clear_view_, name)
21
- Vedeu.clear_by_name(name)
15
+ {include:file:docs/events/by_name/hide_group.md}
22
16
 
23
- ### `:_clear_view_content_`
24
- Clears only the content of the named view/interface area.
17
+ {include:file:docs/events/by_name/hide_interface.md}
25
18
 
26
- Vedeu.trigger(:_clear_view_content_, name)
27
- Vedeu.clear_content_by_name(name)
19
+ {include:file:docs/events/by_name/show_group.md}
28
20
 
29
- ### `:_hide_group_`
30
- Hiding a group of interfaces.
21
+ {include:file:docs/events/by_name/show_interface.md}
31
22
 
32
- Vedeu.trigger(:_hide_group_, name)
33
- Vedeu.hide_group(name)
23
+ {include:file:docs/events/by_name/toggle_group.md}
34
24
 
35
- ### `:_hide_interface_`
36
- Hide an interface by name.
37
-
38
- Vedeu.trigger(:_hide_interface_, name)
39
- Vedeu.hide_interface(name)
40
-
41
- ### `:_show_group_`
42
- Showing a group of interfaces.
43
-
44
- Vedeu.trigger(:_show_group_, name)
45
- Vedeu.show_group(name)
46
-
47
- ### `:_show_interface_`
48
- Show an interface by name.
49
-
50
- Vedeu.trigger(:_show_interface_, name)
51
- Vedeu.show_interface(name)
52
-
53
- ### `:_toggle_group_`
54
- Toggling a group of interfaces.
55
-
56
- Vedeu.trigger(:_toggle_group_, name)
57
- Vedeu.toggle_group(name)
58
-
59
- ### `:_toggle_interface_`
60
- Toggling an interface.
61
-
62
- Vedeu.trigger(:_toggle_interface_, name)
63
- Vedeu.toggle_interface(name)
25
+ {include:file:docs/events/by_name/toggle_interface.md}
@@ -21,20 +21,20 @@ module Vedeu
21
21
  include Vedeu::Repositories::Model
22
22
  include Vedeu::Presentation
23
23
 
24
- # @!attribute [rw] bottom_left
24
+ # @!attribute [w] bottom_left
25
25
  # @return [String] The character to be used for the bottom left
26
26
  # border if enabled.
27
- attr_accessor :bottom_left
27
+ attr_writer :bottom_left
28
28
 
29
- # @!attribute [rw] bottom_right
29
+ # @!attribute [w] bottom_right
30
30
  # @return [String] The character to be used for the bottom right
31
31
  # border if enabled.
32
- attr_accessor :bottom_right
32
+ attr_writer :bottom_right
33
33
 
34
- # @!attribute [rw] bottom_horizontal
34
+ # @!attribute [w] bottom_horizontal
35
35
  # @return [String] The character to be used for the bottom
36
36
  # horizontal border if enabled.
37
- attr_accessor :bottom_horizontal
37
+ attr_writer :bottom_horizontal
38
38
 
39
39
  # @!attribute [rw] caption
40
40
  # @return [String] An optional caption for when the bottom
@@ -75,35 +75,35 @@ module Vedeu
75
75
  # to be shown.
76
76
  attr_accessor :title
77
77
 
78
- # @!attribute [rw] top_left
78
+ # @!attribute [w] top_left
79
79
  # @return [String] The character to be used for the top left
80
80
  # border if enabled.
81
- attr_accessor :top_left
81
+ attr_writer :top_left
82
82
 
83
- # @!attribute [rw] top_right
83
+ # @!attribute [w] top_right
84
84
  # @return [String] The character to be used for the top right
85
85
  # border if enabled.
86
- attr_accessor :top_right
86
+ attr_writer :top_right
87
87
 
88
- # @!attribute [rw] top_horizontal
88
+ # @!attribute [w] top_horizontal
89
89
  # @return [String] The character to be used for the top
90
90
  # horizontal border if enabled.
91
- attr_accessor :top_horizontal
91
+ attr_writer :top_horizontal
92
92
 
93
93
  # @!attribute [rw] vertical
94
94
  # @return [String] The character to be used for the vertical
95
95
  # side border.
96
96
  attr_accessor :vertical
97
97
 
98
- # @!attribute [rw] left_vertical
98
+ # @!attribute [w] left_vertical
99
99
  # @return [String] The character to be used for the left
100
100
  # vertical side border.
101
- attr_accessor :left_vertical
101
+ attr_writer :left_vertical
102
102
 
103
- # @!attribute [rw] right_vertical
103
+ # @!attribute [w] right_vertical
104
104
  # @return [String] The character to be used for the right
105
105
  # vertical side border.
106
- attr_accessor :right_vertical
106
+ attr_writer :right_vertical
107
107
 
108
108
  # @!attribute [r] name
109
109
  # @return [String|Symbol] Associates the border with the
@@ -115,7 +115,7 @@ module Vedeu
115
115
  # view associated with this border.
116
116
  attr_reader :parent
117
117
 
118
- # @!attribute [r] enabled
118
+ # @!attribute [rw] enabled
119
119
  # @return [Boolean] Determines whether this border should be
120
120
  # rendered.
121
121
  attr_accessor :enabled
@@ -126,17 +126,21 @@ module Vedeu
126
126
  # @param attributes [Hash<Symbol => Boolean|Hash|NilClass|
127
127
  # String|Symbol|Vedeu::Borders::Repository|
128
128
  # Vedeu::Presentation::Style>]
129
- # @option attributes bottom_left [String] The bottom left border
130
- # character.
131
- # @option attributes bottom_right [String] The bottom right
132
- # border character.
129
+ # @option attributes bottom_left [String]
130
+ # The bottom left border character.
131
+ # @option attributes bottom_right [String]
132
+ # The bottom right border character.
133
133
  # @option attributes colour [Hash]
134
134
  # @option attributes enabled [Boolean] Indicate whether the
135
135
  # border is to be shown for this interface.
136
- # @option attributes horizontal [String] The horizontal border
137
- # character.
136
+ # @option attributes horizontal [String]
137
+ # The horizontal border character.
138
+ # @option attributes left_vertical [String]
139
+ # The left vertical border character.
138
140
  # @option attributes name [String|Symbol] The name of the
139
141
  # interface to which this border relates.
142
+ # @option attributes right_vertical [String]
143
+ # The right vertical border character.
140
144
  # @option attributes style [Vedeu::Presentation::Style]
141
145
  # @option attributes show_bottom [Boolean] Indicate whether the
142
146
  # bottom border is to be shown.
@@ -150,12 +154,14 @@ module Vedeu
150
154
  # the top border is to be shown.
151
155
  # @option attributes caption [String] An optional caption for
152
156
  # when the bottom border is to be shown.
153
- # @option attributes top_left [String] The top left border
154
- # character.
155
- # @option attributes top_right [String] The top right border
156
- # character.
157
- # @option attributes vertical [String] The vertical border
158
- # character.
157
+ # @option attributes top_horizontal [String]
158
+ # The top horizontal border character.
159
+ # @option attributes top_left [String]
160
+ # The top left border character.
161
+ # @option attributes top_right [String]
162
+ # The top right border character.
163
+ # @option attributes vertical [String]
164
+ # The vertical border character.
159
165
  # @return [Vedeu::Borders::Border]
160
166
  def initialize(attributes = {})
161
167
  defaults.merge!(attributes).each do |key, value|
@@ -167,28 +173,28 @@ module Vedeu
167
173
  # Vedeu::Borders::Repository|Vedeu::Presentation::Style>]
168
174
  def attributes
169
175
  {
170
- bottom_horizontal: @bottom_horizontal,
171
- bottom_left: @bottom_left,
172
- bottom_right: @bottom_right,
176
+ bottom_horizontal: bottom_horizontal,
177
+ bottom_left: bottom_left,
178
+ bottom_right: bottom_right,
173
179
  caption: @caption,
174
180
  client: @client,
175
181
  colour: @colour,
176
182
  enabled: @enabled,
177
183
  horizontal: @horizontal,
178
- left_vertical: @left_vertical,
184
+ left_vertical: left_vertical,
179
185
  name: @name,
180
186
  parent: @parent,
181
187
  repository: @repository,
182
- right_vertical: @right_vertical,
188
+ right_vertical: right_vertical,
183
189
  show_bottom: @show_bottom,
184
190
  show_left: @show_left,
185
191
  show_right: @show_right,
186
192
  show_top: @show_top,
187
193
  style: @style,
188
194
  title: @title,
189
- top_horizontal: @top_horizontal,
190
- top_left: @top_left,
191
- top_right: @top_right,
195
+ top_horizontal: top_horizontal,
196
+ top_left: top_left,
197
+ top_right: top_right,
192
198
  vertical: @vertical,
193
199
  }
194
200
  end
@@ -205,8 +211,82 @@ module Vedeu
205
211
  Vedeu::Borders::DSL.new(self, client)
206
212
  end
207
213
 
214
+ # Return the client application configured left vertical cell
215
+ # character, or the default if not set.
216
+ #
217
+ # @return [Vedeu::Cells::LeftVertical]
218
+ def left_vertical
219
+ @left_vertical ||= Vedeu::Cells::LeftVertical.new(cell_attributes)
220
+ end
221
+
222
+ # Return the client application configured right vertical cell
223
+ # character, or the default if not set.
224
+ #
225
+ # @return [Vedeu::Cells::RightVertical]
226
+ def right_vertical
227
+ @right_vertical ||= Vedeu::Cells::RightVertical.new(cell_attributes)
228
+ end
229
+
230
+ # Return the client application configured top horizontal cell
231
+ # character, or the default if not set.
232
+ #
233
+ # @return [Vedeu::Cells::TopHorizontal]
234
+ def top_horizontal
235
+ @top_horizontal ||= Vedeu::Cells::TopHorizontal.new(cell_attributes)
236
+ end
237
+
238
+ # Return the client application configured top left cell
239
+ # character, or the default if not set.
240
+ #
241
+ # @return [Vedeu::Cells::TopLeft]
242
+ def top_left
243
+ @top_left ||= Vedeu::Cells::TopLeft.new(cell_attributes)
244
+ end
245
+
246
+ # Return the client application configured top right cell
247
+ # character, or the default if not set.
248
+ #
249
+ # @return [Vedeu::Cells::TopRight]
250
+ def top_right
251
+ @top_right ||= Vedeu::Cells::TopRight.new(cell_attributes)
252
+ end
253
+
254
+ # Return the client application configured bottom horizontal
255
+ # cell character, or the default if not set.
256
+ #
257
+ # @return [Vedeu::Cells::BottomHorizontal]
258
+ def bottom_horizontal
259
+ @bottom_horizontal ||= Vedeu::Cells::BottomHorizontal
260
+ .new(cell_attributes)
261
+ end
262
+
263
+ # Return the client application configured bottom left cell
264
+ # character, or the default if not set.
265
+ #
266
+ # @return [Vedeu::Cells::BottomLeft]
267
+ def bottom_left
268
+ @bottom_left ||= Vedeu::Cells::BottomLeft.new(cell_attributes)
269
+ end
270
+
271
+ # Return the client application configured bottom right cell
272
+ # character, or the default if not set.
273
+ #
274
+ # @return [Vedeu::Cells::BottomRight]
275
+ def bottom_right
276
+ @bottom_right ||= Vedeu::Cells::BottomRight.new(cell_attributes)
277
+ end
278
+
208
279
  private
209
280
 
281
+ # @return [Hash<Symbol => void>]
282
+ def cell_attributes
283
+ {
284
+ colour: @colour,
285
+ name: @name,
286
+ style: @style,
287
+ }
288
+ end
289
+
210
290
  # The default values for a new instance of this class.
211
291
  #
212
292
  # @return [Hash<Symbol => Boolean|Hash|NilClass|String|Symbol|