Module: Pc::Shell

Includes:
Interface
Defined in:
lib/pc/interfaces/shell.rb

Instance Method Summary collapse

Methods included from Interface

included

Instance Method Details

#choose(choices = {}) ⇒ Object



23
24
25
26
27
28
29
30
31
32
# File 'lib/pc/interfaces/shell.rb', line 23

def choose(choices = {})
  if choices[:next]
    sleep 0.2
    choices[:next]
  else
    say %{Pick one: #{choices.keys.join ' - '} }
    choice = gets.strip
    choices.select{|k,v| k.to_s == choice}.values.first || prompt(choices)
  end
end

#enqueue(message, choices = {}) ⇒ Object



15
16
17
# File 'lib/pc/interfaces/shell.rb', line 15

def enqueue(message, choices = {})
  (@actions ||= []).push message: message, choices: choices
end

#run(options = {}) ⇒ Object



7
8
9
10
11
12
13
# File 'lib/pc/interfaces/shell.rb', line 7

def run(options = {})
  while action = (@actions ||= []).shift
    say action[:message]
    choose(action[:choices]).call
    run
  end
end

#say(message) ⇒ Object



19
20
21
# File 'lib/pc/interfaces/shell.rb', line 19

def say(message)
  puts message
end