My aggregated monorepo of OCaml code, automaintained
1(*---------------------------------------------------------------------------
2 Copyright (c) 2025 Anil Madhavapeddy <anil@recoil.org>. All rights reserved.
3 SPDX-License-Identifier: ISC
4 ---------------------------------------------------------------------------*)
5
6(** Note rendering for Arod webserver *)
7
8open Htmlit
9
10let note_for_feed n =
11 let (body_html, word_count_info) = Arod_view.truncated_body (`Note n) in
12 (body_html, word_count_info)
13
14let one_note_brief n =
15 let (body_html, word_count_info) = Arod_view.truncated_body (`Note n) in
16 (El.splice [
17 Arod_view.entry_href (`Note n);
18 body_html
19 ], word_count_info)
20
21let one_note_full n =
22 let body = Arod_model.Note.body n in
23 let body_with_ref = match Arod_model.Note.slug_ent n with
24 | None -> body
25 | Some slug_ent ->
26 let parent_ent = Arod_model.lookup_exn slug_ent in
27 let parent_title = Arod_model.Entry.title parent_ent in
28 body ^ "\n\nRead more about [" ^ parent_title ^ "](:" ^ slug_ent ^ ")."
29 in
30 El.div ~at:[At.class' "note"] [
31 El.unsafe_raw (Arod_view.md_to_html body_with_ref)
32 ]