Class: Redcar::NavigationHistory

Inherits:
Array
  • Object
show all
Defined in:
plugins/application/lib/application/navigation_history.rb

Overview

A class that holds a cursor navigation history. The maximum length defaults to 100.

Instance Method Summary (collapse)

Constructor Details

- (NavigationHistory) initialize

A new instance of NavigationHistory



5
6
7
8
# File 'plugins/application/lib/application/navigation_history.rb', line 5

def initialize
  @max_history_size = 100
  @current = 0
end

Instance Method Details

- (Object) backward



25
26
27
# File 'plugins/application/lib/application/navigation_history.rb', line 25

def backward
  move_current_and_restore(-1) if can_backward?
end

- (Boolean) can_backward?

Returns:

  • (Boolean)


21
22
23
# File 'plugins/application/lib/application/navigation_history.rb', line 21

def can_backward?
  return @current > 0
end

- (Boolean) can_forward?

Returns:

  • (Boolean)


29
30
31
# File 'plugins/application/lib/application/navigation_history.rb', line 29

def can_forward?
  return @current < self.size - 1
end

- (Object) forward



33
34
35
# File 'plugins/application/lib/application/navigation_history.rb', line 33

def forward
  move_current_and_restore(1) if can_forward?
end

- (Object) save(doc)



10
11
12
13
14
15
16
17
18
19
# File 'plugins/application/lib/application/navigation_history.rb', line 10

def save(doc)
  return if last && last[:path] == doc.path && last[:cursor_offset] == doc.cursor_offset
  
  # Invoking this method means new future is about to be created, so remove old one.
  self.slice!(@current...self.size)
  
  ensure_size_less_than_max
  self << {:path => doc.path, :cursor_offset => doc.cursor_offset}
  @current += 1
end