3个不稳定版本
0.3.0 | 2024年5月23日 |
---|---|
0.2.2 | 2024年5月12日 |
0.2.1 | 2024年5月12日 |
#117 在 模板引擎
123 每月下载次数
36KB
602 代码行
base16cs
一个库,用于在规范化的CIE L*a*b*颜色空间值中定义一组基本颜色调色板,并从中推导其他颜色空间值。
此库还提供了调色板的序列化和反序列化工具,以及一个模板渲染器(默认为Liquid),用于将调色板和颜色变量注入模板进行渲染。
示例
定义调色板,推导值,并序列化
use base16cs::{Palette, BaseColor, DerivedPalette};
use base16cs::Serializable;
// Define a canonical palette
let palette = Palette::new(
"My Palette",
[
BaseColor::new("bg", 96, 0, 13),
BaseColor::new("fg", 31, -6, -6),
]);
// Derive with computed sRGB values
let derived_palette = DerivedPalette::from(&palette);
// Serialize (to YAML)
let serialized = derived_palette.serialize().unwrap();
assert_eq!(serialized, r#"name: My Palette
colors:
- base:
name: bg
lab:
l: 96.0
a: 0.0
b: 13.0
srgb:
red: 254
green: 243
blue: 218
srgb_hex: fef3da
- base:
name: fg
lab:
l: 31.0
a: -6.0
b: -6.0
srgb:
red: 56
green: 76
blue: 82
srgb_hex: 384c52
"#);
加载已序列化的基本调色板,推导,然后将其注入到Liquid模板中
use base16cs::{Base16Palette, Base16DerivedPalette};
use base16cs::LiquidTemplate;
let palette_yaml = std::fs::read_to_string("/path/to/palette.yaml").unwrap();
let palette = Base16Palette::from_yaml(&palette_yaml).unwrap();
let template = LiquidTemplate::parse_file("/path/to/template.liquid", vec![]).unwrap();
// `template.render()` will take care of deriving `palette` for us.
println!(template.render(&palette, false));
Liquid模板渲染带调色板注入
当Liquid模板被渲染时,它将被注入一个键为 "palette"
的Liquid对象。该Liquid对象的值是 DerivedPalette
的序列化。
假设 /path/to/template.liquid
包含
Palette name: {{ palette.name }}
Palette colors:
{%- for color in palette.colors -%}
{{ color.base.name }}: #{{ color.srgb_hex }}
{%- endfor -%}
使用上述调色板渲染此模板的结果将是
Palette name: My Palette
Palette colors:
bg: #fef3da
依赖项
~8–10MB
~192K SLoC