Class: Vedeu::Borders::Refresh Private
- Inherits:
-
Object
- Object
- Vedeu::Borders::Refresh
- Extended by:
- Forwardable
- Includes:
- Common
- Defined in:
- lib/vedeu/borders/refresh.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Renders and refreshes the named border.
Instance Attribute Summary collapse
- #name ⇒ String|Symbol readonly protected private
Class Method Summary collapse
Instance Method Summary collapse
- #attributes ⇒ Hash<Symbol => void> private private
-
#border ⇒ Object
private
private
Returns the border for the interface.
-
#bottom ⇒ String
private
private
Renders the bottom border for the interface.
-
#build_collection(size, &block) ⇒ Array<void>
private
private
Build a collection with the given size of objects given within the block.
- #by_name ⇒ Array<Array<Vedeu::Cells::Char>> (also: #render) private
-
#captionbar ⇒ Object
private
private
An optional caption for when the bottom border is to be shown.
-
#geometry ⇒ Object
private
private
Returns the geometry for the interface.
-
#initialize(name = Vedeu.focus) ⇒ Vedeu::Borders::Refresh
constructor
private
Returns a new instance of Vedeu::Borders::Refresh.
-
#interface ⇒ Object
(also: #parent)
private
private
Returns the interface by name.
-
#left ⇒ Array<void>
private
private
Renders the left border for the interface.
- #output ⇒ Array<Array<Vedeu::Cells::Char>> private private
-
#right ⇒ Array<void>
private
private
Renders the right border for the interface.
-
#titlebar ⇒ Array<Vedeu::Cells::Horizontal|Vedeu::Cells::Char>
private
private
An optional title for when the top border is to be shown.
-
#top ⇒ String
private
private
Renders the top border for the interface.
Methods included from Common
#absent?, #array?, #boolean, #boolean?, #empty_value?, #escape?, #falsy?, #hash?, #line_model?, #numeric?, #positionable?, #present?, #snake_case, #stream_model?, #string?, #symbol?, #truthy?, #view_model?
Constructor Details
#initialize(name = Vedeu.focus) ⇒ Vedeu::Borders::Refresh
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns a new instance of Vedeu::Borders::Refresh.
67 68 69 |
# File 'lib/vedeu/borders/refresh.rb', line 67 def initialize(name = Vedeu.focus) @name = present?(name) ? name : Vedeu.focus end |
Instance Attribute Details
#name ⇒ String|Symbol (readonly, protected)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
81 82 83 |
# File 'lib/vedeu/borders/refresh.rb', line 81 def name @name end |
Class Method Details
.by_name(name = Vedeu.focus) ⇒ Array<Array<Vedeu::Cells::Char>>
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
57 58 59 60 61 |
# File 'lib/vedeu/borders/refresh.rb', line 57 def self.by_name(name = Vedeu.focus) name || Vedeu.focus new(name).by_name end |
Instance Method Details
#attributes ⇒ Hash<Symbol => void> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
86 87 88 89 90 91 92 |
# File 'lib/vedeu/borders/refresh.rb', line 86 def attributes { colour: colour, name: name, style: style, } end |
#border ⇒ Object (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the border for the interface.
97 98 99 |
# File 'lib/vedeu/borders/refresh.rb', line 97 def border @border ||= Vedeu.borders.by_name(name) end |
#bottom ⇒ String (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
If a caption has been specified, then the bottom border will include this caption unless the size of the interface is smaller than the padded caption length.
Renders the bottom border for the interface.
121 122 123 |
# File 'lib/vedeu/borders/refresh.rb', line 121 def bottom [(bottom_left if left?), , (bottom_right if right?)].compact end |
#build_collection(size, &block) ⇒ Array<void> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Build a collection with the given size of objects given within the block.
213 214 215 |
# File 'lib/vedeu/borders/refresh.rb', line 213 def build_collection(size, &block) Array.new(size) { |e| yield(e) } end |
#by_name ⇒ Array<Array<Vedeu::Cells::Char>> Also known as: render
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
72 73 74 |
# File 'lib/vedeu/borders/refresh.rb', line 72 def by_name Vedeu.render_output(output) if enabled? && visible? end |
#captionbar ⇒ Object (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
An optional caption for when the bottom border is to be shown.
180 181 182 183 184 185 186 187 188 189 190 |
# File 'lib/vedeu/borders/refresh.rb', line 180 def characters = build_collection(bordered_width) do |ix| cell = bottom_horizontal.dup cell.position = [yn, bx + ix] cell end return characters unless present?(caption) Vedeu::Borders::Caption.render(name, caption, characters) end |
#geometry ⇒ Object (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Returns the geometry for the interface.
128 129 130 |
# File 'lib/vedeu/borders/refresh.rb', line 128 def geometry Vedeu.geometries.by_name(name) end |
#interface ⇒ Object (private) Also known as: parent
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
The parent of a border is always an interface.
Returns the interface by name.
138 139 140 |
# File 'lib/vedeu/borders/refresh.rb', line 138 def interface @interface ||= Vedeu.interfaces.by_name(name) end |
#left ⇒ Array<void> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Renders the left border for the interface.
146 147 148 149 150 151 152 |
# File 'lib/vedeu/borders/refresh.rb', line 146 def left build_collection(bordered_height) do |iy| cell = left_vertical.dup cell.position = [by + iy, x] cell end end |
#output ⇒ Array<Array<Vedeu::Cells::Char>> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
102 103 104 105 106 107 108 109 110 111 |
# File 'lib/vedeu/borders/refresh.rb', line 102 def output Vedeu.timer("Drawing border: '#{name}'") do [ (top if top?), (left if left?), (right if right?), (bottom if bottom?), ].flatten end end |
#right ⇒ Array<void> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Renders the right border for the interface.
157 158 159 160 161 162 163 |
# File 'lib/vedeu/borders/refresh.rb', line 157 def right build_collection(bordered_height) do |iy| cell = right_vertical.dup cell.position = [by + iy, xn] cell end end |
#titlebar ⇒ Array<Vedeu::Cells::Horizontal|Vedeu::Cells::Char> (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
An optional title for when the top border is to be shown.
195 196 197 198 199 200 201 202 203 204 205 |
# File 'lib/vedeu/borders/refresh.rb', line 195 def characters = build_collection(bordered_width) do |ix| cell = top_horizontal.dup cell.position = [y, bx + ix] cell end return characters unless present?(title) Vedeu::Borders::Title.render(name, title, characters) end |
#top ⇒ String (private)
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
If a title has been specified, then the top border will include this title unless the size of the interface is smaller than the padded title length.
Renders the top border for the interface.
173 174 175 |
# File 'lib/vedeu/borders/refresh.rb', line 173 def top [(top_left if left?), , (top_right if right?)].compact end |