37 lines
949 B
OCaml
37 lines
949 B
OCaml
|
open Input_handling
|
||
|
open Primitives
|
||
|
|
||
|
(* Ask user a yes or no question. *)
|
||
|
let yes_or_no message =
|
||
|
if !interactif then
|
||
|
let old_prompt = !current_prompt in
|
||
|
try
|
||
|
current_prompt := message ^ " ? (y or n) ";
|
||
|
let answer =
|
||
|
let rec ask () =
|
||
|
resume_user_input ();
|
||
|
let line =
|
||
|
string_trim (Lexer.line (Lexing.from_function read_user_input))
|
||
|
in
|
||
|
stop_user_input ();
|
||
|
match (if String.length line > 0 then line.[0] else ' ') with
|
||
|
'y' -> true
|
||
|
| 'n' -> false
|
||
|
| _ ->
|
||
|
print_string "Please answer y or n.";
|
||
|
print_newline ();
|
||
|
ask ()
|
||
|
in
|
||
|
ask ()
|
||
|
in
|
||
|
current_prompt := old_prompt;
|
||
|
answer
|
||
|
with
|
||
|
x ->
|
||
|
current_prompt := old_prompt;
|
||
|
stop_user_input ();
|
||
|
raise x
|
||
|
else
|
||
|
false
|
||
|
|