Enable non-strict mode for cmarkit to render tables

This commit is contained in:
Hannes Mehnert 2023-11-22 12:13:42 +01:00
parent bf35e3fbae
commit ded21b9131
2 changed files with 39 additions and 1 deletions

View file

@ -47,7 +47,7 @@ let compare_pkgs p1 p2 =
let md_to_html ?adjust_heading ?(safe = true) data = let md_to_html ?adjust_heading ?(safe = true) data =
let open Cmarkit in let open Cmarkit in
let doc = Doc.of_string ~heading_auto_ids:true data in let doc = Doc.of_string ~strict:false ~heading_auto_ids:true data in
let doc = let doc =
Option.fold ~none:doc Option.fold ~none:doc
~some:(fun lvl -> ~some:(fun lvl ->

View file

@ -104,6 +104,43 @@ let test_heading_adjustment () =
|} in |} in
Alcotest.(check string "header adjustment works fine" exp html) Alcotest.(check string "header adjustment works fine" exp html)
let test_table () =
let markdown = {__|| a | | b | c | d | e |
| --------------------- |-| -------------- | -------------- | --------------- | ------ |
| entry | | **bla.file** | **other.file** | | |
| _another entry_ | | **another.file** | **another.other** | | |
|__}
in
let html = markdown_to_html ~adjust_heading:2 markdown in
(* NB: the maximum heading is 6 in cmarkit, thus we reduce the structure *)
let exp = {|<div role="region"><table>
<tr>
<th>a</th>
<th>b</th>
<th>c</th>
<th>d</th>
<th>e</th>
<th></th>
</tr>
<tr>
<td>entry</td>
<td><strong>bla.file</strong></td>
<td><strong>other.file</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
<tr>
<td><em>another entry</em></td>
<td><strong>another.file</strong></td>
<td><strong>another.other</strong></td>
<td></td>
<td></td>
<td></td>
</tr>
</table></div>|} in
Alcotest.(check string "table is rendered as html" exp html)
let markdown_tests = [ let markdown_tests = [
Alcotest.test_case "Simple" `Quick test_simple; Alcotest.test_case "Simple" `Quick test_simple;
Alcotest.test_case "script header" `Quick test_html_script; Alcotest.test_case "script header" `Quick test_html_script;
@ -119,6 +156,7 @@ let markdown_tests = [
Alcotest.test_case "absolute image with script alt" `Quick test_absolute_image_script_alt; Alcotest.test_case "absolute image with script alt" `Quick test_absolute_image_script_alt;
Alcotest.test_case "fragment link" `Quick test_fragment_link; Alcotest.test_case "fragment link" `Quick test_fragment_link;
Alcotest.test_case "heading adjustment" `Quick test_heading_adjustment; Alcotest.test_case "heading adjustment" `Quick test_heading_adjustment;
Alcotest.test_case "table" `Quick test_table;
] ]
let () = let () =