lipgloss

package module
v0.0.0-...-6377204 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 13, 2026 License: MIT Imports: 11 Imported by: 0

README

Lip Gloss


最新版本 GoDoc 构建状态

用于创建美观终端布局的样式定义。专为 TUI(终端用户界面)设计。

Lip Gloss 示例

Lip Gloss 采用富有表现力的声明式方法进行终端渲染。熟悉 CSS 的用户会对 Lip Gloss 感到亲切。


import "github.com/purpose168/lipgloss-cn"

// 创建一个新的样式并设置属性
var style = lipgloss.NewStyle().
    Bold(true).                        // 设置为粗体
    Foreground(lipgloss.Color("#FAFAFA")).  // 设置前景色为浅灰色
    Background(lipgloss.Color("#7D56F4")).  // 设置背景色为紫色
    PaddingTop(2).                     // 设置顶部内边距为 2
    PaddingLeft(4).                    // 设置左侧内边距为 4
    Width(22)                          // 设置宽度为 22

// 渲染并打印文本
fmt.Println(style.Render("Hello, kitty"))

颜色

Lip Gloss 支持以下颜色配置文件:

ANSI 16 色(4 位)
lipgloss.Color("5")  // 洋红色
lipgloss.Color("9")  // 红色
lipgloss.Color("12") // 浅蓝色
ANSI 256 色(8 位)
lipgloss.Color("86")  // 水绿色
lipgloss.Color("201") // 亮粉色
lipgloss.Color("202") // 橙色
真彩色(16,777,216 色;24 位)
lipgloss.Color("#0000FF") // 标准纯蓝色
lipgloss.Color("#04B575") // 一种绿色
lipgloss.Color("#3C3C3C") // 深灰色

...以及 1 位 ASCII 配置文件,仅支持黑白两色。

终端的颜色配置文件会被自动检测,当前调色板色域之外的颜色会被自动转换为最接近的可用值。

自适应颜色

你还可以为亮色和暗色背景指定颜色选项:

lipgloss.AdaptiveColor{Light: "236", Dark: "248"} // 亮色背景使用 236,暗色背景使用 248

终端的背景颜色会被自动检测,并在运行时选择合适的颜色。

完整颜色

CompleteColor 为真彩色、ANSI256 和 ANSI 颜色配置文件指定确切值。

lipgloss.CompleteColor{TrueColor: "#0000FF", ANSI256: "86", ANSI: "5"} // 分别指定真彩色、ANSI256 和 ANSI 颜色值

在这种情况下,不会执行自动颜色降级,而是基于指定的颜色。

完整自适应颜色

你可以将 CompleteColorAdaptiveColor 结合使用,为亮色和暗色背景指定确切值,而无需自动颜色降级。

lipgloss.CompleteAdaptiveColor{
    Light: CompleteColor{TrueColor: "#d7ffae", ANSI256: "193", ANSI: "11"}, // 亮色背景的完整颜色配置
    Dark:  CompleteColor{TrueColor: "#d75fee", ANSI256: "163", ANSI: "5"},  // 暗色背景的完整颜色配置
}

内联格式化

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).      // 顶部外边距
    MarginRight(4).    // 右侧外边距
    MarginBottom(2).   // 底部外边距
    MarginLeft(4)      // 左侧外边距

外边距和内边距还有简写语法,遵循与 CSS 相同的格式:

// 所有边都为 2 个单元格
lipgloss.NewStyle().Padding(2)

// 顶部和底部为 2 个单元格,左侧和右侧为 4 个单元格
lipgloss.NewStyle().Margin(2, 4)

// 顶部为 1 个单元格,两侧为 4 个单元格,底部为 2 个单元格
lipgloss.NewStyle().Padding(1, 4, 2)

// 顺时针方向,从顶部开始:顶部 2 个单元格,右侧 4 个,底部 3 个,左侧 1 个
lipgloss.NewStyle().Margin(2, 4, 3, 1)

文本对齐

你可以将文本段落对齐到左侧、右侧或居中。

var style = lipgloss.NewStyle().
    Width(24).            // 设置宽度为 24
    Align(lipgloss.Left).  // 左对齐
    Align(lipgloss.Right). // 不,右对齐
    Align(lipgloss.Center) // 开玩笑的,居中对齐

宽度和高度

设置最小宽度和高度简单直接。

var style = lipgloss.NewStyle().
    SetString("What's for lunch?").  // 设置文本内容
    Width(24).                       // 设置宽度为 24
    Height(32).                      // 设置高度为 32
    Foreground(lipgloss.Color("63")) // 设置前景色为 63

边框

添加边框很简单:

// 添加一个紫色的矩形边框
var style = lipgloss.NewStyle().
    BorderStyle(lipgloss.NormalBorder()).  // 设置为普通边框样式
    BorderForeground(lipgloss.Color("63"))  // 设置边框前景色为紫色

// 设置一个圆角的、黄底紫边的顶部和左侧边框
var anotherStyle = lipgloss.NewStyle().
    BorderStyle(lipgloss.RoundedBorder()).     // 设置为圆角边框样式
    BorderForeground(lipgloss.Color("228")).    // 设置边框前景色为黄色
    BorderBackground(lipgloss.Color("63")).    // 设置边框背景色为紫色
    BorderTop(true).                            // 显示顶部边框
    BorderLeft(true)                            // 显示左侧边框

// 创建自定义边框
var myCuteBorder = lipgloss.Border{
    Top:         "._.:*:",   // 顶部边框
    Bottom:      "._.:*:",   // 底部边框
    Left:        "|*",       // 左侧边框
    Right:       "|*",       // 右侧边框
    TopLeft:     "*",        // 左上角
    TopRight:    "*",        // 右上角
    BottomLeft:  "*",        // 左下角
    BottomRight: "*",        // 右下角
}

边框还有简写函数,遵循与外边距和内边距简写函数类似的模式。

// 为顶部和底部添加粗边框
lipgloss.NewStyle().
    Border(lipgloss.ThickBorder(), true, false)  // 粗边框,显示顶部,不显示左侧

// 为顶部和左侧添加双边框。规则按顺时针方向从顶部开始设置。
lipgloss.NewStyle().
    Border(lipgloss.DoubleBorder(), true, false, false, true)  // 双边框,显示顶部和左侧

关于边框的更多信息,请参阅 [文档][docs]。

样式复制

只需使用赋值:

style := lipgloss.NewStyle().Foreground(lipgloss.Color("219")) // 创建一个带有前景色的样式

copiedStyle := style // 这是一个真正的副本

wildStyle := style.Blink(true) // 这也是一个真正的副本,只是添加了闪烁效果

由于 Style 数据结构只包含基本类型,将一个样式赋值给另一个实际上会创建该样式的新副本,而不会修改原始样式。

样式继承

样式可以从其他样式继承规则。继承时,只会继承接收方上未设置的规则。

var styleA = lipgloss.NewStyle().
    Foreground(lipgloss.Color("229")).  // 设置前景色
    Background(lipgloss.Color("63"))     // 设置背景色

// 这里只会继承背景色,因为前景色已经被设置:
var styleB = lipgloss.NewStyle().
    Foreground(lipgloss.Color("201")).  // 设置前景色(会覆盖继承的值)
    Inherit(styleA)                      // 继承 styleA 的规则

取消规则

所有规则都可以被取消:

var style = lipgloss.NewStyle().
    Bold(true).                        // 设置为粗体
    UnsetBold().                       // 开玩笑,不要设置为粗体
    Background(lipgloss.Color("227")). // 设置黄色背景
    UnsetBackground()                  // 算了,取消背景色

当规则被取消时,它不会被继承或复制。

强制规则

有时,例如在开发组件时,你希望确保样式定义尊重它们在 UI 中的预期用途。这就是 InlineMaxWidthMaxHeight 的用武之地:

// 强制渲染到单行,忽略外边距、内边距和边框。
someStyle.Inline(true).Render("yadda yadda")

// 同时限制渲染到 5 个单元格
someStyle.Inline(true).MaxWidth(5).Render("yadda yadda")

// 限制渲染到 5x5 的单元格块
someStyle.MaxWidth(5).MaxHeight(5).Render("yadda yadda")

制表符

制表符 (\t) 在不同终端中的渲染方式不同(通常为 8 个空格,有时为 4 个空格)。由于这种不一致性,Lip Gloss 在渲染时会将制表符转换为 4 个空格。不过,这种行为可以在每个样式的基础上进行更改:

style := lipgloss.NewStyle() // 制表符将渲染为 4 个空格,默认值
style = style.TabWidth(2)    // 将制表符渲染为 2 个空格
style = style.TabWidth(0)    // 完全移除制表符
style = style.TabWidth(lipgloss.NoTabConversion) // 保持制表符不变

