culr/lib/pipes.ml
2024-12-05 23:40:30 +11:00

13 lines
491 B
OCaml

open Processing
let read_all colours parser =
In_channel.set_binary_mode stdin true;
let open Types in
let t = Emitter.create and culr = Culriser.create colours in
Emitter.serialise t (Ansi [ Fg (Culriser.current culr) ]);
Angstrom_unix.parse_many ~buf_size:4096 (Parse.culr_parse parser)
(fun c -> c |> ansi_filter culr |> Culriser.serialise_with_colour culr t)
stdin
|> function
| _, Ok _ -> Emitter.flush t
| _, Error e -> prerr_endline ("error encountered:" ^ e)