Class: Vedeu::Borders::Refresh Private

Inherits:
Object
  • Object
show all
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

Class Method Summary collapse

Instance Method Summary collapse

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.

Parameters:

  • name (NilClass|Symbol|String) (defaults to: Vedeu.focus)

    The name of the model or target model to act upon. May default to ‘Vedeu.focus`.



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

#nameNilClass|Symbol|String (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.

Returns The name of the model, the target model or the name of the associated model.

Returns:

  • (NilClass|Symbol|String)

    The name of the model, the target model or the name of the associated model.



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.

Parameters:

  • name (NilClass|Symbol|String) (defaults to: Vedeu.focus)

    The name of the model or target model to act upon. May default to ‘Vedeu.focus`.

Returns:



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

#attributesHash<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.

Returns:

  • (Hash<Symbol => void>)


86
87
88
89
90
91
92
# File 'lib/vedeu/borders/refresh.rb', line 86

def attributes
  {
    colour: colour,
    name:   name,
    style:  style,
  }
end

#borderVedeu::Borders::Border (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 named border from the borders repository.



95
96
97
# File 'lib/vedeu/borders/refresh.rb', line 95

def border
  @border ||= Vedeu.borders.by_name(name)
end

#bottomString (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.

Note:

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.

Returns:

  • (String)


119
120
121
# File 'lib/vedeu/borders/refresh.rb', line 119

def bottom
  [(bottom_left if left?), captionbar, (bottom_right if right?)].compact
end

#bottom_borderArray<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.

Returns:

  • (Array<void>)


124
125
126
127
128
# File 'lib/vedeu/borders/refresh.rb', line 124

def bottom_border
  build_collection(bordered_width) do |ix|
    bottom_horizontal.dup.tap { |cell| cell.position = [yn, bx + ix] }
  end
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.

Parameters:

  • size (Fixnum)
  • block (Proc)

Returns:

  • (Array<void>)


207
208
209
# File 'lib/vedeu/borders/refresh.rb', line 207

def build_collection(size, &block)
  Array.new(size) { |e| yield(e) }
end

#by_nameArray<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.

Returns:



72
73
74
# File 'lib/vedeu/borders/refresh.rb', line 72

def by_name
  Vedeu.render_output(output) if enabled? && visible?
end

#captionbarObject (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.



186
187
188
189
190
# File 'lib/vedeu/borders/refresh.rb', line 186

def captionbar
  return bottom_border unless present?(caption)

  Vedeu::Borders::Caption.render(name, caption, bottom_border)
end

#geometryVedeu::Geometries::Geometry (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 named geometry from the geometries repository.



131
132
133
# File 'lib/vedeu/borders/refresh.rb', line 131

def geometry
  Vedeu.geometries.by_name(name)
end

#interfaceVedeu::Interfaces::Interface (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.

Note:

The parent of a border is always an interface.

Returns the interface by name.

Returns the named interface/view from the interfaces repository.



141
142
143
# File 'lib/vedeu/borders/refresh.rb', line 141

def interface
  @_interface ||= Vedeu.interfaces.by_name(name)
end

#leftArray<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.

Returns:

  • (Array<void>)


149
150
151
152
153
# File 'lib/vedeu/borders/refresh.rb', line 149

def left
  build_collection(bordered_height) do |iy|
    left_vertical.dup.tap { |cell| cell.position = [by + iy, x] }
  end
end

#outputArray<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.

Returns:



100
101
102
103
104
105
106
107
108
109
# File 'lib/vedeu/borders/refresh.rb', line 100

def output
  Vedeu.timer("Drawing border: '#{name}'") do
    [
      (top if top?),
      (left if left?),
      (right if right?),
      (bottom if bottom?),
    ].flatten
  end
end

#rightArray<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.

Returns:

  • (Array<void>)


158
159
160
161
162
# File 'lib/vedeu/borders/refresh.rb', line 158

def right
  build_collection(bordered_height) do |iy|
    right_vertical.dup.tap { |cell| cell.position = [by + iy, xn] }
  end
end

#titlebarArray<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
# File 'lib/vedeu/borders/refresh.rb', line 195

def titlebar
  return top_border unless present?(title)

  Vedeu::Borders::Title.render(name, title, top_border)
end

#topString (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.

Note:

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.

Returns:

  • (String)


172
173
174
# File 'lib/vedeu/borders/refresh.rb', line 172

def top
  [(top_left if left?), titlebar, (top_right if right?)].compact
end

#top_borderArray<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.

Returns:

  • (Array<void>)


177
178
179
180
181
# File 'lib/vedeu/borders/refresh.rb', line 177

def top_border
  build_collection(bordered_width) do |ix|
    top_horizontal.dup.tap { |cell| cell.position = [y, bx + ix] }
  end
end