渲染

通常,你只需在 lipgloss.Style 上调用 Render(string...) 方法:

style := lipgloss.NewStyle().Bold(true).SetString("Hello,") // 创建样式并设置前缀文本
fmt.Println(style.Render("kitty.")) // Hello, kitty.
fmt.Println(style.Render("puppy.")) // Hello, puppy.

但你也可以使用 Stringer 接口:

var style = lipgloss.NewStyle().SetString("你好,猫咪。").Bold(true) // 创建样式并设置文本
fmt.Println(style) // 你好,猫咪。
自定义渲染器

自定义渲染器允许你渲染到特定的输出。当你想要渲染到不同的输出并为每个输出正确检测颜色配置文件和暗色背景状态时,这一点特别重要,例如在服务器-客户端场景中。

func myLittleHandler(sess ssh.Session) {
    // 为客户端创建一个渲染器。
    renderer := lipgloss.NewRenderer(sess)

    // 在渲染器上创建一个新样式。
    style := renderer.NewStyle().Background(lipgloss.AdaptiveColor{Light: "63", Dark: "228"})

    // 渲染。颜色配置文件和暗色背景状态将被正确检测。
    io.WriteString(sess, style.Render("Heyyyyyyy"))
}

关于使用 [Wish][wish] 通过 SSH 使用自定义渲染器的示例,请参阅 [SSH 示例][ssh-example]。

实用工具

除了纯粹的样式设置外,Lip Gloss 还附带了一些实用工具来帮助组装布局。

连接段落

水平和垂直连接段落非常简单。

// 沿底部边缘水平连接三个段落
lipgloss.JoinHorizontal(lipgloss.Bottom, paragraphA, paragraphB, paragraphC)

// 沿中心轴垂直连接两个段落
lipgloss.JoinVertical(lipgloss.Center, paragraphA, paragraphB)

// 水平连接三个段落,较短的段落对齐到最高段落顶部的 20% 位置
lipgloss.JoinHorizontal(0.2, paragraphA, paragraphB, paragraphC)
测量宽度和高度

在构建布局时,有时你会想知道文本块的宽度和高度。

// 渲染一个文本块。
var style = lipgloss.NewStyle().
    Width(40).   // 设置宽度为 40
    Padding(2)   // 设置内边距为 2
var block string = style.Render(someLongString) // 渲染文本

// 获取文本块的实际物理尺寸。
width := lipgloss.Width(block)  // 获取宽度
height := lipgloss.Height(block) // 获取高度

// 这里有一个简写函数。
w, h := lipgloss.Size(block) // 同时获取宽度和高度
在空白处放置文本

有时你只是想在空白处放置一个文本块。

// 在 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)

你还可以设置空白的样式。有关详细信息,请参阅 [文档][docs]。

表格渲染

Lip Gloss 附带了一个表格渲染子包。

import "github.com/purpose168/lipgloss-cn/table" // 导入表格包

定义一些数据行。

rows := [][]string{
    {"Chinese", "您好", "你好"},      // 中文
    {"Japanese", "こんにちは", "やあ"}, // 日语
    {"Arabic", "أهلين", "أهلا"},      // 阿拉伯语
    {"Russian", "Здравствуйте", "Привет"}, // 俄语
    {"Spanish", "Hola", "¿Qué tal?"},    // 西班牙语
}

使用表格包来设置样式并渲染表格。

var (
    purple    = lipgloss.Color("99")     // 紫色
    gray      = lipgloss.Color("245")     // 灰色
    lightGray = lipgloss.Color("241")     // 浅灰色

    headerStyle  = lipgloss.NewStyle().Foreground(purple).Bold(true).Align(lipgloss.Center)  // 表头样式
    cellStyle    = lipgloss.NewStyle().Padding(0, 1).Width(14)                                // 单元格基础样式
    oddRowStyle  = cellStyle.Foreground(gray)                                               // 奇数行样式
    evenRowStyle = cellStyle.Foreground(lightGray)                                          // 偶数行样式
)

// 创建并配置表格
t := table.New().
    Border(lipgloss.NormalBorder()).                       // 设置普通边框
    BorderStyle(lipgloss.NewStyle().Foreground(purple)).    // 设置边框样式为紫色
    StyleFunc(func(row, col int) lipgloss.Style {          // 自定义样式函数
        switch {
        case row == table.HeaderRow:
            return headerStyle  // 表头使用表头样式
        case row%2 == 0:
            return evenRowStyle // 偶数行使用偶数行样式
        default:
            return oddRowStyle  // 奇数行使用奇数行样式
        }
    }).
    Headers("LANGUAGE", "FORMAL", "INFORMAL").  // 设置表头
    Rows(rows...)                                // 设置数据行

// 你也可以逐行添加表格数据
t.Row("English", "You look absolutely fabulous.", "How's it going?") // 添加英语行

打印表格。

fmt.Println(t) // 打印表格

Table Example

[!WARNING] 表格的 Rows 需要在 Offset 之前声明,否则它不会生效。

表格边框

有一些辅助函数可以生成 Markdown 或 ASCII 风格的表格:

Markdown 表格
table.New().Border(lipgloss.MarkdownBorder()).BorderTop(false).BorderBottom(false) // 创建 Markdown 风格表格
| LANGUAGE |    FORMAL    | INFORMAL  |
|----------|--------------|-----------|
| Chinese  | Nǐn hǎo      | Nǐ hǎo    |
| French   | Bonjour      | Salut     |
| Russian  | Zdravstvuyte | Privet    |
| Spanish  | Hola         | ¿Qué tal? |
ASCII 表格
table.New().Border(lipgloss.ASCIIBorder()) // 创建 ASCII 风格表格
+----------+--------------+-----------+
| LANGUAGE |    FORMAL    | INFORMAL  |
+----------+--------------+-----------+
| Chinese  | Nǐn hǎo      | Nǐ hǎo    |
| French   | Bonjour      | Salut     |
| Russian  | Zdravstvuyte | Privet    |
| Spanish  | Hola         | ¿Qué tal? |
+----------+--------------+-----------+

关于表格的更多信息,请参阅 文档示例

列表渲染

Lip Gloss 附带了一个列表渲染子包。

import "github.com/purpose168/lipgloss-cn/list" // 导入列表包

定义一个新列表。

l := list.New("A", "B", "C") // 创建包含 A、B、C 的列表

打印列表。

fmt.Println(l) // 打印列表

// • A
// • B
// • C

列表具有嵌套能力。

l := list.New(
    "A", list.New("Artichoke"),  // A 类别及其子项目
    "B", list.New("Baking Flour", "Bananas", "Barley", "Bean Sprouts"),  // B 类别及其子项目
    "C", list.New("Cashew Apple", "Cashews", "Coconut Milk", "Curry Paste", "Currywurst"),  // C 类别及其子项目
    "D", list.New("Dill", "Dragonfruit", "Dried Shrimp"),  // D 类别及其子项目
    "E", list.New("Eggs"),  // E 类别及其子项目
    "F", list.New("Fish Cake", "Furikake"),  // F 类别及其子项目
    "J", list.New("Jicama"),  // J 类别及其子项目
    "K", list.New("Kohlrabi"),  // K 类别及其子项目
    "L", list.New("Leeks", "Lentils", "Licorice Root"),  // L 类别及其子项目
)

打印列表。

fmt.Println(l) // 打印列表

image

列表可以通过其枚举函数以及使用 lipgloss.Style 来自定义。

enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("99")).MarginRight(1) // 枚举器样式
itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212")).MarginRight(1)      // 项目样式

l := list.New(
    "Glossier",
    "Claire’s Boutique",
    "Nyx",
    "Mac",
    "Milk",
    ).
    Enumerator(list.Roman).          // 使用罗马数字枚举
    EnumeratorStyle(enumeratorStyle).  // 设置枚举器样式
    ItemStyle(itemStyle)               // 设置项目样式

打印列表。

List example

除了预定义的枚举器(ArabicAlphabetRomanBulletTree)外,你还可以定义自己的自定义枚举器:

l := list.New("Duck", "Duck", "Duck", "Duck", "Goose", "Duck", "Duck") // 创建包含多个 Duck 和一个 Goose 的列表

// 自定义枚举器函数
func DuckDuckGooseEnumerator(l list.Items, i int) string {
    if l.At(i).Value() == "Goose" {
        return "Honk →" // 当项目是 Goose 时返回特殊标记
    }
    return "" // 其他项目返回空
}

l = l.Enumerator(DuckDuckGooseEnumerator) // 设置自定义枚举器

打印列表:

image

如果需要,你还可以增量构建列表:

l := list.New() // 创建空列表

for i := 0; i < repeat; i++ {
    l.Item("Lip Gloss") // 循环添加项目
}

树渲染

