3个不稳定版本

0.3.0 2024年5月23日
0.2.2 2024年5月12日
0.2.1 2024年5月12日

#117模板引擎

Download history 203/week @ 2024-05-08 38/week @ 2024-05-15 195/week @ 2024-05-22 19/week @ 2024-05-29 8/week @ 2024-06-05 10/week @ 2024-06-12

123 每月下载次数

MIT 许可证

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