Ext_ppA simple pretty printer
Advantage compared with Format, P.newline does not screw the layout, have better control when do a newline (sicne JS has ASI) Easy to tweak
val string : t -> string -> unitval space : t -> unitval nspace : t -> int -> unitval group : t -> int -> (unit -> 'a) -> 'agroup will record current indentation and indent futher
val vgroup : t -> int -> (unit -> 'a) -> 'aval paren : t -> (unit -> 'a) -> 'aval brace : t -> (unit -> 'a) -> 'aval paren_group : t -> int -> (unit -> 'a) -> 'aval cond_paren_group : t -> bool -> int -> (unit -> 'a) -> 'aval paren_vgroup : t -> int -> (unit -> 'a) -> 'aval brace_group : t -> int -> (unit -> 'a) -> 'aval brace_vgroup : t -> int -> (unit -> 'a) -> 'aval bracket_group : t -> int -> (unit -> 'a) -> 'aval bracket_vgroup : t -> int -> (unit -> 'a) -> 'aval newline : t -> unitval at_least_two_lines : t -> unitval from_channel : Stdlib.out_channel -> tval from_buffer : Stdlib.Buffer.t -> tval flush : t -> unit -> unitval current_line : t -> intval current_column : t -> int