Class: Vedeu::Editor::Cursor Private

Inherits:
Object
  • Object
show all
Extended by:
Forwardable
Defined in:
lib/vedeu/editor/cursor.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.

Maintains a cursor position within the Document class.

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(attributes = {}) ⇒ Vedeu::Editor::Cursor

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::Editor::Cursor.

Parameters:

  • attributes (Hash<Symbol => Fixnum|String|Symbol>) (defaults to: {})

Options Hash (attributes):

  • y (Fixnum)

    The current line.

  • x (Fixnum)

    The current character with the line.

  • name (String|Symbol)
  • oy (Fixnum)
  • ox (Fixnum)


50
51
52
53
54
# File 'lib/vedeu/editor/cursor.rb', line 50

def initialize(attributes = {})
  defaults.merge!(attributes).each do |key, value|
    instance_variable_set("@#{key}", value)
  end
end

Instance Attribute Details

#nameString|Symbol (readonly)

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:

  • (String|Symbol)


22
23
24
# File 'lib/vedeu/editor/cursor.rb', line 22

def name
  @name
end

#oxFixnum

Returns:

  • (Fixnum)


26
27
28
# File 'lib/vedeu/editor/cursor.rb', line 26

def ox
  @ox
end

#oyFixnum

Returns:

  • (Fixnum)


30
31
32
# File 'lib/vedeu/editor/cursor.rb', line 30

def oy
  @oy
end

#xFixnum

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 column/character coordinate.

Returns:

  • (Fixnum)

    The column/character coordinate.



34
# File 'lib/vedeu/editor/cursor.rb', line 34

attr_writer :x

#yFixnum

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 row/line coordinate.

Returns:

  • (Fixnum)

    The row/line coordinate.



38
# File 'lib/vedeu/editor/cursor.rb', line 38

attr_writer :y

Instance Method Details

#bolVedeu::Editor::Cursor

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.

Move the virtual cursor to the beginning of the line.



59
60
61
62
63
64
# File 'lib/vedeu/editor/cursor.rb', line 59

def bol
  @ox = 0
  @x  = 0

  self
end

#defaultsHash<Symbol => Fixnum|NilClass|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 the default options/attributes for this class.

Returns:

  • (Hash<Symbol => Fixnum|NilClass|String|Symbol>)


175
176
177
178
179
180
181
182
183
# File 'lib/vedeu/editor/cursor.rb', line 175

def defaults
  {
    name: '',
    ox:   0,
    oy:   0,
    x:    0,
    y:    0,
  }
end

#down(size = nil) ⇒ Vedeu::Editor::Cursor

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.

Move the virtual cursor down by one line.

Parameters:

  • size (Fixnum) (defaults to: nil)

Returns:



70
71
72
73
74
75
# File 'lib/vedeu/editor/cursor.rb', line 70

def down(size = nil)
  @y += 1
  @x = size if size && x > size

  self
end

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



168
169
170
# File 'lib/vedeu/editor/cursor.rb', line 168

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

#leftVedeu::Editor::Cursor

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.

Move the virtual cursor to the left.



80
81
82
83
84
85
# File 'lib/vedeu/editor/cursor.rb', line 80

def left
  @ox -= 1 unless @ox == 0
  @x -= 1

  self
end

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

Return the real x coordinate.

Returns:

  • (Fixnum)


195
196
197
# File 'lib/vedeu/editor/cursor.rb', line 195

def real_x
  (bx + x) - ox
end

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

Return the real y coordinate.

Returns:

  • (Fixnum)


188
189
190
# File 'lib/vedeu/editor/cursor.rb', line 188

def real_y
  (by + y) - oy
end

#refreshVedeu::Editor::Cursor

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.

TODO:

GL 2015-10-02 Should ox/oy be 0; or set to @ox/@oy?

Overwrite the cursor of the same name. This ensure that on refresh the cursor stays in the correct position for the document being edited.



93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/vedeu/editor/cursor.rb', line 93

def refresh
  Vedeu::Cursors::Cursor.store(name:    name,
                               x:       real_x,
                               y:       real_y,
                               ox:      0,
                               oy:      0,
                               visible: true)

  Vedeu.trigger(:_refresh_cursor_, name)

  self
end

#reset!Vedeu::Editor::Cursor

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.

Move the virtual cursor to the origin (0, 0).



109
110
111
112
113
114
115
116
# File 'lib/vedeu/editor/cursor.rb', line 109

def reset!
  @x  = 0
  @y  = 0
  @ox = 0
  @oy = 0

  self
end

#rightVedeu::Editor::Cursor

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.

Move the virtual cursor to the right.



121
122
123
124
125
# File 'lib/vedeu/editor/cursor.rb', line 121

def right
  @x += 1

  self
end

#to_sString

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.

Return the escape sequence as a string for setting the cursor position and show the cursor.

Returns:

  • (String)


131
132
133
# File 'lib/vedeu/editor/cursor.rb', line 131

def to_s
  "\e[#{real_y};#{real_x}H\e[?25h".freeze
end

#up(size = nil) ⇒ Vedeu::Editor::Cursor

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.

Move the virtual cursor up by one line.

Parameters:

  • size (Fixnum) (defaults to: nil)

Returns:



139
140
141
142
143
144
145
# File 'lib/vedeu/editor/cursor.rb', line 139

def up(size = nil)
  @oy -= 1 unless @oy == 0
  @y -= 1
  @x = size if size && x > size

  self
end