Ref: change renderer impl & add Renderer() to style#174
Conversation
|
I wonder if something along the lines of |
|
👍 to renaming func (s Style) WithRenderer(r Renderer) Style {
// ...
} |
@aymanbagabas, correct me if I'm wrong, but I believe the use case here is actually to associate styles with a specific renderer, or to change the renderer on a style. style := lipgloss.NewStyle().Reverse()
r := lipgloss.NewRenderer()
style = style.AttachRenderer(r) |
|
I agree that a different name might be better suited here. My only gripe would be that the imperative |
|
Just to close the loop here, let’s go with s := lipgloss.NewStyle()
r := lipgloss.NewRenderer()
s = s.Bold(true).Underline(true).Renderer(r) |
…s to v0.7.1 (#7) [](https://renovatebot.com) This PR contains the following updates: | Package | Type | Update | Change | |---|---|---|---| | [github.com/charmbracelet/lipgloss](https://togithub.com/charmbracelet/lipgloss) | require | minor | `v0.6.0` -> `v0.7.1` | --- ### Release Notes <details> <summary>charmbracelet/lipgloss</summary> ### [`v0.7.1`](https://togithub.com/charmbracelet/lipgloss/releases/tag/v0.7.1) [Compare Source](https://togithub.com/charmbracelet/lipgloss/compare/v0.7.0...v0.7.1) This bugfix release fixes a problem introduced in v0.7.0 where applications could freeze or hang on start-up. #### What's Changed - fix(renderer): use termenv default renderer by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/179](https://togithub.com/charmbracelet/lipgloss/pull/179) - chore: bump termenv to v0.15.1 by [@​muesli](https://togithub.com/muesli) in [https://github.com/charmbracelet/lipgloss/pull/180](https://togithub.com/charmbracelet/lipgloss/pull/180) **Full Changelog**: charmbracelet/lipgloss@v0.7.0...v0.7.1 ### [`v0.7.0`](https://togithub.com/charmbracelet/lipgloss/releases/tag/v0.7.0) [Compare Source](https://togithub.com/charmbracelet/lipgloss/compare/v0.6.0...v0.7.0) ### Custom Renderers We're pleased to introduce custom renders for Lip Gloss! Custom renderers allow you to render to a specific outputs, which is particularly important when you want to detect the color profile and dark background status for multiple different outputs at runtime, such as in a server-client situation. Here's what it looks like: ```go func myLittleHandler(sess ssh.Session) { // Create a renderer for the client. renderer := lipgloss.NewRenderer(sess) // Create a new style on the renderer. style := renderer.NewStyle().Background(lipgloss.AdaptiveColor{Light: "63", Dark: "228"}) // Render. The color profile and dark background state will be correctly detected. io.WriteString(sess, style.Render("Heyyyyyyy")) } ``` For a full example on using a custom renderer over SSH with [Wish](https://togithub.com/charmbracelet/wish) see the [SSH example](https://togithub.com/charmbracelet/lipgloss/blob/master/examples/ssh). #### New API Stuff - `type Renderer struct` - `NewRenderer(io.Writer)` - `DefaultRenderer()` - `SetDefaultRenderer(*lipgloss.Renderer)` - `style.Renderer(*lipgloss.Renderer) Style` #### What's Changed ##### New - lipgloss renderer by [@​aymanbagabas](https://togithub.com/aymanbagabas) in [https://github.com/charmbracelet/lipgloss/pull/140](https://togithub.com/charmbracelet/lipgloss/pull/140) and [https://github.com/charmbracelet/lipgloss/pull/174](https://togithub.com/charmbracelet/lipgloss/pull/174) - add BlockBorder, OuterHalfBlockBorder, and InnerHalfBlockBorder border styles by [@​VictorBersy](https://togithub.com/VictorBersy) in [https://github.com/charmbracelet/lipgloss/pull/120](https://togithub.com/charmbracelet/lipgloss/pull/120) ##### Fixed - RGBA implementations for non-hex color values by [@​muesli](https://togithub.com/muesli) in [https://github.com/charmbracelet/lipgloss/pull/126](https://togithub.com/charmbracelet/lipgloss/pull/126) - unify get border size function names by [@​nerg4l](https://togithub.com/nerg4l) in [https://github.com/charmbracelet/lipgloss/pull/148](https://togithub.com/charmbracelet/lipgloss/pull/148) - reduce dependencies by [@​caarlos0](https://togithub.com/caarlos0) in [https://github.com/charmbracelet/lipgloss/pull/146](https://togithub.com/charmbracelet/lipgloss/pull/146) - don't concurrently change output profiles by [@​muesli](https://togithub.com/muesli) in [https://github.com/charmbracelet/lipgloss/pull/172](https://togithub.com/charmbracelet/lipgloss/pull/172) #### New Contributors - [@​dependabot](https://togithub.com/dependabot) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/133](https://togithub.com/charmbracelet/lipgloss/pull/133) - [@​winder](https://togithub.com/winder) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/147](https://togithub.com/charmbracelet/lipgloss/pull/147) - [@​VictorBersy](https://togithub.com/VictorBersy) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/120](https://togithub.com/charmbracelet/lipgloss/pull/120) - [@​nervo](https://togithub.com/nervo) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/156](https://togithub.com/charmbracelet/lipgloss/pull/156) - [@​caarlos0](https://togithub.com/caarlos0) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/146](https://togithub.com/charmbracelet/lipgloss/pull/146) - [@​Isti115](https://togithub.com/Isti115) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/170](https://togithub.com/charmbracelet/lipgloss/pull/170) - [@​nerg4l](https://togithub.com/nerg4l) made their first contribution in [https://github.com/charmbracelet/lipgloss/pull/148](https://togithub.com/charmbracelet/lipgloss/pull/148) **Full Changelog**: charmbracelet/lipgloss@v0.6.0...v0.7.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - "before 3am on Monday" (UTC), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Enabled. ♻ **Rebasing**: Whenever PR is behind base branch, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this PR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this PR, check this box --- This PR has been generated by [Mend Renovate](https://www.mend.io/free-developer-tools/renovate/). View repository job log [here](https://app.renovatebot.com/dashboard#github/sheldonhull/az-pr). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzNS4yMi4xIiwidXBkYXRlZEluVmVyIjoiMzUuMjIuMSJ9--> Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
A renderer determines the terminal color capabilities using Termenv. You can force a specific terminal color profile using
renderer.SetColorProfile()Add
style.Renderer()to return a new style with the given renderer.