diff --git a/lib/tk/dataframe.ml b/lib/tk/dataframe.ml index e11d48e0d26f296d4206b2bba36a66d1d7072392..aaba58a4650f0658fe5cda62921aa64e4db4c269 100644 --- a/lib/tk/dataframe.ml +++ b/lib/tk/dataframe.ml @@ -140,12 +140,15 @@ let from_file ?(header = `Read_in_file) path = let cols = List.zip_exn labels cols in Ok { nrows ; ncols ; cols } -let to_html ?(cell_renderers = []) d = +type html_formatter = + int -> string -> Html_types.td_content Tyxml.Html.elt + +let to_html ?(formatters = []) d = let open Tyxml.Html in - let default_cell s = txt s in + let default_cell _ s = txt s in let cols = List.map d.cols ~f:(fun (label, col) -> let cell_renderer = - List.Assoc.find cell_renderers ~equal:String.equal label + List.Assoc.find formatters ~equal:String.equal label |> Option.value ~default:default_cell in label, cell_renderer, col @@ -167,7 +170,7 @@ let to_html ?(cell_renderers = []) d = | String_opts t -> Option.value ~default t.(i) in let row i = - List.map cols ~f:(fun (_, renderer, col) -> td [renderer (elem col i)]) + List.map cols ~f:(fun (_, renderer, col) -> td [renderer i (elem col i)]) |> tr in table ~thead (List.init (nrows d) ~f:row) diff --git a/lib/tk/dataframe.mli b/lib/tk/dataframe.mli index 826172baa3f4b9f4a5dc612c13553c660760b6d7..c8a8c06d75a79a6fb992f40e900ff382a74c9433 100644 --- a/lib/tk/dataframe.mli +++ b/lib/tk/dataframe.mli @@ -24,10 +24,10 @@ val from_file : string -> (t, [> `Msg of string]) result +type html_formatter = + int -> string -> Html_types.td_content Tyxml.Html.elt + val to_html : - ?cell_renderers: - (string * - (string -> [< Html_types.td_content > `PCDATA] Tyxml.Html.elt)) - list -> + ?formatters:(string * html_formatter) list -> t -> [> Html_types.table ] Tyxml.Html.elt