Lip Gloss 附带了一个树渲染子包。

import "github.com/purpose168/lipgloss-cn/tree" // 导入树包

定义一个新树。

t := tree.Root(".").  // 创建根节点为 "." 的树
    Child("A", "B", "C") // 添加子节点 A、B、C

打印树。

fmt.Println(t) // 打印树

// .
// ├── A
// ├── B
// └── C

树具有嵌套能力。

t := tree.Root(".").  // 创建根节点为 "." 的树
    Child("macOS").    // 添加 macOS 子节点
    Child(
        tree.New().  // 创建新树作为子节点
            Root("Linux").  // 设置根节点为 Linux
            Child("NixOS").  // 添加 NixOS 子节点
            Child("Arch Linux (btw)").  // 添加 Arch Linux 子节点
            Child("Void Linux"),  // 添加 Void Linux 子节点
        ).
    Child(
        tree.New().  // 创建新树作为子节点
            Root("BSD").  // 设置根节点为 BSD
            Child("FreeBSD").  // 添加 FreeBSD 子节点
            Child("OpenBSD"),  // 添加 OpenBSD 子节点
    )

打印树。

fmt.Println(t) // 打印树

Tree Example (simple)

树可以通过其枚举函数以及使用 lipgloss.Style 来自定义。

enumeratorStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("63")).MarginRight(1) // 枚举器样式
rootStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("35"))                     // 根节点样式
itemStyle := lipgloss.NewStyle().Foreground(lipgloss.Color("212"))                     // 项目样式

t := tree.
    Root("⁜ Makeup").  // 创建根节点为 "⁜ Makeup" 的树
    Child(
        "Glossier",  // 添加 Glossier 子节点
        "Fenty Beauty",  // 添加 Fenty Beauty 子节点
        tree.New().Child(
            "Gloss Bomb Universal Lip Luminizer",  // 添加嵌套子节点
            "Hot Cheeks Velour Blushlighter",  // 添加嵌套子节点
        ),
        "Nyx",  // 添加 Nyx 子节点
        "Mac",  // 添加 Mac 子节点
        "Milk",  // 添加 Milk 子节点
    ).
    Enumerator(tree.RoundedEnumerator).  // 使用圆角枚举器
    EnumeratorStyle(enumeratorStyle).  // 设置枚举器样式
    RootStyle(rootStyle).  // 设置根节点样式
    ItemStyle(itemStyle)   // 设置项目样式

打印树。

Tree Example (makeup)

树的预定义枚举器有 DefaultEnumeratorRoundedEnumerator

如果需要,你还可以增量构建树:

t := tree.New() // 创建空树

for i := 0; i < repeat; i++ {
    t.Child("Lip Gloss") // 循环添加子节点
}

常见问题

为什么内容不对齐?为什么边框宽度不正确?

这很可能是由于你的区域设置和编码导致的,特别是对于中文、日语和韩语(例如 zh_CN.UTF-8ja_JP.UTF-8)。最直接的解决方法是在你的环境中设置 RUNEWIDTH_EASTASIAN=0

详细信息请参阅 https://github.com/purpose168/lipgloss-cn/issues/40.

为什么 Lip Gloss 不显示颜色?

Lip Gloss 会自动将颜色降级为给定终端中最佳可用选项,如果输出不是 TTY,它会完全移除颜色输出。这在运行测试、CI 或通过管道将输出传输到其他地方时很常见。

如有必要,你可以在测试中使用 SetColorProfile 强制使用颜色配置文件。

import (
    "github.com/purpose168/lipgloss-cn"
    "github.com/muesli/termenv"
)

lipgloss.SetColorProfile(termenv.TrueColor) // 强制使用真彩色配置文件

注意: 此选项会限制应用程序的灵活性,并可能导致在不需要的情况下输出 ANSI 转义码。在选择强制使用颜色配置文件之前,请仔细考虑你的用例和环境。

关于 Bubble Tea

Lip Gloss 不会替代 Bubble Tea。相反,它是 Bubble Tea 的优秀伴侣。它的设计目的是让组装终端用户界面视图变得尽可能简单和有趣,这样你就可以专注于构建应用程序,而不是关注低级布局细节。

简单来说,你可以使用 Lip Gloss 来帮助构建你的 Bubble Tea 视图。

底层实现

Lip Gloss 构建在优秀的 TermenvReflow 库之上,它们分别处理颜色和支持 ANSI 的文本操作。对于许多用例,Termenv 和 Reflow 足以满足你的需求。

Markdown 渲染

如果你需要更以文档为中心的渲染解决方案,支持列表、表格和语法高亮代码等功能,请查看 Glamour,它是一个基于样式表的 Markdown 渲染器。

贡献

请参阅 contributing

反馈

我们很想听听你对这个项目的想法。随时给我们留言!

许可证

MIT

Documentation

Overview

Package lipgloss 为美观的终端布局提供样式定义。专为 TUI(终端用户界面)设计。

Index

Constants

View Source
const NoTabConversion = -1

NoTabConversion 可以传递给 Style.TabWidth 以在渲染时禁用制表符替换为空格。

Variables

This section is empty.

Functions

func ColorProfile

func ColorProfile() termenv.Profile

ColorProfile 返回检测到的 termenv 颜色配置文件。

func HasDarkBackground

func HasDarkBackground() bool

HasDarkBackground 返回终端是否具有深色背景。

func Height

func Height(str string) int

Height 返回字符串在单元格中的高度。这只是通过计算 \n 字符来完成的。如果您的字符串使用 \r\n 作为换行符,您应该先将它们转换为 \n,或者简单地编写一个单独的函数来测量高度。

func JoinHorizontal

func JoinHorizontal(pos Position, strs ...string) string

JoinHorizontal 是一个实用函数,用于沿着垂直轴水平连接两个可能多行的字符串。第一个参数是位置,0 表示完全在顶部,1 表示完全在底部。

如果你只是想对齐到顶部、中心或底部,你可以直接使用辅助常量 Top、Center 和 Bottom。

示例:

blockB := "...\n...\n..."
blockA := "...\n...\n...\n...\n..."

// 从顶部 20% 处连接
str := lipgloss.JoinHorizontal(0.2, blockA, blockB)

// 在顶部边缘连接
str := lipgloss.JoinHorizontal(lipgloss.Top, blockA, blockB)

func JoinVertical

func JoinVertical(pos Position, strs ...string) string

JoinVertical 是一个实用函数,用于沿着水平轴垂直连接两个可能多行的字符串。第一个参数是位置,0 表示完全在左侧,1 表示完全在右侧。

如果你只是想对齐到左侧、中心或右侧,你可以直接使用辅助常量 Left、Center 和 Right。

示例:

blockB := "...\n...\n..."
blockA := "...\n...\n...\n...\n..."

// 从左侧 20% 处连接
str := lipgloss.JoinVertical(0.2, blockA, blockB)

// 在右侧边缘连接
str := lipgloss.JoinVertical(lipgloss.Right, blockA, blockB)

func Place

func Place(width, height int, hPos, vPos Position, str string, opts ...WhitespaceOption) string

Place 将字符串或文本块垂直放置在给定宽度或高度的无样式框中。

func PlaceHorizontal

func PlaceHorizontal(width int, pos Position, str string, opts ...WhitespaceOption) string

PlaceHorizontal 将字符串或文本块水平放置在给定宽度的无样式块中。如果给定宽度短于字符串的最大宽度(由其最长行测量),则此操作将无效。

func PlaceVertical

func PlaceVertical(height int, pos Position, str string, opts ...WhitespaceOption) string

PlaceVertical 将字符串或文本块垂直放置在给定高度的无样式块中。如果给定高度短于字符串的高度(由其换行符测量),则此操作将无效。

func SetColorProfile

func SetColorProfile(p termenv.Profile)

SetColorProfile 在默认渲染器上设置颜色配置文件。此函数主要用于测试目的,以便您可以确保针对特定配置文件进行测试。

在测试之外,您可能不想使用此函数,因为颜色配置文件会检测并缓存终端的颜色能力,并选择最佳可用配置文件。

可用的颜色配置文件有:

termenv.Ascii     // 无颜色,1位
termenv.ANSI      // 16 颜色,4位
termenv.ANSI256   // 256 颜色,8位
termenv.TrueColor // 16,777,216 颜色,24位

此函数是线程安全的。

func SetDefaultRenderer

func SetDefaultRenderer(r *Renderer)

SetDefaultRenderer 设置默认的全局渲染器。

func SetHasDarkBackground

func SetHasDarkBackground(b bool)

SetHasDarkBackground 为默认渲染器设置背景颜色检测值。此函数主要用于测试目的,以便您可以确保针对特定背景颜色设置进行测试。

在测试之外,您可能不想使用此函数,因为背景值会自动检测并针对终端当前的背景颜色设置进行缓存。

此函数是线程安全的。

func Size

func Size(str string) (width, height int)

Size 返回字符串在单元格中的宽度和高度。ANSI 序列被忽略,宽于一个单元格的字符(如中文字符和表情符号)被适当测量。

func StyleRanges

func StyleRanges(s string, ranges ...Range) string

StyleRanges 允许对给定字符串的不同范围应用不同的样式。 该函数会考虑现有的样式。 范围不应重叠。

func StyleRunes

func StyleRunes(str string, indices []int, matched, unmatched Style) string

StyleRunes 将给定样式应用于字符串中给定索引处的符文。 注意,您必须为匹配和未匹配的符文都提供样式选项。超出范围的索引将被忽略。

func Width

func Width(str string) (width int)

Width 返回字符串中字符的单元格宽度。ANSI 序列被忽略,宽于一个单元格的字符(如中文字符和表情符号)被适当测量。

您应该使用此函数而不是 len(string) 或 len([]rune(string)),因为它们都不会给您准确的结果。

Types

type ANSIColor

type ANSIColor uint

ANSIColor 是一种通过 ANSI 颜色值指定的颜色。它只是更通用的 Color 函数的语法糖。无效的颜色将渲染为黑色。

示例用法:

// 这两个语句是等价的。
colorA := lipgloss.ANSIColor(21)
colorB := lipgloss.Color("21")

func (ANSIColor) RGBA

func (ac ANSIColor) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。这满足 Go 的 Color 接口。请注意,在出错时我们返回不透明度为 100% 的黑色,即:

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type AdaptiveColor

type AdaptiveColor struct {
	Light string
	Dark  string
}

AdaptiveColor 为浅色和深色背景提供颜色选项。根据终端背景颜色的明暗程度, 将在运行时返回适当的颜色。

示例用法:

color := lipgloss.AdaptiveColor{Light: "#0000ff", Dark: "#000099"}

func (AdaptiveColor) RGBA

func (ac AdaptiveColor) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。这满足 Go 的 Color 接口。请注意,在出错时我们返回不透明度为 100% 的黑色,即:

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type Border

type Border struct {
	Top          string
	Bottom       string
	Left         string
	Right        string
	TopLeft      string
	TopRight     string
	BottomLeft   string
	BottomRight  string
	MiddleLeft   string
	MiddleRight  string
	Middle       string
	MiddleTop    string
	MiddleBottom string
}

Border 包含一系列值,这些值组成了边框的各个部分。

func ASCIIBorder

func ASCIIBorder() Border

ASCIIBorder 返回一个使用 ASCII 字符的表格边框。

func BlockBorder

func BlockBorder() Border

BlockBorder 返回一个占据整个块的边框。

func DoubleBorder

func DoubleBorder() Border

DoubleBorder 返回一个由两条细线条组成的边框。

func HiddenBorder

func HiddenBorder() Border

HiddenBorder 返回一个渲染为一系列单单元格空格的边框。它在你想要移除标准边框但保持布局定位的情况下很有用。 也就是说,你仍然可以为隐藏的边框应用背景颜色。

func InnerHalfBlockBorder

func InnerHalfBlockBorder() Border

InnerHalfBlockBorder 返回一个位于框架内部的半块边框。

func MarkdownBorder

func MarkdownBorder() Border

MarkdownBorder 返回一个 Markdown 风格的表格边框。

为了获得最佳效果,请确保禁用顶部和底部边框。这将确保输出是有效的 Markdown。

table.New().Border(lipgloss.MarkdownBorder()).BorderTop(false).BorderBottom(false)

func NormalBorder

func NormalBorder() Border

NormalBorder 返回一个标准类型的边框,具有正常的粗细和 90 度角。

func OuterHalfBlockBorder

func OuterHalfBlockBorder() Border

OuterHalfBlockBorder 返回一个位于框架外部的半块边框。

func RoundedBorder

func RoundedBorder() Border

RoundedBorder 返回一个带有圆角的边框。

func ThickBorder

func ThickBorder() Border

ThickBorder 返回一个比 NormalBorder 返回的边框更粗的边框。

func (Border) GetBottomSize

func (b Border) GetBottomSize() int

GetBottomSize 返回底部边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。 如果底部边缘不存在边框,则返回 0。

func (Border) GetLeftSize

func (b Border) GetLeftSize() int

GetLeftSize 返回左侧边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。 如果左侧边缘不存在边框,则返回 0。

func (Border) GetRightSize

func (b Border) GetRightSize() int

GetRightSize 返回右侧边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。 如果右侧边缘不存在边框,则返回 0。

func (Border) GetTopSize

func (b Border) GetTopSize() int

GetTopSize 返回顶部边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。 如果顶部边缘不存在边框,则返回 0。

type Color

type Color string

Color 通过十六进制或 ANSI 值指定颜色。例如:

ansiColor := lipgloss.Color("21")
hexColor := lipgloss.Color("#0000ff")

func (Color) RGBA

func (c Color) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。这满足 Go 的 Color 接口。请注意,在出错时我们返回不透明度为 100% 的黑色,即:

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type CompleteAdaptiveColor

type CompleteAdaptiveColor struct {
	Light CompleteColor
	Dark  CompleteColor
}

CompleteAdaptiveColor 为 truecolor、ANSI256 和 ANSI 颜色配置文件指定精确的值, 并为浅色和深色背景提供单独的选项。不会执行自动颜色降级。

func (CompleteAdaptiveColor) RGBA

func (cac CompleteAdaptiveColor) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。这满足 Go 的 Color 接口。请注意,在出错时我们返回不透明度为 100% 的黑色,即:

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type CompleteColor

type CompleteColor struct {
	TrueColor string
	ANSI256   string
	ANSI      string
}

CompleteColor 为 truecolor、ANSI256 和 ANSI 颜色配置文件指定精确的值。不会执行自动颜色降级。

func (CompleteColor) RGBA

func (c CompleteColor) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。这满足 Go 的 Color 接口。请注意,在出错时我们返回不透明度为 100% 的黑色,即:

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type NoColor

type NoColor struct{}

NoColor 用于指定不存在颜色样式。当此选项激活时,前景色将使用终端的默认文本颜色渲染, 而背景色将完全不绘制。

示例用法:

var style = someStyle.Background(lipgloss.NoColor{})

func (NoColor) RGBA

func (n NoColor) RGBA() (r, g, b, a uint32)

RGBA 返回此颜色的 RGBA 值。由于我们必须返回某些值,尽管此颜色表示不存在颜色, 我们返回不透明度为 100% 的黑色。

红色:0x0,绿色:0x0,蓝色:0x0,透明度:0xFFFF。

已弃用。

type Position

type Position float64

Position 表示沿着水平或垂直轴的位置。它用于涉及轴的情况,如对齐、连接、放置等。

值为 0 表示开始(左侧或顶部),1 表示结束(右侧或底部)。0.5 表示中心。

此包中提供了常量 Top、Bottom、Center、Left 和 Right,可用于提高可读性。

const (
	Top    Position = 0.0
	Bottom Position = 1.0
	Center Position = 0.5
	Left   Position = 0.0
	Right  Position = 1.0
)

Position aliases.

type Range

type Range struct {
	Start, End int
	Style      Style
}

Range 用于与 StyleRanges 一起使用。

func NewRange

func NewRange(start, end int, style Style) Range

NewRange 返回一个可与 StyleRanges 一起使用的范围。

type Renderer

type Renderer struct {
	// contains filtered or unexported fields
}

Renderer 是 lipgloss 终端渲染器。

func DefaultRenderer

func DefaultRenderer() *Renderer

DefaultRenderer 返回默认渲染器。

func NewRenderer

func NewRenderer(w io.Writer, opts ...termenv.OutputOption) *Renderer

NewRenderer 创建一个新的 Renderer。

w 将用于确定终端的颜色能力。

func (*Renderer) ColorProfile

func (r *Renderer) ColorProfile() termenv.Profile

ColorProfile 返回检测到的 termenv 颜色配置文件。

func (*Renderer) HasDarkBackground

func (r *Renderer) HasDarkBackground() bool

HasDarkBackground 返回渲染器是否将渲染到深色背景。深色背景可以自动检测,也可以在渲染器上显式设置。

func (*Renderer) NewStyle

func (r *Renderer) NewStyle() Style

NewStyle 返回一个新的空 Style。虽然它是 Style{} 原始类型的语法糖,但建议使用此函数创建样式,以防底层实现发生变化。它接受一个可选的字符串值作为此样式的底层字符串值。

func (*Renderer) Output

func (r *Renderer) Output() *termenv.Output

Output 返回 termenv 输出。

func (*Renderer) Place

func (r *Renderer) Place(width, height int, hPos, vPos Position, str string, opts ...WhitespaceOption) string

Place 将字符串或文本块垂直放置在给定宽度或高度的无样式框中。

func (*Renderer) PlaceHorizontal

func (r *Renderer) PlaceHorizontal(width int, pos Position, str string, opts ...WhitespaceOption) string

PlaceHorizontal 将字符串或文本块水平放置在给定宽度的无样式块中。如果给定宽度短于字符串的最大宽度(由其最长行测量),则此操作将无效。

func (*Renderer) PlaceVertical

func (r *Renderer) PlaceVertical(height int, pos Position, str string, opts ...WhitespaceOption) string

PlaceVertical 将字符串或文本块垂直放置在给定高度的无样式块中。如果给定高度短于字符串的高度(由其换行符测量),则此操作将无效。

func (*Renderer) SetColorProfile

func (r *Renderer) SetColorProfile(p termenv.Profile)

SetColorProfile 在渲染器上设置颜色配置文件。此函数主要用于测试目的,以便您可以确保针对特定配置文件进行测试。

在测试之外,您可能不想使用此函数,因为颜色配置文件会检测并缓存终端的颜色能力,并选择最佳可用配置文件。

可用的颜色配置文件有:

termenv.Ascii     // 无颜色,1位
termenv.ANSI      // 16 颜色,4位
termenv.ANSI256   // 256 颜色,8位
termenv.TrueColor // 16,777,216 颜色,24位

此函数是线程安全的。

func (*Renderer) SetHasDarkBackground

func (r *Renderer) SetHasDarkBackground(b bool)

SetHasDarkBackground 在渲染器上设置背景颜色检测值。此函数主要用于测试目的,以便您可以确保针对特定背景颜色设置进行测试。

在测试之外,您可能不想使用此函数,因为背景值会自动检测并针对终端当前的背景颜色设置进行缓存。

此函数是线程安全的。

func (*Renderer) SetOutput

func (r *Renderer) SetOutput(o *termenv.Output)

SetOutput 设置 termenv 输出。

type Style

type Style struct {
	// contains filtered or unexported fields
}

Style 包含一组规则,这些规则共同构成一个完整的样式。

func NewStyle

func NewStyle() Style

NewStyle 返回一个新的空 Style。虽然它是 Style{} 原始类型的语法糖,但建议使用此函数创建样式,以防底层实现发生变化。它接受一个可选的字符串值作为此样式的底层字符串值。

func (Style) Align

func (s Style) Align(p ...Position) Style

Align 是设置水平和垂直对齐的简写方法。

使用一个参数时,位置值应用于水平对齐。

使用两个参数时,值按顺序应用于水平和垂直对齐。

func (Style) AlignHorizontal

func (s Style) AlignHorizontal(p Position) Style

AlignHorizontal 设置水平文本对齐规则。

func (Style) AlignVertical

func (s Style) AlignVertical(p Position) Style

AlignVertical 设置垂直文本对齐规则。

func (Style) Background

func (s Style) Background(c TerminalColor) Style

Background 设置背景颜色。

func (s Style) Blink(v bool) Style

Blink 设置前景文本闪烁的规则。

func (Style) Bold

func (s Style) Bold(v bool) Style

Bold 设置粗体格式规则。

func (Style) Border

func (s Style) Border(b Border, sides ...bool) Style

Border 是同时设置边框样式和哪些边应该有边框的简写方法。可变参数 sides 的工作方式如下:

使用一个值时,值应用于所有边。

使用两个值时,值按顺序应用于垂直和水平边。

使用三个值时,值按顺序应用于顶部边、水平边和底部边。

使用四个值时,值按顺时针顺序应用,从顶部边开始,然后是右边,接着是底部,最后是左边。

使用超过四个参数时,边框将应用于所有边。

示例:

// 仅应用边框到顶部和底部
lipgloss.NewStyle().Border(lipgloss.NormalBorder(), true, false)

// 仅应用圆角边框到右边和底部
lipgloss.NewStyle().Border(lipgloss.RoundedBorder(), false, true, true, false)

func (Style) BorderBackground

func (s Style) BorderBackground(c ...TerminalColor) Style

BorderBackground 是一次性设置所有边框背景颜色的简写函数。参数的工作方式如下:

使用一个参数时,参数应用于所有边。

使用两个参数时,参数按顺序应用于垂直和水平边。

使用三个参数时,参数按顺序应用于顶部边、水平边和底部边。

使用四个参数时,参数按顺时针顺序应用,从顶部边开始,然后是右边,接着是底部,最后是左边。

使用超过四个参数时,将不设置任何内容。

func (Style) BorderBottom

func (s Style) BorderBottom(v bool) Style

BorderBottom 确定是否绘制下边框。

func (Style) BorderBottomBackground

func (s Style) BorderBottomBackground(c TerminalColor) Style

BorderBottomBackground 设置边框底部的背景颜色。

func (Style) BorderBottomForeground

func (s Style) BorderBottomForeground(c TerminalColor) Style

BorderBottomForeground 设置边框底部的前景颜色。

func (Style) BorderForeground

func (s Style) BorderForeground(c ...TerminalColor) Style

BorderForeground 是一次性设置所有边框前景颜色的简写函数。参数的工作方式如下:

使用一个参数时,参数应用于所有边。

使用两个参数时,参数按顺序应用于垂直和水平边。

使用三个参数时,参数按顺序应用于顶部边、水平边和底部边。

使用四个参数时,参数按顺时针顺序应用,从顶部边开始,然后是右边,接着是底部,最后是左边。

使用超过四个参数时,将不设置任何内容。

func (Style) BorderLeft

func (s Style) BorderLeft(v bool) Style

BorderLeft 确定是否绘制左边框。

func (Style) BorderLeftBackground

func (s Style) BorderLeftBackground(c TerminalColor) Style

BorderLeftBackground 设置边框左侧的背景颜色。

func (Style) BorderLeftForeground

func (s Style) BorderLeftForeground(c TerminalColor) Style

BorderLeftForeground 设置边框左侧的前景颜色。

func (Style) BorderRight

func (s Style) BorderRight(v bool) Style

BorderRight 确定是否绘制右边框。

func (Style) BorderRightBackground

func (s Style) BorderRightBackground(c TerminalColor) Style

BorderRightBackground 设置边框右侧的背景颜色。

func (Style) BorderRightForeground

func (s Style) BorderRightForeground(c TerminalColor) Style

BorderRightForeground 设置边框右侧的前景颜色。

func (Style) BorderStyle

func (s Style) BorderStyle(b Border) Style

BorderStyle 定义样式上的边框。Border 包含一系列边框边和角的定义。

请注意,如果在设置边框样式时未为任何边设置边框可见性,则在渲染期间将为所有边启用边框。

您可以根据需要定义边框字符,不过包含了几种默认样式:NormalBorder()、RoundedBorder()、BlockBorder()、 OuterHalfBlockBorder()、InnerHalfBlockBorder()、ThickBorder() 和 DoubleBorder()。

示例:

lipgloss.NewStyle().BorderStyle(lipgloss.ThickBorder())

func (Style) BorderTop

func (s Style) BorderTop(v bool) Style

BorderTop 确定是否绘制上边框。

func (Style) BorderTopBackground

func (s Style) BorderTopBackground(c TerminalColor) Style

BorderTopBackground 设置边框顶部的背景颜色。

func (Style) BorderTopForeground

func (s Style) BorderTopForeground(c TerminalColor) Style

BorderTopForeground 设置边框顶部的前景颜色。

func (Style) ColorWhitespace

func (s Style) ColorWhitespace(v bool) Style

ColorWhitespace 确定是否应将背景颜色应用于内边距。默认情况下,这是 true,因为这很可能是期望和预期的行为,但可以为某些图形效果禁用它。

已弃用:只需使用边距和内边距。

func (Style) Copy

func (s Style) Copy() Style

Copy 返回此样式的副本,包括任何底层字符串值。

已弃用:要复制只需使用赋值(即 a := b)。所有方法也返回一个新样式。

func (Style) Faint

func (s Style) Faint(v bool) Style

Faint 设置以较暗色调渲染前景颜色的规则。

func (Style) Foreground

func (s Style) Foreground(c TerminalColor) Style

Foreground 设置前景颜色。

// 将前景设置为蓝色
s := lipgloss.NewStyle().Foreground(lipgloss.Color("#0000ff"))

// 移除前景颜色
s.Foreground(lipgloss.NoColor)

func (Style) GetAlign

func (s Style) GetAlign() Position

GetAlign 返回样式的隐式水平对齐设置。如果未设置对齐,则返回 Position.Left。

func (Style) GetAlignHorizontal

func (s Style) GetAlignHorizontal() Position

