【导语】:基于 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 等。