Class: Vedeu::Geometries::Move Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Includes:
Repositories::Defaults
Defined in:
lib/vedeu/geometries/move.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.

Move an interface/view via changing its geometry.

When moving an interface/view;

1) Reset the alignment and maximised states to false;

it wont be aligned to a side if moved, and cannot be moved
if maximised.

2) Get the current coordinates of the interface, then: 3) Override the attributes with the new coordinates for

desired movement; these are usually +/- 1 of the current
state, depending on direction.

Instance Attribute Summary collapse

Class Method Summary collapse

Instance Method Summary collapse

Instance Attribute Details

#directionSymbol (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 direction to move; one of: :down, :left, :origin, :right, :up.

Returns:

  • (Symbol)

    The direction to move; one of: :down, :left, :origin, :right, :up.



53
54
55
# File 'lib/vedeu/geometries/move.rb', line 53

def direction
  @direction
end

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

Returns The name of the interface/view.

Returns:

  • (String|Symbol)

    The name of the interface/view.



57
58
59
# File 'lib/vedeu/geometries/move.rb', line 57

def name
  @name
end

#offsetSymbol (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 number of columns or rows to move by.

Returns:

  • (Symbol)

    The number of columns or rows to move by.



61
62
63
# File 'lib/vedeu/geometries/move.rb', line 61

def offset
  @offset
end

Class Method Details

.move(attributes = {}) ⇒ Boolean|Vedeu::Geometries::Geometry

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.



34
35
36
# File 'lib/vedeu/geometries/move.rb', line 34

def self.move(attributes = {})
  new(attributes).move
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.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

#become(klass, attributes) ⇒ Class 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 one class into another.

Parameters:

  • klass (Class)

    The class to become an instance of.

  • attributes (Hash)

    The attributes of klass.

Returns:

  • (Class)

    Returns a new instance of klass.

#boolean(value) ⇒ 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 the value was a boolean.

Parameters:

  • value (void)

Returns:

#boolean?(value) ⇒ 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 the value is a Boolean.

Parameters:

Returns:

#defaultsHash<Symbol => Fixnum|String|Symbol> (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 => Fixnum|String|Symbol>)


66
67
68
69
70
71
72
# File 'lib/vedeu/geometries/move.rb', line 66

def defaults
  {
    direction: :none,
    name:      '',
    offset:    1,
  }
end

#direction?Boolean (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:



75
76
77
# File 'lib/vedeu/geometries/move.rb', line 75

def direction?
  direction != :none
end

#downHash<Symbol => Fixnum] (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.

Moves the geometry down by the offset.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



82
83
84
85
86
87
# File 'lib/vedeu/geometries/move.rb', line 82

def down
  {
    y: y + offset,
    yn: yn + offset,
  }
end

#escape?(value) ⇒ 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 the value is an escape sequence object (e.g. Vedeu::Cells::Escape.)

Returns:

#eventHash<Symbol => Symbol> (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 => Symbol>)


90
91
92
93
94
95
96
97
98
# File 'lib/vedeu/geometries/move.rb', line 90

def event
  {
    down:   :_cursor_down_,
    left:   :_cursor_left_,
    origin: :_cursor_origin_,
    right:  :_cursor_right_,
    up:     :_cursor_up_,
  }[direction]
end

#falsy?(value) ⇒ 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 the value should be considered false.

Parameters:

  • value (void)

Returns:

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



101
102
103
# File 'lib/vedeu/geometries/move.rb', line 101

def geometry
  @geometry ||= Vedeu.geometries.by_name(name)
end

#hash?(value) ⇒ 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 the value is a Hash.

Parameters:

  • value (Hash|void)

Returns:

#initialize(attributes = {}) ⇒ void Originally defined in module Repositories::Defaults

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 particular key is missing from the attributes parameter, then it is added with the respective value from #defaults.

Returns a new instance of the class including this module.

Parameters:

  • attributes (Hash) (defaults to: {})

#leftHash<Symbol => Fixnum] (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.

Moves the geometry left by the offset.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



108
109
110
111
112
113
# File 'lib/vedeu/geometries/move.rb', line 108

def left
  {
    x: x - offset,
    xn: xn - offset,
  }
end

#line_model?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 the model is a Views::Line.

Returns:

#moveBoolean|Vedeu::Geometries::Geometry

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.



39
40
41
42
43
44
45
46
# File 'lib/vedeu/geometries/move.rb', line 39

def move
  return false unless valid?

  Vedeu::Geometries::Geometry.store(new_attributes) do
    update_cursor!
    refresh!
  end
