1
1
open Packages
2
2
open Odoc_unit
3
3
4
+ let fpf = Format. fprintf
5
+
4
6
let make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
5
7
?(include_dirs = [] ) ~pkgname ~pkg_args () =
6
8
let input_file = Fpath. (mld_dir // rel_path / " index.mld" ) in
7
9
let odoc_file = Fpath. (odoc_dir // rel_path / " page-index.odoc" ) in
8
10
let odocl_file = Fpath. (odocl_dir // rel_path / " page-index.odocl" ) in
9
- let () = Util. write_file input_file (String. split_on_char '\n' content) in
11
+ Util. with_out_to input_file (fun oc ->
12
+ fpf (Format. formatter_of_out_channel oc) " %t@?" content)
13
+ |> Result. get_ok;
10
14
let parent_id = rel_path |> Odoc.Id. of_fpath in
11
15
{
12
16
parent_id;
@@ -23,25 +27,15 @@ let make_unit ~odoc_dir ~odocl_dir ~mld_dir ~output_dir rel_path ~content
23
27
}
24
28
25
29
module PackageLanding = struct
26
- let content pkg =
27
- let title = Format. sprintf " {0 %s}\n " pkg.name in
28
- let documentation =
29
- match pkg.mlds with
30
- | _ :: _ ->
31
- Format. sprintf
32
- " {1 Documentation pages}\n\n \
33
- {{!/%s/doc/index}Documentation for %s}\n "
34
- pkg.name pkg.name
35
- | [] -> " "
36
- in
37
- let libraries =
38
- match pkg.libraries with
39
- | [] -> " "
40
- | _ :: _ ->
41
- Format. sprintf " {1 Libraries}\n\n {{!/%s/lib/index}Libraries for %s}\n "
42
- pkg.name pkg.name
43
- in
44
- title ^ documentation ^ libraries
30
+ let content pkg ppf =
31
+ fpf ppf " {0 %s}\n " pkg.name;
32
+ if not (List. is_empty pkg.mlds) then
33
+ fpf ppf
34
+ " {1 Documentation pages}@\n @\n {{!/%s/doc/index}Documentation for %s}@\n "
35
+ pkg.name pkg.name;
36
+ if not (List. is_empty pkg.libraries) then
37
+ fpf ppf " {1 Libraries}@\n @\n {{!/%s/lib/index}Libraries for %s}@\n "
38
+ pkg.name pkg.name
45
39
46
40
let page ~odoc_dir ~odocl_dir ~mld_dir ~output_dir ~pkg =
47
41
let content = content pkg in
@@ -54,16 +48,15 @@ module PackageLanding = struct
54
48
end
55
49
56
50
module PackageList = struct
57
- let content all =
51
+ let content all ppf =
58
52
let sorted_packages =
59
53
all |> List. sort (fun n1 n2 -> String. compare n1.name n2.name)
60
54
in
61
- let title = " {0 List of all packages}\n " in
62
- let s_of_pkg pkg =
63
- Format. sprintf " - {{!/__driver/%s/index}%s}" pkg.name pkg.name
55
+ fpf ppf " {0 List of all packages}@ \n " ;
56
+ let print_pkg pkg =
57
+ fpf ppf " - {{!/__driver/%s/index}%s}@ \n " pkg.name pkg.name
64
58
in
65
- let pkg_ul = sorted_packages |> List. map s_of_pkg |> String. concat " \n " in
66
- title ^ pkg_ul
59
+ List. iter print_pkg sorted_packages
67
60
68
61
let page ~mld_dir ~odoc_dir ~odocl_dir ~output_dir all =
69
62
let content = content all in
@@ -77,16 +70,13 @@ module PackageList = struct
77
70
end
78
71
79
72
module LibraryLanding = struct
80
- let content lib =
81
- let title = Format. sprintf " {0 %s}\n " lib.lib_name in
82
- let s_of_module m =
83
- if m.m_hidden then None
84
- else Some (Format. sprintf " - {!%s}" m.Packages. m_name)
73
+ let content lib ppf =
74
+ fpf ppf " {0 %s}@\n " lib.lib_name;
75
+ let print_module m =
76
+ if not m.m_hidden then fpf ppf " - {!%s}@\n " m.Packages. m_name
85
77
in
86
- let modules =
87
- lib.modules |> List. filter_map s_of_module |> String. concat " \n "
88
- in
89
- title ^ modules
78
+ List. iter print_module lib.modules
79
+
90
80
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir ~output_dir lib =
91
81
let content = content lib in
92
82
let rel_path = Fpath. (v pkg.name / " lib" / lib.lib_name) in
@@ -99,13 +89,12 @@ module LibraryLanding = struct
99
89
end
100
90
101
91
module PackageLibLanding = struct
102
- let content pkg =
103
- let title = Format. sprintf " {0 %s}\n " pkg.name in
104
- let s_of_lib (lib : Packages.libty ) =
105
- Format. sprintf " - {{!/%s/%s/index}%s}" pkg.name lib.lib_name lib.lib_name
92
+ let content pkg ppf =
93
+ fpf ppf " {0 %s}@ \n " pkg.name;
94
+ let print_lib (lib : Packages.libty ) =
95
+ fpf ppf " - {{!/%s/%s/index}%s}@ \n " pkg.name lib.lib_name lib.lib_name
106
96
in
107
- let libraries = pkg.libraries |> List. map s_of_lib |> String. concat " \n " in
108
- title ^ libraries
97
+ List. iter print_lib pkg.libraries
109
98
110
99
let page ~pkg ~odoc_dir ~odocl_dir ~mld_dir ~output_dir =
111
100
let content = content pkg in
0 commit comments