Class: Vedeu::Geometry::Geometry
- Inherits:
-
Object
- Object
- Vedeu::Geometry::Geometry
- Extended by:
- Forwardable
- Includes:
- Repositories::Model
- Defined in:
- lib/vedeu/geometry/geometry.rb
Overview
Consider storing the Terminal size at the time of first
creation, this allows us to return the interface to its original dimensions if the terminal resizes back to normal size.
Calculates and provides interface geometry determined by both the client’s requirements and the terminal’s current viewing area.
Instance Attribute Summary collapse
- #client ⇒ Object
- #height ⇒ Fixnum writeonly
- #horizontal_alignment ⇒ Symbol
- #maximised ⇒ Boolean (also: #maximised?)
- #name ⇒ String|Symbol
- #repository ⇒ Vedeu::Repositories::Repository included from Repositories::Model
- #vertical_alignment ⇒ Symbol
- #width ⇒ Fixnum writeonly
- #x ⇒ Fixnum writeonly
- #xn ⇒ Fixnum writeonly
- #y ⇒ Fixnum writeonly
- #yn ⇒ Fixnum writeonly
Class Method Summary collapse
Instance Method Summary collapse
-
#absent?(variable) ⇒ Boolean
included
from Common
private
Returns a boolean indicating whether a variable is nil or empty.
- #area ⇒ Vedeu::Geometry::Area private
- #area_attributes ⇒ Hash<Symbol => Boolean|Fixnum> private
-
#attributes ⇒ Hash<Symbol => Boolean|Fixnum|String|Symbol| Vedeu::Geometry::Repository]
Hash<Symbol => Boolean|Fixnum|String|Symbol| Vedeu::Geometry::Repository].
-
#defaults ⇒ Hash<Symbol => Boolean|Fixnum|NilClass|String|Symbol| Vedeu::Geometry::Repository]
private
Returns the default options/attributes for this class.
-
#demodulize(klass) ⇒ String
included
from Common
private
Removes the module part from the expression in the string.
-
#deputy(client = nil) ⇒ Vedeu::Geometry::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
-
#eql?(other) ⇒ Boolean
(also: #==)
An object is equal when its values are the same.
-
#initialize(attributes = {}) ⇒ Vedeu::Geometry::Geometry
constructor
Returns a new instance of Vedeu::Geometry::Geometry.
-
#maximise ⇒ Vedeu::Geometry::Geometry|NilClass
Will maximise the named interface geometry.
-
#present?(variable) ⇒ Boolean
included
from Common
private
Returns a boolean indicating whether a variable has a useful value.
-
#snake_case(name) ⇒ String
included
from Common
private
Converts a class name to a lowercase snake case string.
-
#store ⇒ void
included
from Repositories::Model
The model instance stored in the repository.
-
#unmaximise ⇒ Vedeu::Geometry::Geometry|NilClass
Will unmaximise the named interface geometry.
Constructor Details
#initialize(attributes = {}) ⇒ Vedeu::Geometry::Geometry
Returns a new instance of Vedeu::Geometry::Geometry.
107 108 109 110 111 |
# File 'lib/vedeu/geometry/geometry.rb', line 107 def initialize(attributes = {}) defaults.merge!(attributes).each do |key, value| instance_variable_set("@#{key}", value) end end |
Instance Attribute Details
#client ⇒ Object
83 84 85 |
# File 'lib/vedeu/geometry/geometry.rb', line 83 def client @client end |
#height=(value) ⇒ Fixnum (writeonly)
54 55 56 |
# File 'lib/vedeu/geometry/geometry.rb', line 54 def height=(value) @height = value end |
#horizontal_alignment ⇒ Symbol
42 43 44 |
# File 'lib/vedeu/geometry/geometry.rb', line 42 def horizontal_alignment @horizontal_alignment end |
#maximised ⇒ Boolean Also known as: maximised?
58 59 60 |
# File 'lib/vedeu/geometry/geometry.rb', line 58 def maximised @maximised end |
#name ⇒ String|Symbol
50 51 52 |
# File 'lib/vedeu/geometry/geometry.rb', line 50 def name @name end |
#repository ⇒ Vedeu::Repositories::Repository Originally defined in module Repositories::Model
#vertical_alignment ⇒ Symbol
46 47 48 |
# File 'lib/vedeu/geometry/geometry.rb', line 46 def vertical_alignment @vertical_alignment end |
#width=(value) ⇒ Fixnum (writeonly)
63 64 65 |
# File 'lib/vedeu/geometry/geometry.rb', line 63 def width=(value) @width = value end |
#x=(value) ⇒ Fixnum (writeonly)
67 68 69 |
# File 'lib/vedeu/geometry/geometry.rb', line 67 def x=(value) @x = value end |
#xn=(value) ⇒ Fixnum (writeonly)
71 72 73 |
# File 'lib/vedeu/geometry/geometry.rb', line 71 def xn=(value) @xn = value end |
#y=(value) ⇒ Fixnum (writeonly)
75 76 77 |
# File 'lib/vedeu/geometry/geometry.rb', line 75 def y=(value) @y = value end |
#yn=(value) ⇒ Fixnum (writeonly)
79 80 81 |
# File 'lib/vedeu/geometry/geometry.rb', line 79 def yn=(value) @yn = value end |
Class Method Details
.store(attributes, &block) ⇒ Vedeu::Geometry::Geometry
87 88 89 |
# File 'lib/vedeu/geometry/geometry.rb', line 87 def self.store(attributes, &block) new(attributes).store(&block) end |
Instance Method Details
#absent?(variable) ⇒ Boolean Originally defined in module Common
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 boolean indicating whether a variable is nil or empty.
#area ⇒ Vedeu::Geometry::Area (private)
197 198 199 |
# File 'lib/vedeu/geometry/geometry.rb', line 197 def area @area = Vedeu::Geometry::Area.from_attributes(area_attributes) end |
#area_attributes ⇒ Hash<Symbol => Boolean|Fixnum> (private)
202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
# File 'lib/vedeu/geometry/geometry.rb', line 202 def area_attributes { horizontal_alignment: @horizontal_alignment, maximised: @maximised, name: name, vertical_alignment: @vertical_alignment, x: @x.is_a?(Proc) ? @x.call : @x, xn: @xn.is_a?(Proc) ? @xn.call : @xn, x_xn: @width.is_a?(Proc) ? @width.call : @width, y: @y.is_a?(Proc) ? @y.call : @y, yn: @yn.is_a?(Proc) ? @yn.call : @yn, y_yn: @height.is_a?(Proc) ? @height.call : @height, } end |
#attributes ⇒ Hash<Symbol => Boolean|Fixnum|String|Symbol| Vedeu::Geometry::Repository]
Returns Hash<Symbol => Boolean|Fixnum|String|Symbol| Vedeu::Geometry::Repository].
115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 |
# File 'lib/vedeu/geometry/geometry.rb', line 115 def attributes { client: @client, height: height, horizontal_alignment: @horizontal_alignment, maximised: @maximised, name: @name, repository: @repository, vertical_alignment: @vertical_alignment, width: width, x: x, xn: xn, y: y, yn: yn, } end |
#defaults ⇒ Hash<Symbol => Boolean|Fixnum|NilClass|String|Symbol| Vedeu::Geometry::Repository] (private)
Returns the default options/attributes for this class.
221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 |
# File 'lib/vedeu/geometry/geometry.rb', line 221 def defaults { client: nil, height: nil, horizontal_alignment: :none, maximised: false, name: nil, repository: Vedeu.geometries, vertical_alignment: :none, width: nil, x: nil, xn: nil, y: nil, yn: nil, } end |
#demodulize(klass) ⇒ String Originally defined in module Common
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.
Removes the module part from the expression in the string.
#deputy(client = nil) ⇒ Vedeu::Geometry::DSL
Returns a DSL instance responsible for defining the DSL methods of this model.
141 142 143 |
# File 'lib/vedeu/geometry/geometry.rb', line 141 def deputy(client = nil) Vedeu::Geometry::DSL.new(self, client) end |
#eql?(other) ⇒ Boolean Also known as: ==
An object is equal when its values are the same.
149 150 151 |
# File 'lib/vedeu/geometry/geometry.rb', line 149 def eql?(other) self.class == other.class && name == other.name end |
#maximise ⇒ Vedeu::Geometry::Geometry|NilClass
Will maximise the named interface geometry. This means it will occupy all of the available space on the terminal window.
161 162 163 164 165 166 167 168 169 170 |
# File 'lib/vedeu/geometry/geometry.rb', line 161 def maximise return self if maximised? @maximised = true store do Vedeu.trigger(:_clear_) Vedeu.trigger(:_refresh_view_, name) end end |
#present?(variable) ⇒ Boolean Originally defined in module Common
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 boolean indicating whether a variable has a useful value.
#snake_case(name) ⇒ String Originally defined in module Common
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.
Converts a class name to a lowercase snake case string.
#store ⇒ void Originally defined in module Repositories::Model
Perhaps some validation could be added here?
If a block is given, store the model, return the model after yielding.
This method returns an undefined value.
Returns The model instance stored in the repository.
#unmaximise ⇒ Vedeu::Geometry::Geometry|NilClass
Will unmaximise the named interface geometry. Previously, when a geometry was maximised, then triggering the unmaximise event will return it to its usual defined size (terminal size permitting: when the terminal has been resized, then the new geometry size should adapt).
182 183 184 185 186 187 188 189 190 191 192 |
# File 'lib/vedeu/geometry/geometry.rb', line 182 def unmaximise return self unless maximised? @maximised = false store do Vedeu.trigger(:_clear_) Vedeu.trigger(:_refresh_) Vedeu.trigger(:_refresh_view_, name) end end |