diff --git a/src/printbox-md/PrintBox_md.ml b/src/printbox-md/PrintBox_md.ml index f45533a..14ebc06 100644 --- a/src/printbox-md/PrintBox_md.ml +++ b/src/printbox-md/PrintBox_md.ml @@ -167,8 +167,11 @@ let rec multiline_heuristic c b = let rec line_of_length_heuristic_exn c b = match B.view b with | B.Empty | B.Text {l=[]; _} -> 0 - | B.Text {l=[s]; _} -> - if String.contains s '\n' then raise Not_found else String.length s + | B.Text {l=[s]; style} -> + let from_bold = if style.B.Style.bold then 4 else 0 in + let from_code = + if style.B.Style.preformatted then if String.contains s '`' then 6 else 2 else 0 in + if String.contains s '\n' then raise Not_found else String.length s + from_bold + from_code | B.Text _ -> raise Not_found | B.Frame _ when c.Config.frames = `As_table -> raise Not_found | B.Frame b -> @@ -292,7 +295,8 @@ let pp c out b = (Array.map (fun _ -> 0) rows.(0)) rows in let n_rows = Array.length rows and n_cols = Array.length rows.(0) in Array.iteri (fun i header -> - loop ~no_block:true ~no_md ~prefix:"" @@ remove_bold header; + let header = remove_bold header in + loop ~no_block:true ~no_md ~prefix:"" header; if i < n_cols - 1 then let len = line_of_length_heuristic_exn c header in fprintf out "%s|" (String.make (max 0 @@ lengths.(i) - len) ' ') diff --git a/src/printbox-md/README.md b/src/printbox-md/README.md index 1f3e30d..f4db709 100644 --- a/src/printbox-md/README.md +++ b/src/printbox-md/README.md @@ -136,10 +136,10 @@ Trees are rendered as: There is a special case carved out for Markdown syntax tables. -Header|cells |[must be]|bold. -------|---------|---------|----------------- -Rows |[must be]|single |line. -[Only]|then |**we get** |a Markdown table. +Header |cells |[must be] |bold. +----------|---------|-------------|----------------- +Rows |[must be]|single |line. +[Only] |then |**we get** |a Markdown table.
diff --git a/test/test_md.expected b/test/test_md.expected index 9f02e8c..936177c 100644 --- a/test/test_md.expected +++ b/test/test_md.expected @@ -61,14 +61,14 @@ Test default: > > > > > > -- header 1 |header 2 |[header 3] - ----------|----------|---------- - cell 1.1 |[cell 1.2]|cell 1.3 - [cell 2.1]|cell 2.2 |**cell 2.3** -- > header 1 |header 2 |[header 3] - > ----------|----------|---------- - > cell 1.1 |[cell 1.2]|cell 1.3 - > [cell 2.1]|cell 2.2 |**cell 2.3** +- header 1 |header 2 |[header 3] + ------------|------------|-------------- + cell 1.1 |[cell 1.2] |cell 1.3 + [cell 2.1] |cell 2.2 |**cell 2.3** +- > header 1 |header 2 |[header 3] + > ------------|------------|-------------- + > cell 1.1 |[cell 1.2] |cell 1.3 + > [cell 2.1] |cell 2.2 |**cell 2.3** Test uniform unfolded: @@ -262,14 +262,14 @@ Test foldable: > > > > > > -- header 1 |header 2 |[header 3] - ----------|----------|---------- - cell 1.1 |[cell 1.2]|cell 1.3 - [cell 2.1]|cell 2.2 |**cell 2.3** -- > header 1 |header 2 |[header 3] - > ----------|----------|---------- - > cell 1.1 |[cell 1.2]|cell 1.3 - > [cell 2.1]|cell 2.2 |**cell 2.3** +- header 1 |header 2 |[header 3] + ------------|------------|-------------- + cell 1.1 |[cell 1.2] |cell 1.3 + [cell 2.1] |cell 2.2 |**cell 2.3** +- > header 1 |header 2 |[header 3] + > ------------|------------|-------------- + > cell 1.1 |[cell 1.2] |cell 1.3 + > [cell 2.1] |cell 2.2 |**cell 2.3** diff --git a/test/test_md.expected.md b/test/test_md.expected.md index 9f02e8c..936177c 100644 --- a/test/test_md.expected.md +++ b/test/test_md.expected.md @@ -61,14 +61,14 @@ Test default: > > > > > > -- header 1 |header 2 |[header 3] - ----------|----------|---------- - cell 1.1 |[cell 1.2]|cell 1.3 - [cell 2.1]|cell 2.2 |**cell 2.3** -- > header 1 |header 2 |[header 3] - > ----------|----------|---------- - > cell 1.1 |[cell 1.2]|cell 1.3 - > [cell 2.1]|cell 2.2 |**cell 2.3** +- header 1 |header 2 |[header 3] + ------------|------------|-------------- + cell 1.1 |[cell 1.2] |cell 1.3 + [cell 2.1] |cell 2.2 |**cell 2.3** +- > header 1 |header 2 |[header 3] + > ------------|------------|-------------- + > cell 1.1 |[cell 1.2] |cell 1.3 + > [cell 2.1] |cell 2.2 |**cell 2.3** Test uniform unfolded: @@ -262,14 +262,14 @@ Test foldable: > > > > > > -- header 1 |header 2 |[header 3] - ----------|----------|---------- - cell 1.1 |[cell 1.2]|cell 1.3 - [cell 2.1]|cell 2.2 |**cell 2.3** -- > header 1 |header 2 |[header 3] - > ----------|----------|---------- - > cell 1.1 |[cell 1.2]|cell 1.3 - > [cell 2.1]|cell 2.2 |**cell 2.3** +- header 1 |header 2 |[header 3] + ------------|------------|-------------- + cell 1.1 |[cell 1.2] |cell 1.3 + [cell 2.1] |cell 2.2 |**cell 2.3** +- > header 1 |header 2 |[header 3] + > ------------|------------|-------------- + > cell 1.1 |[cell 1.2] |cell 1.3 + > [cell 2.1] |cell 2.2 |**cell 2.3**