* feat: implement list renderer
* feat: data model for list
* feat: add Offset, Height, Indent
* feat: tree renderer
* fix: list example
* test: last tree node is a subtree
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: tree
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: lint
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: example
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: inc cov
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: multiline items
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* feat: one approach to sublists
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: tree improvements
* wip
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* wip
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* wip
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* wip
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: prevent having to pass renderer to all trees
* test: force linux line endings
* fix: windows
* fix: lint issues
* fix: ignore lint issue failing forever
* fix: renames
* fix: renderer
* ci: fix coveralls hopefully
* wip
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: style
* docs: update
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: renderer
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* test: cover with tests
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* feat: more list enumerators
* fix: drop renderer api
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* feat: improve api
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: prealloc
* fix: clean up
* fix: list setup
* fix: improve sublist tests
* fix: improve sublists
* refactor: simplify
* docs: more examples, readme updates
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: readme
* fix: set item style
* fix(tree): do not use golden files
* test: do not use golden files
* refactor: remove unused code
* feat: hide nodes
* feat: filter
* fix: allow fmt.Stringer
* test: table within a tree
* docs: update
* fix: rename atter to data
* test: test public api only
* docs: sublist with table example
* docs: update example
* fix: lint issues
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: update examples
* docs: update
* feat: offset
* feat: offsetstart && offsetend
* fix: remove last from enumerator
* refactor: make tree more explicit
* `New()` now take no args
* added a new `Root(string)` method
* added a new `Items(...any)` method
* refactor: improve list
* docs: fix examples
* test: ensure embed lists in trees
* docs: sublist example with list as tree node
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* refactor: first pass at examples cleanup
* refactor: first pass at examples cleanup
* fix: support multi-line prefixes
* test: more glow-style lists within trees
* docs: simplify examples
* fix: improve handling of different types
* chore: go mod tidy
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* fix: code review suggestions
Co-authored-by: Ayman Bagabas <ayman.bagabas@gmail.com>
Co-authored-by: bashbunni <15822994+bashbunni@users.noreply.github.com>
* fix: apply code review suggestion
* feat(tree): rounded enumerator (#280)
* chore(examples): go mod tidy
* feat(tree): add rounded corner enumerator
* test: rounded enumerator test
* docs: readme updates
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: readme updates
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* chore: fmt
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: godoc
* docs: godoc
* fix: bash's issue
* fix: bad example
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
* docs: improve godoc for trees and lists (#296)
* docs(godoc): add overview
* docs(godoc): include examples in godoc
* docs(godoc): fix roman numerals example
* docs(godoc): fix tree examples
* docs(godoc): attempt to fix list Enumerator examples
* docs: added some examples to godoc
* fix(list): New(items...) with sublist
* docs: update examples
* chore(tree): improve var names in rounded example
* fix: use padding instead of margin to better styles
* fix: lint
---------
Signed-off-by: Carlos Alexandro Becker <caarlos0@users.noreply.github.com>
Co-authored-by: Maas Lalani <maas@lalani.dev>
Co-authored-by: Ayman Bagabas <ayman.bagabas@gmail.com>
Co-authored-by: bashbunni <15822994+bashbunni@users.noreply.github.com>
Co-authored-by: Christian Rocha <christian@rocha.is>
When I create binaries for each OS using goreleaser, the propKeys
generates an int overflow since the iota duplicates for each propKey
This commit changes the int type to works well with binaries generated
for arm and i386 archs.
Upgrade dependencies to latest stable versions.
As part of this dependency upgrade, the `term` package is being updated
to include an important fix for wrapping strings containing ANSI codes.
See charmbracelet/x/issues/58 for more details.
Signed-off-by: Michael Lorant <michael.lorant@nine.com.au>
When a style has a border set and an empty string is rendered, it should
still render the border. When the left border is set, width is
incremented by 1, so in most cases the width will not be 0.
When we render an empty string, with a double border and no left border
we expect the following:
╗
║
╝
But if we don't render a horizontal edge when the string width is less
than 1 we see this:
║
The string width can't be lower than 0, so we can safely remove the
(width < 1) check to create the expected behavior.
Co-authored-by: Daan Schoone <daaschoone@gmail.com>
The function `maxRuneWidth` was using a flawed approach by only
evaluating strings based on each rune. The `uniseg` package provides a
more accurate method based on grapheme clusters.
This change switches over to the improved implementation which should
achieve better results when determining the maximum width of all
grapheme clusters in a string.
Signed-off-by: Michael Lorant <michael.lorant@nine.com.au>
The `padLeft` and `padRight` functions were nearly identical and could
benefit from being refactored to share common code.
A new function called `pad` was added that applies padding based on the
sign of the amount of padding needed. A positive value applies padding
to the right side while a negative value applies padding to the left
side.
Issue: #252
Signed-off-by: Michael Lorant <michael.lorant@nine.com.au>