end

#new_attributesHash<Symbol => Boolean|String|Symbol> (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 => Boolean|String|Symbol>)


116
117
118
# File 'lib/vedeu/geometries/move.rb', line 116

def new_attributes
  geometry.attributes.merge!(unalign_unmaximise).merge!(send(direction))
end

#numeric?(value) ⇒ 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 the value is a Fixnum.

Parameters:

  • value (Fixnum|void)

Returns:

#originHash<Symbol => Fixnum] (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.

Moves the geometry to the top left of the terminal.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



123
124
125
126
127
128
129
130
# File 'lib/vedeu/geometries/move.rb', line 123

def origin
  {
    x:  1,
    xn: (xn - x + 1),
    y:  1,
    yn: (yn - y + 1),
  }
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.

Parameters:

  • variable (String|Symbol|Array|Fixnum)

    The variable to check.

Returns:

#refresh!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.

This method returns an undefined value.

Refresh the screen after moving.



135
136
137
# File 'lib/vedeu/geometries/move.rb', line 135

def refresh!
  Vedeu.trigger(:_movement_refresh_, name)
end

#rightHash<Symbol => Fixnum] (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.

Moves the geometry right by the offset.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



142
143
144
145
146
147
# File 'lib/vedeu/geometries/move.rb', line 142

def right
  {
    x: x + offset,
    xn: xn + offset,
  }
end

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

Converts a class name to a lowercase snake case string.

Examples:

snake_case(MyClassName) # => "my_class_name"
snake_case(NameSpaced::ClassName)
# => "name_spaced/class_name"

snake_case('MyClassName') # => "my_class_name"
snake_case(NameSpaced::ClassName)
# => "name_spaced/class_name"

Parameters:

  • klass (Module|Class|String)

Returns:

  • (String)

#stream_model?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 the model is a Views::Stream.

Returns:

#string?(value) ⇒ 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 the value is a Fixnum.

Parameters:

  • value (String|void)

Returns:

#truthy?(value) ⇒ 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 the value should be considered true.

Parameters:

  • value (void)

Returns:

#unalign_unmaximiseHash<Symbol => Boolean|Symbol] (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 => Boolean|Symbol].

Returns:

  • (Hash<Symbol => Boolean|Symbol])

    Hash<Symbol => Boolean|Symbol]



150
151
152
153
154
155
156
# File 'lib/vedeu/geometries/move.rb', line 150

def unalign_unmaximise
  {
    horizontal_alignment: :none,
    maximised:            false,
    vertical_alignment:   :none,
  }
end

#upHash<Symbol => Fixnum] (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.

Moves the geometry up by the offset.

Returns:

  • (Hash<Symbol => Fixnum])

    Hash<Symbol => Fixnum]



161
162
163
164
165
166
# File 'lib/vedeu/geometries/move.rb', line 161

def up
  {
    y: y - offset,
    yn: yn - offset,
  }
end

#update_cursor!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.

This method returns an undefined value.

Refresh the cursor after moving.



171
172
173
# File 'lib/vedeu/geometries/move.rb', line 171

def update_cursor!
  Vedeu.trigger(event, name)
end

#valid?Boolean (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:



176
177
178
179
180
181
182
183
184
# File 'lib/vedeu/geometries/move.rb', line 176

def valid?
  {
    down:   valid_down?,
    left:   valid_left?,
    origin: true,
    right:  valid_right?,
    up:     valid_up?,
  }.fetch(direction, false)
end

#valid_down?Boolean (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:



187
188
189
# File 'lib/vedeu/geometries/move.rb', line 187

def valid_down?
  yn + offset <= Vedeu.height
end

#valid_left?Boolean (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:



192
193
194
# File 'lib/vedeu/geometries/move.rb', line 192

def valid_left?
  x - offset >= 1
end

#valid_right?Boolean (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:



197
198
199
# File 'lib/vedeu/geometries/move.rb', line 197

def valid_right?
  xn + offset <= Vedeu.width
end

#valid_up?Boolean (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:



202
203
204
# File 'lib/vedeu/geometries/move.rb', line 202

def valid_up?
  y - offset >= 1
end

#validate(attributes) ⇒ Hash (private) Originally defined in module Repositories::Defaults

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:

  • attributes (Hash)

Returns:

  • (Hash)

Raises:

  • (Vedeu::Error::InvalidSyntax)

    When the value given for an argument or parameter cannot be used because it is not valid for the use case, unsupported or the method expects a different type.

#view_model?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 the model is a Views::View.

Returns: