Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Misbehavior of trees with empty nodes #28

Closed
lukstafi opened this issue Mar 13, 2023 · 0 comments · Fixed by ocaml/opam-repository#25132
Closed

Misbehavior of trees with empty nodes #28

lukstafi opened this issue Mar 13, 2023 · 0 comments · Fixed by ocaml/opam-repository#25132

Comments

@lukstafi
Copy link
Contributor

While working on issue #26 I encountered the following bug / arguably undesirable behavior (to the left of subchild 4).
I would prefer that empty nodes are "transparent" to connectors: no up-tick toward an unrelated box.

let b =
  let open PrintBox in
  tree (frame @@ text "root") [
    frame @@ text "child 1";
    text "child 2";
    (* Note that an empty tree node causes a potentially-undesired but expected disconnection. *)
    frame @@ tree empty [
      tree (frame @@ text "header 3") [frame @@ text "subchild 3"]
    ];
    (* FIXME: empty tree nodes cause weird-looking connectors. *)
    tree empty [
      tree empty [frame @@ text "subchild 4"]
    ];
    frame @@ text "child 5"
  ]

let () = print_endline @@ PrintBox_text.to_string b

produces at head:

┌────┐
│root│
└────┘
├─┌───────┐
│ │child 1│
│ └───────┘
├─child 2
├─┌──────────────────┐
│ │└─┌────────┐      │
│ │  │header 3│      │
│ │  └────────┘      │
│ │  └─┌──────────┐  │
│ │    │subchild 3│  │
│ │    └──────────┘  │
│ └──────────────────┘
├─└─└─┌──────────┐
│     │subchild 4│
│     └──────────┘
└─┌───────┐
  │child 5│
  └───────┘
lukstafi added a commit to lukstafi/printbox that referenced this issue Dec 30, 2023
@c-cube c-cube closed this as completed in e88894a Dec 31, 2023
c-cube added a commit to c-cube/opam-repository that referenced this issue Jan 29, 2024
CHANGES:

## 0.9

- fix `PrintBox.text` will correctly handle newlines
- new `printbox-md` backend, generating markdown (by @lukstafi)

## 0.8

- require dune 3.0
- Fixes c-cube/printbox#28: no misleading uptick for empty tree nodes
- HTML: Allow frames in the summary / tree header
- Output frames as div borders in HTML

## 0.7

- move to 4.08 as lower bound
- `preformatted` text style instead of global setting
- PrintBox_html:
  * Optionally wrap text with the `<pre>` HTML element
  * Output text consistently as `<span>`, not `<div>`
  * Use `<details><summary>` for collapsible trees