GetAlignHorizontal 返回样式的隐式水平对齐设置。如果未设置对齐,则返回 Position.Left。

func (Style) GetAlignVertical

func (s Style) GetAlignVertical() Position

GetAlignVertical 返回样式的隐式垂直对齐设置。如果未设置对齐,则返回 Position.Top。

func (Style) GetBackground

func (s Style) GetBackground() TerminalColor

GetBackground 返回样式的背景色。如果未设置值,则返回 NoColor{}。

func (s Style) GetBlink() bool

GetBlink 返回样式的闪烁值。如果未设置值,则返回 false。

func (Style) GetBold

func (s Style) GetBold() bool

GetBold 返回样式的粗体值。如果未设置值,则返回 false。

func (Style) GetBorder

func (s Style) GetBorder() (b Border, top, right, bottom, left bool)

GetBorder 返回样式的边框样式(类型为 Border)以及上、右、下、左的值,按此顺序。如果未设置边框样式,则返回 Border{}。对于所有其他未设置的值,返回 false。

func (Style) GetBorderBottom

func (s Style) GetBorderBottom() bool

GetBorderBottom 返回样式的下边框设置。如果未设置值,则返回 false。

func (Style) GetBorderBottomBackground

func (s Style) GetBorderBottomBackground() TerminalColor

GetBorderBottomBackground 返回样式的下边框背景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderBottomForeground

func (s Style) GetBorderBottomForeground() TerminalColor

GetBorderBottomForeground 返回样式的下边框前景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderBottomSize

func (s Style) GetBorderBottomSize() int

GetBorderBottomSize 返回下边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果左边缘不存在边框,则返回 0。

func (Style) GetBorderLeft

func (s Style) GetBorderLeft() bool

GetBorderLeft 返回样式的左边框设置。如果未设置值,则返回 false。

func (Style) GetBorderLeftBackground

func (s Style) GetBorderLeftBackground() TerminalColor

GetBorderLeftBackground 返回样式的左边框背景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderLeftForeground

func (s Style) GetBorderLeftForeground() TerminalColor

GetBorderLeftForeground 返回样式的左边框前景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderLeftSize

func (s Style) GetBorderLeftSize() int

GetBorderLeftSize 返回左边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果左边缘不存在边框,则返回 0。

func (Style) GetBorderRight

func (s Style) GetBorderRight() bool

GetBorderRight 返回样式的右边框设置。如果未设置值,则返回 false。

func (Style) GetBorderRightBackground

func (s Style) GetBorderRightBackground() TerminalColor

GetBorderRightBackground 返回样式的右边框背景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderRightForeground

func (s Style) GetBorderRightForeground() TerminalColor

GetBorderRightForeground 返回样式的右边框前景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderRightSize

func (s Style) GetBorderRightSize() int

GetBorderRightSize 返回右边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果右边缘不存在边框,则返回 0。

func (Style) GetBorderStyle

func (s Style) GetBorderStyle() Border

GetBorderStyle 返回样式的边框样式(类型为 Border)。如果未设置值,则返回 Border{}。

func (Style) GetBorderTop

func (s Style) GetBorderTop() bool

GetBorderTop 返回样式的上边框设置。如果未设置值,则返回 false。

func (Style) GetBorderTopBackground

func (s Style) GetBorderTopBackground() TerminalColor

GetBorderTopBackground 返回样式的上边框背景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderTopForeground

func (s Style) GetBorderTopForeground() TerminalColor

GetBorderTopForeground 返回样式的上边框前景色。如果未设置值,则返回 NoColor{}。

func (Style) GetBorderTopSize

func (s Style) GetBorderTopSize() int

GetBorderTopSize 返回上边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果上边缘不存在边框,则返回 0。

func (Style) GetBorderTopWidth

func (s Style) GetBorderTopWidth() int

GetBorderTopWidth 返回上边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果上边缘不存在边框,则返回 0。

已弃用:此函数只是调用 Style.GetBorderTopSize。

func (Style) GetColorWhitespace

func (s Style) GetColorWhitespace() bool

GetColorWhitespace 返回样式的空白着色设置。如果未设置值,则返回 false。

func (Style) GetFaint

func (s Style) GetFaint() bool

GetFaint 返回样式的淡色值。如果未设置值,则返回 false。

func (Style) GetForeground

func (s Style) GetForeground() TerminalColor

GetForeground 返回样式的前景色。如果未设置值,则返回 NoColor{}。

func (Style) GetFrameSize

func (s Style) GetFrameSize() (x, y int)

GetFrameSize 返回水平和垂直方向的外边距、内边距和边框宽度的总和。

func (Style) GetHeight

func (s Style) GetHeight() int

GetHeight 返回样式的高度设置。如果未设置高度,则返回 0。

func (Style) GetHorizontalBorderSize

func (s Style) GetHorizontalBorderSize() int

GetHorizontalBorderSize 返回水平边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果水平边缘不存在边框,则返回 0。

func (Style) GetHorizontalFrameSize

func (s Style) GetHorizontalFrameSize() int

GetHorizontalFrameSize 返回样式的水平外边距、内边距和边框宽度的总和。

临时:此方法可能会重命名。

func (Style) GetHorizontalMargins

func (s Style) GetHorizontalMargins() int

GetHorizontalMargins 返回样式的左右外边距。未设置的值被视为 0。

func (Style) GetHorizontalPadding

func (s Style) GetHorizontalPadding() int

GetHorizontalPadding 返回样式的左右内边距。未设置的值被视为 0。

func (Style) GetInline

func (s Style) GetInline() bool

GetInline 返回样式的内联设置。如果未设置值,则返回 false。

func (Style) GetItalic

func (s Style) GetItalic() bool

GetItalic 返回样式的斜体值。如果未设置值,则返回 false。

func (Style) GetMargin

func (s Style) GetMargin() (top, right, bottom, left int)

GetMargin 返回样式的上、右、下、左边距值,按此顺序。对于未设置的值,返回 0。

func (Style) GetMarginBottom

func (s Style) GetMarginBottom() int

GetMarginBottom 返回样式的下边距。如果未设置值,则返回 0。

func (Style) GetMarginLeft

func (s Style) GetMarginLeft() int

GetMarginLeft 返回样式的左边距。如果未设置值,则返回 0。

func (Style) GetMarginRight

func (s Style) GetMarginRight() int

GetMarginRight 返回样式的右边距。如果未设置值,则返回 0。

func (Style) GetMarginTop

func (s Style) GetMarginTop() int

GetMarginTop 返回样式的上边距。如果未设置值,则返回 0。

func (Style) GetMaxHeight

func (s Style) GetMaxHeight() int

GetMaxHeight 返回样式的最大高度设置。如果未设置值,则返回 0。

func (Style) GetMaxWidth

func (s Style) GetMaxWidth() int

GetMaxWidth 返回样式的最大宽度设置。如果未设置值,则返回 0。

func (Style) GetPadding

func (s Style) GetPadding() (top, right, bottom, left int)

GetPadding 返回样式的上、右、下、左内边距值,按此顺序。对于未设置的值,返回 0。

func (Style) GetPaddingBottom

func (s Style) GetPaddingBottom() int

GetPaddingBottom 返回样式的下内边距。如果未设置值,则返回 0。

func (Style) GetPaddingLeft

func (s Style) GetPaddingLeft() int

GetPaddingLeft 返回样式的左内边距。如果未设置值,则返回 0。

func (Style) GetPaddingRight

func (s Style) GetPaddingRight() int

GetPaddingRight 返回样式的右内边距。如果未设置值,则返回 0。

func (Style) GetPaddingTop

func (s Style) GetPaddingTop() int

GetPaddingTop 返回样式的上内边距。如果未设置值,则返回 0。

func (Style) GetReverse

func (s Style) GetReverse() bool

GetReverse 返回样式的反相值。如果未设置值,则返回 false。

func (Style) GetStrikethrough

func (s Style) GetStrikethrough() bool

GetStrikethrough 返回样式的删除线值。如果未设置值,则返回 false。

func (Style) GetStrikethroughSpaces

func (s Style) GetStrikethroughSpaces() bool

GetStrikethroughSpaces 返回样式是否设置为删除线空格。如果未设置值,则返回 false。

func (Style) GetTabWidth

func (s Style) GetTabWidth() int

GetTabWidth 返回样式的制表符宽度设置。如果未设置值,则返回 4,这是隐式默认值。

func (Style) GetTransform

func (s Style) GetTransform() func(string) string

GetTransform 返回样式上设置的转换器。如果未设置转换器,则返回 nil。

func (Style) GetUnderline

func (s Style) GetUnderline() bool

GetUnderline 返回样式的下划线值。如果未设置值,则返回 false。

func (Style) GetUnderlineSpaces

