Something went wrong. Try again.
OCaml port of Linenoise
Something went wrong. Try again.
12345678910111213141516171819202122232425262728293031323334353637open Brr
let h = ref []
let history prefix = if prefix <> "" then List.filter (fun s -> String.starts_with ~prefix s) !h else !h
let complete s = match String.get s 0 with | 'h' -> [ "hello"; "hello there" ] | _ | (exception Invalid_argument _) -> []
let stdin = Document.find_el_by_id G.document (Jstr.v "stdin") |> Option.getlet stdout = Document.find_el_by_id G.document (Jstr.v "stdout") |> Option.getlet prompt = Document.find_el_by_id G.document (Jstr.v "prompt") |> Option.get
let () = Eio_js_backend.start @@ fun () -> El.append_children (Document.head G.document) [ El.style [ El.txt' Ansi.css ] ]; let ctx = Bruit_brr.stdctx ~redirect:true stdin prompt stdout in let rec loop sys_break = let prompt = if sys_break then "[\x1b[31m130\x1b[0m] \x1b[33m>>\x1b[0m " else "\x1b[33m>>\x1b[0m " in match Bruit.run ~history ~complete ctx prompt with | String (Some s) -> El.append_children stdout [ El.txt' s ]; h := s :: !h; loop false | String None -> () | Ctrl_c -> loop true in loop false