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)


52
53
54
55
56
# File 'lib/vedeu/editor/cursor.rb', line 52

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)


24
25
26
# File 'lib/vedeu/editor/cursor.rb', line 24

def name
  @name
end

#oxFixnum

Returns:

  • (Fixnum)


28
29
30
# File 'lib/vedeu/editor/cursor.rb', line 28

def ox
  @ox
end

#oyFixnum

Returns:

  • (Fixnum)


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

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.



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

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.



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

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.



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

def bol
  @ox = 0
  @x  = 0

  self
end

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

The default options/attributes for a new instance of this class.

Returns:

  • (Hash<Symbol => void>)


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

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:



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

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.



171
172
173
# File 'lib/vedeu/editor/cursor.rb', line 171

def geometry
  @geometry ||= 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.



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

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)


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

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)


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

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:

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

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



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

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



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

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.



123
124
125
126
127
# File 'lib/vedeu/editor/cursor.rb', line 123

def right
  @x += 1

  self
end

#to_sString Also known as: to_str

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)


133
134
135
# File 'lib/vedeu/editor/cursor.rb', line 133

def to_s
  "\e[#{real_y};#{real_x}H\e[?25h"
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:



142
143
144
145
146
147
148
# File 'lib/vedeu/editor/cursor.rb', line 142

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

  self
end