Skip to content

Commit 2cce19f

Browse files
committed
Media: factor html generation
1 parent 7fe439f commit 2cce19f

File tree

1 file changed

+18
-35
lines changed

1 file changed

+18
-35
lines changed

src/html/generator.ml

Lines changed: 18 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -234,6 +234,20 @@ let rec block ~config ~resolve (l : Block.t) : flow Html.elt list =
234234
let a = Some (class_ (extra_class @ t.attr)) in
235235
[ mk ?a content ]
236236
in
237+
let mk_media_block media_block target content =
238+
let block =
239+
match target with
240+
| Target.External url -> media_block url
241+
| Internal (Resolved uri) ->
242+
let url = Link.href ~config ~resolve uri in
243+
media_block url
244+
| Internal Unresolved ->
245+
let content = inline ~config ~resolve content in
246+
let a = Html.a_class [ "xref-unresolved" ] :: [] in
247+
[ Html.span ~a content ]
248+
in
249+
mk_block Html.div block
250+
in
237251
match t.desc with
238252
| Inline i ->
239253
if t.attr = [] then as_flow @@ inline ~config ~resolve i
@@ -265,33 +279,11 @@ let rec block ~config ~resolve (l : Block.t) : flow Html.elt list =
265279
mk_block ~extra_class Html.pre (source (inline ~config ~resolve) c)
266280
| Math s -> mk_block Html.div [ block_math s ]
267281
| Audio (target, content) ->
268-
let content = inline ~config ~resolve content in
269282
let audio src = [ Html.audio ~src ~a:[ Html.a_controls () ] [] ] in
270-
let block =
271-
match target with
272-
| External url -> audio url
273-
| Internal (Resolved uri) ->
274-
let url = Link.href ~config ~resolve uri in
275-
audio url
276-
| Internal Unresolved ->
277-
let a = Html.a_class [ "xref-unresolved" ] :: [] in
278-
[ Html.span ~a content ]
279-
in
280-
mk_block Html.div block
283+
mk_media_block audio target content
281284
| Video (target, content) ->
282-
let content = inline ~config ~resolve content in
283285
let video src = [ Html.video ~src ~a:[ Html.a_controls () ] [] ] in
284-
let block =
285-
match target with
286-
| External url -> video url
287-
| Internal (Resolved uri) ->
288-
let url = Link.href ~config ~resolve uri in
289-
video url
290-
| Internal Unresolved ->
291-
let a = [ Html.a_class [ "xref-unresolved" ] ] in
292-
[ Html.span ~a content ]
293-
in
294-
mk_block Html.div block
286+
mk_media_block video target content
295287
| Image (target, alt) ->
296288
let image src =
297289
let alt = alt_of_inline alt in
@@ -302,18 +294,9 @@ let rec block ~config ~resolve (l : Block.t) : flow Html.elt list =
302294
in
303295
[ img ]
304296
in
305-
let block =
306-
match target with
307-
| External url -> image url
308-
| Internal (Resolved uri) ->
309-
let url = Link.href ~config ~resolve uri in
310-
image url
311-
| Internal Unresolved ->
312-
let a = [ Html.a_class [ "xref-unresolved" ] ] in
313-
[ Html.span ~a (inline ~config ~resolve alt) ]
314-
in
315-
mk_block Html.div block
297+
mk_media_block image target alt
316298
in
299+
317300
Odoc_utils.List.concat_map l ~f:one
318301

319302
and mk_rows ~config ~resolve { align; data } =

0 commit comments

Comments
 (0)