2 个版本
0.1.1 | 2023 年 5 月 27 日 |
---|---|
0.1.0 | 2023 年 5 月 15 日 |
#2933 在 命令行工具
每月 22 次下载
60KB
1.5K SLoC
Neon-style
Rust 应用程序中漂亮的终端布局的样式定义。考虑到 TUI 构建。
如前端上渲染 CSS 一样渲染文本。以下是一个例子。
use neon_style::style::Style;
use neon_style::Hue;
fn main() {
let strs = "Lorem Ipsum is simply dummy text of the printing and typesetting industry.\\nLorem Ipsum has been the industry's"
.to_string();
let style = Style::new_style()
.bold(true)
.underline(true)
.underline_spaces(false)
.padding(&[1, 2])
.background(Hue::from("#874BFD"))
.margin(&[4])
.text_color(Hue::from("#FF0000"));
println!("{}", style.render(strs));
}
内联格式化
在同一行中完成的字符串格式化。如粗体、斜体、删除线等都是内联样式的部分。
let inline_style = Style::new_style()
.bold(true)
.italic(true)
.faint(true)
.blink(true)
.strikethrough(true)
.underline(true)
.reverse(true);let padding_style = Style::new_style()
.padding_top(3)
.padding_bottom(3)
.padding_left(5)
.padding_right(5);
块级格式化
包括填充和边距等内容。
// Padding
let padding_style = Style::new_style()
.padding_top(3)
.padding_bottom(3)
.padding_left(5)
.padding_right(5);
// margin
let margin_style = Style::new_style()
.margin_top(3)
.margin_bottom(3)
.margin_left(5)
.margin_right(5);
块级格式化的缩写形式。
// Same padding on all sides.
let padding_style = Style::new_style().padding(&[3]);
// Padding for top and bottom
let padding_style = Style::new_style().padding(&[3, 5]);
// Padding on top, sides and bottom. Padidng is top=3, left & right = 4, bottom=5
let padding_style = Style::new_style().padding(&[3, 4, 5]);
// Padding for all sides in the order -> Top, right, bottom, left
let padding_style = Style::new_style().padding(&[3, 3, 4, 4]);
// Same margin on all sides. Margin=5
let margin_style = Style::new_style().margin(&[5]);
// Setting top and bottom margin. Top=3 & bottom=5.
let margin_style = Style::new_style().margin(&[3, 5]);
//Setting top, sides and bottom. Top=3, right & left=6, bottom=5.
let margin_style = Style::new_style().margin(&[3, 6, 5]);
// Margin for all sides in the order -> Top, right, bottom, left.
let margin_style = Style::new_style().margin(&[3, 3, 4, 4]);
文本对齐
use neon_style::{Position};
let margin_style = Style::new_style()
.align(&[Position::Center]) // Align horizontally center.
.align(&[Position::Left]) // Align horizontally left.
.align(&[Position::Right]); // Align horizontally right. This is the final selection.
// In order to set the horizontal and vertical alignment together.
// Horizontally center and and vertically left aligned.
let margin_style = Style::new_style().align(&[Position::Center, Position::Left]);
文本宽度和高度
用户可以使用以下格式设置最小高度和宽度。
use neon_style::Hue
let s = Style::new_style()
.width(40) // Setting the width
.height(5) // Setting the height
.foreground(Hue::from("#F25D94")) // Setting color using true color.
.set_string("Hello World!");
println!("{}", s.to_string());
要设置最大高度和宽度,用户可以使用以下设置。注意:在设置最大高度和宽度时,如果字符串超出了指定的宽度和高度,可能会被截断。
use neon_style::Hue
let s = Style::new_style()
.max_width(40) // Setting the max width
.max_height(5) // Setting the max height
.foreground(Hue::from("#F25D94")) // Setting color using true color.
.set_string("Hello World!");
println!("{}", s.to_string());
设置边框
依赖项
~9MB
~75K SLoC