Sha256: f4267c7b3a0becfae0669c22df312b2db19ef1bb5cd4d18ca99ee6e2ecc11262

Contents?: true

Size: 990 Bytes

Versions: 23

Compression:

Stored size: 990 Bytes

Contents

#!/usr/local/bin/ruby -w

module Autotest::Menu
  WINDOZE = /win32/ =~ RUBY_PLATFORM unless defined? WINDOZE

  if WINDOZE then
    require "Win32API"
    def self.getchar
      Win32API.new("crtdll", "_getch", [], "L").Call
    end
  else
    STTY_SAVE_STATE=`stty -g`
    def self.getchar
      system 'stty raw echo'
      STDIN.getc
    ensure
      system "stty '#{STTY_SAVE_STATE}'"
    end
  end

  def self.menu(choices)
    result = nil
    choices.sort.each do |c, desc|
      puts "#{c.chr}: #{desc}"
    end
    until choices[result]
      print "menu> "
      result = getchar
      print " invalid input" unless choices[result]
      puts
    end
    result
  end

  Autotest.add_hook(:interrupt) do |at|
    $stderr.puts "menu"
    case menu ?q => "quit", ?c => "continue", ?r => "restart"
    when ?c
      true
    when ?r
      at.reset
      true
    when ?q
      at.wants_to_quit = true
      true
    else
      false
    end
    # puts "you chose #{c.chr}"
  end
end

Version data entries

23 entries across 23 versions & 3 rubygems

Version Path
grosser-autotest-4.0.3 lib/autotest/menu.rb
grosser-autotest-4.0.4 lib/autotest/menu.rb
ryanbriones-ZenTest-3.11.1 lib/autotest/menu.rb
ZenTest-3.4.0 lib/autotest/menu.rb
ZenTest-3.4.1 lib/autotest/menu.rb
ZenTest-3.4.2 lib/autotest/menu.rb
ZenTest-3.4.3 lib/autotest/menu.rb
ZenTest-3.5.1 lib/autotest/menu.rb
ZenTest-3.5.2 lib/autotest/menu.rb
ZenTest-3.6.0 lib/autotest/menu.rb
ZenTest-3.6.1 lib/autotest/menu.rb
ZenTest-3.7.0 lib/autotest/menu.rb
ZenTest-3.7.1 lib/autotest/menu.rb
ZenTest-3.7.2 lib/autotest/menu.rb
ZenTest-3.8.0 lib/autotest/menu.rb
ZenTest-3.9.0 lib/autotest/menu.rb
ZenTest-3.9.1 lib/autotest/menu.rb
ZenTest-3.9.2 lib/autotest/menu.rb
ZenTest-3.9.3 lib/autotest/menu.rb
ZenTest-3.10.0 lib/autotest/menu.rb