func (s Style) GetUnderlineSpaces() bool

GetUnderlineSpaces 返回样式是否设置为下划线空格。如果未设置值,则返回 false。

func (Style) GetVerticalBorderSize

func (s Style) GetVerticalBorderSize() int

GetVerticalBorderSize 返回垂直边框的宽度。如果边框包含宽度不同的符文,则返回最宽的符文。如果垂直边缘不存在边框,则返回 0。

func (Style) GetVerticalFrameSize

func (s Style) GetVerticalFrameSize() int

GetVerticalFrameSize 返回样式的垂直外边距、内边距和边框宽度的总和。

临时:此方法可能会重命名。

func (Style) GetVerticalMargins

func (s Style) GetVerticalMargins() int

GetVerticalMargins 返回样式的上下外边距。未设置的值被视为 0。

func (Style) GetVerticalPadding

func (s Style) GetVerticalPadding() int

GetVerticalPadding 返回样式的上下内边距。未设置的值被视为 0。

func (Style) GetWidth

func (s Style) GetWidth() int

GetWidth 返回样式的宽度设置。如果未设置宽度,则返回 0。

func (Style) Height

func (s Style) Height(i int) Style

Height 设置应用边距前块的高度。如果应用内边距后(或不应用)文本块的高度小于此值,块将被设置为此高度。

func (Style) Inherit

func (s Style) Inherit(i Style) Style

Inherit 通过从参数样式中复制每个显式设置的值到本样式(如果本样式尚未显式设置该值),来将参数中的样式覆盖到本样式上。现有设置的值保持不变,不会被覆盖。

边距、内边距和底层字符串值不会被继承。

func (Style) Inline

func (s Style) Inline(v bool) Style

Inline 使渲染输出为一行,并禁用边距、内边距和边框的渲染。当您需要样式仅应用于字体渲染,而不希望它更改任何物理尺寸时,这很有用。它与 Style.MaxWidth 配合使用效果良好。

因为这旨在在渲染时使用,所以此方法不会修改样式,而是返回一个副本。

示例:

var userInput string = "..."
var userStyle = text.Style{ /* ... */ }
fmt.Println(userStyle.Inline(true).Render(userInput))

func (Style) Italic

func (s Style) Italic(v bool) Style

Italic 设置斜体格式规则。在某些终端模拟器中,如果没有可用的斜体字体变体,这将使用"反转"颜色渲染。

func (Style) Margin

func (s Style) Margin(i ...int) Style

Margin 是一次性设置所有边边距的简写方法。

使用一个参数时,值应用于所有边。

使用两个参数时,值按顺序应用于垂直和水平边。

使用三个参数时,值按顺序应用于顶部边、水平边和底部边。

使用四个参数时,值按顺时针顺序应用,从顶部边开始,然后是右边,接着是底部,最后是左边。

使用超过四个参数时,不会添加边距。

func (Style) MarginBackground

func (s Style) MarginBackground(c TerminalColor) Style

MarginBackground 设置边距的背景颜色。请注意,当从具有背景颜色的样式继承时,这也会被设置。在这种情况下,该样式上的背景颜色将设置此样式上的边距颜色。

func (Style) MarginBottom

func (s Style) MarginBottom(i int) Style

MarginBottom 设置下边距的值。

func (Style) MarginLeft

func (s Style) MarginLeft(i int) Style

MarginLeft 设置左边距的值。

func (Style) MarginRight

func (s Style) MarginRight(i int) Style

MarginRight 设置右边距的值。

func (Style) MarginTop

func (s Style) MarginTop(i int) Style

MarginTop 设置上边距的值。

func (Style) MaxHeight

func (s Style) MaxHeight(n int) Style

MaxHeight 对给定样式应用最大高度。这在渲染时强制特定高度时很有用,特别是对于任意字符串和样式。

因为这旨在在渲染时使用,所以此方法不会修改样式,而是返回一个副本。

func (Style) MaxWidth

func (s Style) MaxWidth(n int) Style

MaxWidth 对给定样式应用最大宽度。这在渲染时强制特定宽度时很有用,特别是对于任意字符串和样式。

因为这旨在在渲染时使用,所以此方法不会修改样式,而是返回一个副本。

示例:

var userInput string = "..."
var userStyle = text.Style{ /* ... */ }
fmt.Println(userStyle.MaxWidth(16).Render(userInput))

func (Style) Padding

func (s Style) Padding(i ...int) Style

Padding 是一次性设置所有边内边距的简写方法。

使用一个参数时,值应用于所有边。

使用两个参数时,值按顺序应用于垂直和水平边。

使用三个参数时,值按顺序应用于顶部边、水平边和底部边。

使用四个参数时,值按顺时针顺序应用,从顶部边开始,然后是右边,接着是底部,最后是左边。

使用超过四个参数时,不会添加内边距。

func (Style) PaddingBottom

func (s Style) PaddingBottom(i int) Style

PaddingBottom 在块的底部添加内边距。

func (Style) PaddingLeft

func (s Style) PaddingLeft(i int) Style

PaddingLeft 在左侧添加内边距。

func (Style) PaddingRight

func (s Style) PaddingRight(i int) Style

PaddingRight 在右侧添加内边距。

func (Style) PaddingTop

func (s Style) PaddingTop(i int) Style

PaddingTop 在块的顶部添加内边距。

func (Style) Render

func (s Style) Render(strs ...string) string

Render 将定义的样式格式应用于给定字符串。

func (Style) Renderer

func (s Style) Renderer(r *Renderer) Style

Renderer 为样式设置渲染器。这在为不同上下文中使用的样式更改渲染器时很有用。

func (Style) Reverse

func (s Style) Reverse(v bool) Style

Reverse 设置反转前景和背景颜色的规则。

func (Style) SetString

func (s Style) SetString(strs ...string) Style

SetString 设置此样式的底层字符串值。底层字符串设置后要渲染一次,请使用 Style.String。此方法在需要 stringer 实现的情况下很方便,例如在使用 fmt.Sprintf 时。您也可以简单地定义一个样式并使用 Style.Render 直接渲染字符串。

func (Style) Strikethrough

func (s Style) Strikethrough(v bool) Style

Strikethrough 设置删除线规则。默认情况下,删除线不会绘制在边距和内边距等空白处。要更改此行为,请设置 StrikethroughSpaces。

func (Style) StrikethroughSpaces

func (s Style) StrikethroughSpaces(v bool) Style

StrikethroughSpaces 确定是否对单词之间的空格应用删除线。默认情况下,这是 true。也可以在不删除线文本本身的情况下对空格应用删除线。

func (Style) String

func (s Style) String() string

String 为 Style 实现 stringer 接口,基于此样式中的规则返回渲染结果。使用此方法之前,必须使用 Style.SetString 设置底层字符串值。

func (Style) TabWidth

func (s Style) TabWidth(n int) Style

TabWidth 设置制表符 (/t) 应渲染为的空格数。当设置为 0 时,制表符将被移除。要完全禁用制表符替换为空格,请将此设置为 NoTabConversion

默认情况下,制表符将被替换为 4 个空格。

func (Style) Transform

func (s Style) Transform(fn func(string) string) Style

Transform 在渲染时对字符串应用给定函数,允许对正在渲染的字符串进行操作。

示例:

