module Lucid::ContextLoader::InterfaceIO

Attributes

visitor[W]

Public Instance Methods

ask(question, timeout_seconds) click to toggle source
# File lib/lucid/interface_io.rb, line 13
def ask(question, timeout_seconds)
  STDOUT.puts(question)
  STDOUT.flush
  puts(question)

  if(Lucid::JRUBY)
    answer = jruby_gets(timeout_seconds)
  else
    answer = mri_gets(timeout_seconds)
  end

  if(answer)
    puts(answer)
    answer
  else
    raise("Lucid waited for input for #{timeout_seconds} seconds, then timed out.")
  end
end
embed(src, mime_type, label) click to toggle source
# File lib/lucid/interface_io.rb, line 32
def embed(src, mime_type, label)
  @visitor.embed(src, mime_type, label)
end
puts(*messages) click to toggle source
# File lib/lucid/interface_io.rb, line 9
def puts(*messages)
  @visitor.puts(*messages)
end

Private Instance Methods

jruby_gets(timeout_seconds) click to toggle source
# File lib/lucid/interface_io.rb, line 48
def jruby_gets(timeout_seconds)
  answer = nil
  t = java.lang.Thread.new do
    answer = STDIN.gets
  end
  t.start
  t.join(timeout_seconds * 1000)
  answer
end
mri_gets(timeout_seconds) click to toggle source
# File lib/lucid/interface_io.rb, line 38
def mri_gets(timeout_seconds)
  begin
    Timeout.timeout(timeout_seconds) do
      STDIN.gets
    end
  rescue Timeout::Error
    nil
  end
end