Class: GitWaybackMachine::Navigator

Inherits:
Object
  • Object
show all
Defined in:
lib/git_wayback_machine/navigator.rb

Constant Summary collapse

WINDOW_SIZE =

the number of entries to show

10

Instance Method Summary collapse

Constructor Details

#initialize(history) ⇒ Navigator

Returns a new instance of Navigator.



6
7
8
9
10
# File 'lib/git_wayback_machine/navigator.rb', line 6

def initialize(history)
  @history       = history
  @current_entry = @history[0]
  @controls      = GitWaybackMachine::Controls.new
end

Instance Method Details

#cleanupObject



42
43
44
45
46
47
# File 'lib/git_wayback_machine/navigator.rb', line 42

def cleanup
  navigator_size = entries_slice.size + 2
  print "\r\e[#{navigator_size}A"
  print (" " * 120 + "\n") * navigator_size
  print "\r\e[#{navigator_size}A"
end

#on_change(&callback) ⇒ Object



12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
# File 'lib/git_wayback_machine/navigator.rb', line 12

def on_change(&callback)
  render

  @controls.on_event do |event|
    case event
    when :up   then @current_entry = prev_entry
    when :down then @current_entry = next_entry
    end

    callback.call(@current_entry)
    cleanup
    render
  end

ensure
  cleanup
end

#renderObject



30
31
32
33
34
35
36
37
38
39
40
# File 'lib/git_wayback_machine/navigator.rb', line 30

def render
  puts intro_text

  entries_slice.each do |entry|
    if entry == @current_entry
      puts " \e[37;1m#{entry}\e[0m"
    else
      puts " \e[37;2m#{entry}\e[0m"
    end
  end
end