s := NewStyle().Transform(strings.ToUpper)
fmt.Println(s.Render("raow!") // "RAOW!"

func (Style) Underline

func (s Style) Underline(v bool) Style

Underline 设置下划线规则。默认情况下,下划线不会绘制在边距和内边距等空白处。要更改此行为,请设置 UnderlineSpaces。

func (Style) UnderlineSpaces

func (s Style) UnderlineSpaces(v bool) Style

UnderlineSpaces 确定是否为单词之间的空格添加下划线。默认情况下,这是 true。也可以在不下划线文本本身的情况下为空格添加下划线。

func (Style) UnsetAlign

func (s Style) UnsetAlign() Style

UnsetAlign 移除水平和垂直文本对齐样式规则(如果已设置)。

func (Style) UnsetAlignHorizontal

func (s Style) UnsetAlignHorizontal() Style

UnsetAlignHorizontal 移除水平文本对齐样式规则(如果已设置)。

func (Style) UnsetAlignVertical

func (s Style) UnsetAlignVertical() Style

UnsetAlignVertical 移除垂直文本对齐样式规则(如果已设置)。

func (Style) UnsetBackground

func (s Style) UnsetBackground() Style

UnsetBackground 移除背景色样式规则(如果已设置)。

func (s Style) UnsetBlink() Style

UnsetBlink 移除闪烁样式规则(如果已设置)。

func (Style) UnsetBold

func (s Style) UnsetBold() Style

UnsetBold 移除粗体样式规则(如果已设置)。

func (Style) UnsetBorderBackground

func (s Style) UnsetBorderBackground() Style

UnsetBorderBackground 移除所有边框背景色样式(如果已设置)。

func (Style) UnsetBorderBottom

func (s Style) UnsetBorderBottom() Style

UnsetBorderBottom 移除外边框样式规则(如果已设置)。

func (Style) UnsetBorderBottomBackground

func (s Style) UnsetBorderBottomBackground() Style

UnsetBorderBottomBackground 移除外边框背景色规则(如果已设置)。

func (Style) UnsetBorderBottomForeground

func (s Style) UnsetBorderBottomForeground() Style

UnsetBorderBottomForeground 移除外边框前景色规则(如果已设置)。

func (Style) UnsetBorderForeground

func (s Style) UnsetBorderForeground() Style

UnsetBorderForeground 移除所有边框前景色样式(如果已设置)。

func (Style) UnsetBorderLeft

func (s Style) UnsetBorderLeft() Style

UnsetBorderLeft 移除外边框样式规则(如果已设置)。

func (Style) UnsetBorderLeftBackground

func (s Style) UnsetBorderLeftBackground() Style

UnsetBorderLeftBackground 移除外边框颜色规则(如果已设置)。

func (Style) UnsetBorderLeftForeground

func (s Style) UnsetBorderLeftForeground() Style

UnsetBorderLeftForeground 移除外边框前景色规则(如果已设置)。

func (Style) UnsetBorderRight

func (s Style) UnsetBorderRight() Style

UnsetBorderRight 移除右边框样式规则(如果已设置)。

func (Style) UnsetBorderRightBackground

func (s Style) UnsetBorderRightBackground() Style

UnsetBorderRightBackground 移除右边框背景色规则(如果已设置)。

func (Style) UnsetBorderRightForeground

func (s Style) UnsetBorderRightForeground() Style

UnsetBorderRightForeground 移除右边框前景色规则(如果已设置)。

func (Style) UnsetBorderStyle

func (s Style) UnsetBorderStyle() Style

UnsetBorderStyle 移除边框样式规则(如果已设置)。

func (Style) UnsetBorderTop

func (s Style) UnsetBorderTop() Style

UnsetBorderTop 移除顶部边框样式规则(如果已设置)。

func (Style) UnsetBorderTopBackground

func (s Style) UnsetBorderTopBackground() Style

UnsetBorderTopBackground 移除顶部边框背景色规则(如果已设置)。

func (Style) UnsetBorderTopBackgroundColor

func (s Style) UnsetBorderTopBackgroundColor() Style

UnsetBorderTopBackgroundColor 移除顶部边框背景色规则(如果已设置)。

已弃用:此函数仅调用 Style.UnsetBorderTopBackground。

func (Style) UnsetBorderTopForeground

func (s Style) UnsetBorderTopForeground() Style

UnsetBorderTopForeground 移除顶部边框前景色规则(如果已设置)。

func (Style) UnsetColorWhitespace

func (s Style) UnsetColorWhitespace() Style

UnsetColorWhitespace 移除内边距着色规则(如果已设置)。

func (Style) UnsetFaint

func (s Style) UnsetFaint() Style

UnsetFaint 移除淡色样式规则(如果已设置)。

func (Style) UnsetForeground

func (s Style) UnsetForeground() Style

UnsetForeground 移除前景色样式规则(如果已设置)。

func (Style) UnsetHeight

func (s Style) UnsetHeight() Style

UnsetHeight 移除高度样式规则(如果已设置)。

func (Style) UnsetInline

func (s Style) UnsetInline() Style

UnsetInline 移除内联样式规则(如果已设置)。

func (Style) UnsetItalic

func (s Style) UnsetItalic() Style

UnsetItalic 移除斜体样式规则(如果已设置)。

func (Style) UnsetMarginBackground

func (s Style) UnsetMarginBackground() Style

UnsetMarginBackground 移除边距的背景颜色。请注意,边距的背景颜色可以在继承期间从另一个样式的背景颜色设置。

func (Style) UnsetMarginBottom

func (s Style) UnsetMarginBottom() Style

UnsetMarginBottom 移除底部外边距样式规则(如果已设置)。

func (Style) UnsetMarginLeft

func (s Style) UnsetMarginLeft() Style

UnsetMarginLeft 移除左边外边距样式规则(如果已设置)。

func (Style) UnsetMarginRight

func (s Style) UnsetMarginRight() Style

UnsetMarginRight 移除右边外边距样式规则(如果已设置)。

func (Style) UnsetMarginTop

func (s Style) UnsetMarginTop() Style

UnsetMarginTop 移除顶部外边距样式规则(如果已设置)。

func (Style) UnsetMargins

func (s Style) UnsetMargins() Style

UnsetMargins 移除所有外边距样式规则。

func (Style) UnsetMaxHeight

func (s Style) UnsetMaxHeight() Style

UnsetMaxHeight 移除最大高度样式规则(如果已设置)。

func (Style) UnsetMaxWidth

func (s Style) UnsetMaxWidth() Style

UnsetMaxWidth 移除最大宽度样式规则(如果已设置)。

func (Style) UnsetPadding

func (s Style) UnsetPadding() Style

UnsetPadding 移除所有内边距样式规则。

func (Style) UnsetPaddingBottom

func (s Style) UnsetPaddingBottom() Style

UnsetPaddingBottom 移除底部内边距样式规则(如果已设置)。

func (Style) UnsetPaddingLeft

func (s Style) UnsetPaddingLeft() Style

UnsetPaddingLeft 移除左边内边距样式规则(如果已设置)。

func (Style) UnsetPaddingRight

func (s Style) UnsetPaddingRight() Style

UnsetPaddingRight 移除右边内边距样式规则(如果已设置)。

func (Style) UnsetPaddingTop

func (s Style) UnsetPaddingTop() Style

UnsetPaddingTop 移除顶部内边距样式规则(如果已设置)。

func (Style) UnsetReverse

func (s Style) UnsetReverse() Style

UnsetReverse 移除反转样式规则(如果已设置)。

func (Style) UnsetStrikethrough

func (s Style) UnsetStrikethrough() Style

UnsetStrikethrough 移除删除线样式规则(如果已设置)。

func (Style) UnsetStrikethroughSpaces

func (s Style) UnsetStrikethroughSpaces() Style

UnsetStrikethroughSpaces 移除由 StrikethroughSpaces 设置的值。

func (Style) UnsetString

func (s Style) UnsetString() Style

UnsetString 将底层字符串值设置为空字符串。

func (Style) UnsetTabWidth

func (s Style) UnsetTabWidth() Style

UnsetTabWidth 移除制表符宽度样式规则(如果已设置)。

func (Style) UnsetTransform

func (s Style) UnsetTransform() Style

UnsetTransform 移除由 Transform 设置的值。

func (Style) UnsetUnderline

func (s Style) UnsetUnderline() Style

UnsetUnderline 移除下划线样式规则(如果已设置)。

func (Style) UnsetUnderlineSpaces

func (s Style) UnsetUnderlineSpaces() Style

UnsetUnderlineSpaces 移除由 UnderlineSpaces 设置的值。

func (Style) UnsetWidth

func (s Style) UnsetWidth() Style

UnsetWidth 移除宽度样式规则(如果已设置)。

func (Style) Value

func (s Style) Value() string

Value 返回此样式的原始、未格式化的底层字符串值。

func (Style) Width

func (s Style) Width(i int) Style

Width 设置应用边距前块的宽度。如果设置了宽度,它还会决定文本的换行位置。

type TerminalColor

type TerminalColor interface {
	RGBA() (r, g, b, a uint32)
	// contains filtered or unexported methods
}

TerminalColor 是一种旨在在终端中渲染的颜色。

type WhitespaceOption

type WhitespaceOption func(*whitespace)

WhitespaceOption 设置空白字符渲染的样式规则

func WithWhitespaceBackground

func WithWhitespaceBackground(c TerminalColor) WhitespaceOption

WithWhitespaceBackground 设置空白字符的背景色

func WithWhitespaceChars

func WithWhitespaceChars(s string) WhitespaceOption

WithWhitespaceChars 设置要在空白字符中渲染的字符

func WithWhitespaceForeground

func WithWhitespaceForeground(c TerminalColor) WhitespaceOption

WithWhitespaceForeground 设置空白字符中字符的前景色

Directories

Path Synopsis
Package list 允许您构建列表,简单或复杂程度取决于您的需要。
Package list 允许您构建列表,简单或复杂程度取决于您的需要。
Package table 提供终端的样式化表格渲染器。
Package table 提供终端的样式化表格渲染器。
Package tree 允许你构建树,根据需要可以简单或复杂。
Package tree 允许你构建树,根据需要可以简单或复杂。

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL