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
let string: t => string => unit;let space: t => unit;let nspace: t => int => unit;let group: t => int => (unit => 'a) => 'a;group will record current indentation and indent futher
let vgroup: t => int => (unit => 'a) => 'a;let paren: t => (unit => 'a) => 'a;let brace: t => (unit => 'a) => 'a;let paren_group: t => int => (unit => 'a) => 'a;let cond_paren_group: t => bool => int => (unit => 'a) => 'a;let paren_vgroup: t => int => (unit => 'a) => 'a;let brace_group: t => int => (unit => 'a) => 'a;let brace_vgroup: t => int => (unit => 'a) => 'a;let bracket_group: t => int => (unit => 'a) => 'a;let bracket_vgroup: t => int => (unit => 'a) => 'a;let newline: t => unit;let at_least_two_lines: t => unit;let from_channel: Stdlib.out_channel => t;let from_buffer: Stdlib.Buffer.t => t;let flush: t => unit => unit;let current_line: t => int;let current_column: t => int;