- fix: Tree connectors touching frames (c-cube/printbox#26)

## 0.6.1

- compat with dune 3

## 0.6

- move text rendering into a new printbox-text library
- Changing visuals for hlines and vlines connections, and tree structure
  using unicode characters for box borders

## 0.5

- reenable mdx for tests
- custom classes/attributes for html translation in `PrintBox_html`
- add `link` case
- examples: add lambda.ml

## 0.4

- remove `<p>` in rendering text to html
- add `grid_map_l` and `v_record`
- add another test

## 0.3

- improve code readability in text rendering
- add `align` and `center`
- add basic styling for text (ansi codes/html styles)
- add `printbox_unicode` for setting up proper unicode printing
- add `grid_l`, `grid_text_l`, and `record` helpers

- use a more accurate length estimate for unicode, add test
- remove mdx as a test dep
- fix rendering bugs related to align right, and padding

## 0.2

- make the box type opaque, with a view function
- require OCaml 4.03

- add `PrintBox_text.pp`
- expose a few new functions to build boxes
- change `Text` type, work on string slices when rendering

- automatic testing using dune and mdx
- migrate to dune and opam 2

## 0.1

initial release
c-cube added a commit to c-cube/opam-repository that referenced this issue Feb 22, 2024
CHANGES:

## 0.10

- Fixes c-cube/printbox#10: ANSI encoded hyperlinks for printbox-text
- Fixes c-cube/printbox#39: more compact markdown output Remove double empty lines after `</details>`.
- More compact html output: no empty class annotations
- Provide context for the `line` exception

## 0.9

- fix `PrintBox.text` will correctly handle newlines
- new `printbox-md` backend, generating markdown (by @lukstafi)

## 0.8

- require dune 3.0
- Fixes c-cube/printbox#28: no misleading uptick for empty tree nodes
- HTML: Allow frames in the summary / tree header
- Output frames as div borders in HTML

## 0.7

- move to 4.08 as lower bound
- `preformatted` text style instead of global setting
- PrintBox_html:
  * Optionally wrap text with the `<pre>` HTML element
  * Output text consistently as `<span>`, not `<div>`
  * Use `<details><summary>` for collapsible trees

- fix: Tree connectors touching frames (c-cube/printbox#26)

## 0.6.1

- compat with dune 3

## 0.6

- move text rendering into a new printbox-text library
- Changing visuals for hlines and vlines connections, and tree structure
  using unicode characters for box borders

## 0.5

- reenable mdx for tests
- custom classes/attributes for html translation in `PrintBox_html`
- add `link` case
- examples: add lambda.ml

## 0.4

- remove `<p>` in rendering text to html
- add `grid_map_l` and `v_record`
- add another test

## 0.3

- improve code readability in text rendering
- add `align` and `center`
- add basic styling for text (ansi codes/html styles)
- add `printbox_unicode` for setting up proper unicode printing
- add `grid_l`, `grid_text_l`, and `record` helpers

- use a more accurate length estimate for unicode, add test
- remove mdx as a test dep
- fix rendering bugs related to align right, and padding

## 0.2

- make the box type opaque, with a view function
- require OCaml 4.03

- add `PrintBox_text.pp`
- expose a few new functions to build boxes
- change `Text` type, work on string slices when rendering

- automatic testing using dune and mdx
- migrate to dune and opam 2

## 0.1

initial release
nberth pushed a commit to nberth/opam-repository that referenced this issue Jun 18, 2024
CHANGES:

## 0.9

- fix `PrintBox.text` will correctly handle newlines
- new `printbox-md` backend, generating markdown (by @lukstafi)

## 0.8

- require dune 3.0
- Fixes c-cube/printbox#28: no misleading uptick for empty tree nodes
- HTML: Allow frames in the summary / tree header
- Output frames as div borders in HTML

## 0.7

- move to 4.08 as lower bound
- `preformatted` text style instead of global setting
- PrintBox_html:
  * Optionally wrap text with the `<pre>` HTML element
  * Output text consistently as `<span>`, not `<div>`
  * Use `<details><summary>` for collapsible trees

- fix: Tree connectors touching frames (c-cube/printbox#26)

## 0.6.1

- compat with dune 3

## 0.6

- move text rendering into a new printbox-text library
- Changing visuals for hlines and vlines connections, and tree structure
  using unicode characters for box borders

## 0.5

- reenable mdx for tests
- custom classes/attributes for html translation in `PrintBox_html`
- add `link` case
- examples: add lambda.ml

## 0.4

- remove `<p>` in rendering text to html
- add `grid_map_l` and `v_record`
- add another test

## 0.3

- improve code readability in text rendering
- add `align` and `center`
- add basic styling for text (ansi codes/html styles)
- add `printbox_unicode` for setting up proper unicode printing
- add `grid_l`, `grid_text_l`, and `record` helpers

- use a more accurate length estimate for unicode, add test
- remove mdx as a test dep
- fix rendering bugs related to align right, and padding

## 0.2

- make the box type opaque, with a view function
- require OCaml 4.03

- add `PrintBox_text.pp`
- expose a few new functions to build boxes
- change `Text` type, work on string slices when rendering

- automatic testing using dune and mdx
- migrate to dune and opam 2

## 0.1

initial release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants