12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182open!Coreopen!ImportincludeAscii_table_kernel_intfmoduleAlign=Column.AlignmoduleAttr=AttrmoduleColumn=ColumnmoduleTable_char=Table_charmoduleDisplay=structtypet=Grid.Display.t=|Short_box|Tall_box|Line|Blank|Column_titles[@@derivingcompare,sexp_of]letshort_box=Short_boxlettall_box=Tall_boxletline=Lineletblank=Blankletcolumn_titles=Column_titlesendmoduleScreen=struct(* [Screen] is mostly private stuff, so we explicitly export the public bits instead of
saying [Private] everywhere. *)typet=Screen.tletrender=Screen.renderletto_string=Screen.to_stringendletdraw?(display=Display.short_box)?(spacing=1)?(limit_width_to=90)?(header_attr=[])?(display_empty_rows=false)~prefer_split_on_spacescolsdata=matchcolswith|[]->None|_::_->Some(Grid.create~spacing~display~max_width:limit_width_to~header_attrcolsdata~display_empty_rows~prefer_split_on_spaces|>Grid.to_screen~prefer_split_on_spaces);;letto_string_noattr?display?spacing?limit_width_to?display_empty_rows?(prefer_split_on_spaces=false)colsdata~bars=draw?display?spacing?limit_width_to?display_empty_rows~header_attr:[]colsdata~prefer_split_on_spaces|>Option.map~f:(Screen.to_string~bars~string_with_attr:(fun_attrs->s))|>Option.value~default:"";;