【导语】:基于 TUI 构建的 Go 终端输入款式库。
简介
Lip Gloss是一个精美的终端输入款式库,基于TUI构建,能够DIY本人Go终端款式,定义文本款式、背景配色等。Lip Gloss对终端渲染采纳的是表白性、申明性的办法。如果你对CSS很相熟,那Lip Gloss对你来说就很简略了。
import "github.com/charmbracelet/lipgloss" var style = lipgloss.NewStyle(). Bold(true). Foreground(lipgloss.Color("#FAFAFA")). Background(lipgloss.Color("#7D56F4")). PaddingTop(2). PaddingLeft(4). Width(22) fmt.Println(style.Render("Hello, kitty."))
我的项目地址是:
https://github.com/charmbrace...
色彩设置
Lip Gloss反对以下色彩的配置文件:
- ANSI 16 Colors (4-bit)
lipgloss.Color("5") // magenta lipgloss.Color("9") // red lipgloss.Color("12") // light blue
- ANSI 256 Colors (8-bit)
lipgloss.Color("86") // aqua lipgloss.Color("201") // hot pink lipgloss.Color("202") // orange
- True Color (24-bit)
lipgloss.Color("#0000FF") // good ol' 100% blue lipgloss.Color("#04B575") // a green lipgloss.Color("#3C3C3C") // a dark gray
这些配置文件会被自动检测,并且以后调色板色域之外的色彩将被主动强制为其最靠近的可用值。
- Adaptive Colors 还能够为浅色和深色背景指定色彩选项:
lipgloss.AdaptiveColor{Light: "236", Dark: "248"}
内联格局
Lip Gloss反对通常的ANSI文本格式选项:
var style = lipgloss.NewStyle(). Bold(true). Italic(true). Faint(true). Blink(true). Strikethrough(true). Underline(true). Reverse(true)
块级格式化
Lip Gloss还反对块级格式化的规定:
// Padding var style = lipgloss.NewStyle(). PaddingTop(2). PaddingRight(4). PaddingBottom(2). PaddingLeft(4) // Margins var style = lipgloss.NewStyle(). MarginTop(2). RightMarginRight(4). MarginBottom(2). MarginLeft(4)
还有用于边距和填充的简写语法,语法与CSS雷同:
lipgloss.NewStyle().Padding(2) lipgloss.NewStyle().Margin(2, 4) lipgloss.NewStyle().Padding(1, 4, 2) lipgloss.NewStyle().Margin(2, 4, 3, 1)
文本对齐
能够设置文本左对齐、右对齐、居中显示:
var style = lipgloss.NewStyle(). Width(24). Align(lipgloss.Left). // 左对齐 Align(lipgloss.Right). // 右对齐 Align(lipgloss.Center) // 居中
宽度和高度
设置宽度和高度非常简单:
var str = lipgloss.NewStyle(). Width(24). Height(32). Foreground(lipgloss.Color("63")). Render("What’s for lunch?")
复制款式
能够复制款式,在已有款式的根底上复制并增加新的成果:
var style = lipgloss.NewStyle().Foreground(lipgloss.Color("219")) var wildStyle = style.Copy().Blink(true)
继承款式
能够从其余款式继承:
var styleA = lipgloss.NewStyle(). Foreground(lipgloss.Color("229")). Background(lipgloss.Color("63")) // 只有background会被继承,因为foreground被从新设置了 var styleB = lipgloss.NewStyle(). Foreground(lipgloss.Color("201")). Inherit(styleA)
勾销款式
能够设置勾销款式,勾销后,复制和继承都不会应用该款式:
var style = lipgloss.NewStyle(). Bold(true). // 加粗 UnsetBold(). // 勾销加粗 Background(lipgloss.Color("227")). // 背景色彩 UnsetBackground() // 勾销背景色彩
预期的款式
有时在开发组件时,您心愿确保款式定义恪守UI中的预期目标,能够强制设置该款式,不容许其他人再批改相干的这个款式:
// 强制渲染,疏忽margins, padding, borders. someStyle.Inline(true).Render("yadda yadda") // 增加限度,内联(true),最大宽度(5) someStyle.Inline(true).MaxWidth(5).Render("yadda yadda") // 增加限度,最大宽度(5),最大高度(5) someStyle.MaxWidth(5).MaxHeight(5).Render("yadda yadda")
渲染
应用Render办法:
fmt.Println(lipgloss.NewStyle().Bold(true).Render("Hello, kitty."))
或者应用Stringer接口:
var style = lipgloss.NewStyle().String("你好,猫咪。").Bold(true) fmt.Printf("%s\n", style)
段落连贯
程度或垂直连贯文本段落:
// 程度合并 lipgloss.HorizontalJoin(lipgloss.Bottom, paragraphA, paragraphB, paragraphC) // 垂直合并 lipgloss.VerticalJoin(lipgloss.Center, paragraphA, paragraphB)
将文本放在空格中
// 将段落程度居中搁置在宽度为80的空间中 block := lipgloss.PlaceHorizontal(80, lipgloss.Center, fancyStyledParagraph) // 在高度为30的空间中搁置一个段落 block := lipgloss.PlaceVertical(30, lipgloss.Bottom, fancyStyledParagraph) // 将段落放在30x80单元格空间的右下角。 block := lipgloss.Place(30, 80, lipgloss.Right, lipgloss.Bottom, fancyStyledParagraph)
开源前哨
日常分享热门、乏味和实用的开源我的项目。参加保护 10万+ Star 的开源技术资源库,包含:Python、Java、C/C++、Go、JS、CSS、Node.js、PHP、.NET 等。