package crs
A tool for managing code review comments embedded in source code
Install
Dune Dependency
Authors
Maintainers
Sources
crs-0.0.20250705.tbz
sha256=e9f9f5ec5aea9658ed640aaa06f887985bb6870adcf7555ebf6d48bb741e4793
sha512=901ac1caae6c4103a320b4a3a177ca3aa0583ad533c54e7740aba6652ccdbd6311d07ab4b73e3ba750beed24f85479b5e1b0e94504ecfd0c59bd49cdabebc369
doc/src/crs.text-table/text_table_markdown.ml.html
Source file text_table_markdown.ml
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
(********************************************************************************) (* crs - A tool for managing code review comments embedded in source code *) (* Copyright (C) 2024-2025 Mathieu Barbin <mathieu.barbin@gmail.com> *) (* *) (* This file is part of crs. *) (* *) (* crs is free software; you can redistribute it and/or modify it under the *) (* terms of the GNU Lesser General Public License as published by the Free *) (* Software Foundation either version 3 of the License, or any later version, *) (* with the LGPL-3.0 Linking Exception. *) (* *) (* crs is distributed in the hope that it will be useful, but WITHOUT ANY *) (* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS *) (* FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License and *) (* the file `NOTICE.md` at the root of this repository for more details. *) (* *) (* You should have received a copy of the GNU Lesser General Public License *) (* and the LGPL-3.0 Linking Exception along with this library. If not, see *) (* <http://www.gnu.org/licenses/> and <https://spdx.org>, respectively. *) (********************************************************************************) type t = Text_table_ast.t let to_string_non_empty t = let buffer = Buffer.create 128 in let box = Box.of_text_table t in let columns = box.columns in let columns_count = Array.length columns in (* Header row *) Buffer.add_char buffer '|'; Array.iter columns ~f:(fun col -> Buffer.add_char buffer ' '; Buffer.add_string buffer (Box.pad col.header ~len:col.length ~align:col.align); Buffer.add_char buffer ' '; Buffer.add_char buffer '|'); Buffer.add_char buffer '\n'; (* Alignment row *) Buffer.add_char buffer '|'; Array.iter columns ~f:(fun col -> let spec = match col.align with | Left -> ":" ^ String.make (col.length + 1) '-' | Right -> String.make (col.length + 1) '-' ^ ":" | Center -> ":" ^ String.make col.length '-' ^ ":" in Buffer.add_string buffer spec; Buffer.add_char buffer '|'); Buffer.add_char buffer '\n'; (* Rows *) let n_rows = if columns_count = 0 then assert false [@coverage off] else List.length columns.(0).cells in for i = 0 to n_rows - 1 do Buffer.add_char buffer '|'; Array.iter columns ~f:(fun col -> (* [nth_exn] thanks to invariant from Box: all cells have the same length. *) let { Text_table_ast.Cell.text; style } = List.nth_exn col.cells i in let () = match style with | Default | Fg_red -> (* There is no support for controlling colors in the GitHub Markdown syntax. We simply do not render them. *) () in Buffer.add_char buffer ' '; Buffer.add_string buffer (Box.pad text ~len:col.length ~align:col.align); Buffer.add_char buffer ' '; Buffer.add_char buffer '|'); Buffer.add_char buffer '\n' done; Buffer.contents buffer ;; let to_string (Text_table_ast.T { rows; columns } as t) = if List.is_empty columns || List.is_empty rows then "" else to_string_non_empty t ;;
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>