Class: Gisele::VM::Console

Inherits:
Component show all
Defined in:
lib/gisele/vm/console.rb

Defined Under Namespace

Modules: Handler

Instance Method Summary collapse

Methods inherited from Component

#connect, #connected!, #connected?, #disconnect, #initialize, #registered, #registered!, #registered?, #unregistered, #vm

Constructor Details

This class inherits a constructor from Gisele::VM::Component

Instance Method Details

#enter_heartbeatObject



23
24
25
26
27
28
29
# File 'lib/gisele/vm/console.rb', line 23

def enter_heartbeat
  EM.watch($stdin, Handler){|c|
    c.interactive = self
    c.notify_readable = true
  }
  prompt
end

#list_action(lispy = Alf.lispy) ⇒ Object



35
36
37
38
39
40
# File 'lib/gisele/vm/console.rb', line 35

def list_action(lispy = Alf.lispy)
  rel = vm.progs
  rel = lispy.extend(rel, :waitlist => lambda{ waitlist.keys })
  rel = lispy.group(rel, [:root], :progs, :allbut => true)
  puts rel.to_relation
end

#new_action(args) ⇒ Object



42
43
44
# File 'lib/gisele/vm/console.rb', line 42

def new_action(args)
  vm.start(:main, [ args.strip.to_sym ])
end

#promptObject



31
32
33
# File 'lib/gisele/vm/console.rb', line 31

def prompt
  $stdout << "\n? Please choose an action:(list, new, resume or quit)\ngisele-vm> "
end

#resume_action(args) ⇒ Object



46
47
48
49
50
# File 'lib/gisele/vm/console.rb', line 46

def resume_action(args)
  puid, *input = args.split(/\s+/)
  input = input.map{|x| Bytecode::Grammar.parse(x, :root => :arg).value}
  vm.resume(puid, input)
end

#stop_actionObject



52
53
54
# File 'lib/gisele/vm/console.rb', line 52

def stop_action
  vm.stop
end