182: def Annoy.pose_question(msg, regexp, writer=STDOUT, period=nil)
183: return true unless STDIN.tty?
184: return true if Annoy.skip?
185: return true if writer.nil?
186: begin
187: success = Timeout::timeout(period || @@period) do
188: regexp &&= Regexp.new regexp
189: highline = HighLine.new
190: response = highline.ask(msg) { |q|
191: q.echo = '*'
192: q.overwrite = true
193: q.whitespace = :strip
194: }
195: regexp.match(response)
196: end
197: rescue Timeout::Error => ex
198: writer.puts $/, "Times up!"
199: false
200: end
201: end