lipgloss-convert
String conversion functions for lipgloss Styles.
This library defines the following two functions:
type Style = lipgloss.Style
// Import reads style specifications from the input string
// and sets the corresponding properties in the dst style.
func Import(dst Style, input string) (Style, error)
// Export emits style specifications that represent
// the given style.
func Export(s Style) string
Exporting styles to text
For example:
import (
"fmt"
"github.com/charmbracelet/lipgloss"
lipglossc "github.com/knz/lipgloss-convert"
)
func main() {
style := lipgloss.NewStyle().
Bold(true).
Align(lipgloss.Center).
Foreground(lipgloss.Color("#FAFAFA")).
Background(lipgloss.AdaptiveColor{"#7D56F4", "#112233"})).
BorderTopForeground(lipgloss.Color("12")).
BorderStyle(lipgloss.RoundedBorder()).
PaddingTop(2).
PaddingLeft(4).
Width(22)
fmt.Println(lipglossc.Export(s))
}
Displays:
align: 0.5;
background: adaptive(#7D56F4,#112233);
bold: true;
border-style: border("─","─","│","│","╭","╮","╯","╰");
border-top-foreground: 12;
foreground: #FAFAFA;
padding-left: 4;
padding-top: 2;
width: 22;
Importing styles from text
The Import
function applies the text directives specified in its input
argument to the style also provided as argument. Other properties already
in the style remain unchanged.
Which properties are supported? See the lipgloss
documentation
for details. Import
automatically supports all the lipgloss
properties, as follows:
Foreground
in lipgloss becomes foreground
in the textual syntax.
UnderlineSpaces
becomes underline-spaces
.
- etc.
Import
also supports the following special cases:
-
For colors:
foreground: #abc;
foreground: #aabbcc;
foreground: 123;
foreground: adaptive(<color>,<color>);
foreground: complete(<truecolor>,<ansi256color>,<ansicolor>);
foreground: adaptive(<color>,<color>);
foreground: adaptive(complete(<truecolor>,<ansi256color>,<ansicolor>),complete(<truecolor>,<ansi256color>,<ansicolor>));
-
Padding, margin, align etc which can take multiple values at once:
margin: 10
margin: 10 20
margin: 10 20 10 20
-
Border styles:
border-style: rounded;
border-style: hidden;
border-style: normal;
border-style: thick;
border-style: double;
-
Border styles with top/bottom or left/right selection (see the doc
for lipgloss.Style
's Border()
method):
border: normal true false;
border: normal true false false true;
-
Resetting a style with clear
: this erases all the properties
in the style, to start with a fresh style.