#base-16 #color-scheme #base24 #tinted-theming #cli

tinted-builder

一个使用 yaml 颜色方案生成主题文件的彩色主题模板构建器

11 个版本 (4 个破坏性更新)

新版本 0.5.1 2024 年 8 月 23 日
0.5.0 2024 年 7 月 12 日
0.4.5 2024 年 7 月 12 日
0.4.4 2024 年 6 月 22 日
0.1.0 2024 年 5 月 15 日

#156模板引擎

Download history 251/week @ 2024-05-10 126/week @ 2024-05-17 39/week @ 2024-05-24 23/week @ 2024-05-31 155/week @ 2024-06-07 541/week @ 2024-06-14 225/week @ 2024-06-21 64/week @ 2024-06-28 49/week @ 2024-07-05 248/week @ 2024-07-12 16/week @ 2024-07-19 36/week @ 2024-07-26 6/week @ 2024-08-02 5/week @ 2024-08-09 35/week @ 2024-08-16

每月 84 次下载
用于 3 个 crate(2 个直接使用)

MIT/Apache 协议

21KB
380 行代码

tinted-builder

Matrix Chat Crates.io Tests

一个 Rust 库,使用 0.11.0builder 规范 生成 base16base24 模板。

此库公开了 SchemeTemplate 结构体,您可以使用它们通过 base16base24 模板以及符合 0.11.0 的 base16 和 base24 方案文件来生成您自己的主题。

内部 tinted-builder 使用 ribboncurls 渲染模板。

安装

cargo add tinted-builder

用法

use tinted_builder::{Scheme, Template};

let template = String::from(r#"/* Some CSS file with {{scheme-name}} theme */
.someCssSelector { background-color: #{{base00-hex}} }
.someOtherCssSelector { background-color: #{{base0F-hex}} }"#);
let scheme_str = r#"system: "base16"
name: "UwUnicorn"
author: "Fernando Marques (https://github.com/RakkiUwU) and Gabriel Fontes (https://github.com/Misterio77)"
variant: "dark"
palette:
  base00: "241b26"
  base01: "2f2a3f"
  base02: "46354a"
  base03: "6c3cb2"
  base04: "7e5f83"
  base05: "eed5d9"
  base06: "d9c2c6"
  base07: "e4ccd0"
  base08: "877bb6"
  base09: "de5b44"
  base0A: "a84a73"
  base0B: "c965bf"
  base0C: "9c5fce"
  base0D: "6a9eb5"
  base0E: "78a38f"
  base0F: "a3a079""#;
let template = Template::new(template).unwrap();
let scheme: Scheme = serde_yaml::from_str(&scheme_str).unwrap();
let output = template
  .render(&scheme)
  .unwrap();

  assert_eq!(output, r#"/* Some CSS file with UwUnicorn theme */
.someCssSelector { background-color: #241b26 }
.someOtherCssSelector { background-color: #a3a079 }"#);

Schema 结构体如下

use std::collections::HashMap;

pub struct Scheme {
    pub system: String,
    pub name: String,
    pub slug: String,
    pub author: String,
    pub description: Option<String>,
    pub variant: String,
    pub palette: HashMap<String, Color>,
}

pub struct Color {
    pub hex: (String, String, String),
    pub rgb: (u8, u8, u8),
    pub dec: (f32, f32, f32),
}

Template::new Template 结构体简单地设置通过 Template::new 提供的内容。

template.render(&scheme) 接收方案,生成 0.11.0builder 规范 中定义的变量,并返回一个新的字符串。

贡献

欢迎贡献!请查看 CONTRIBUTING.md 获取更多信息。

许可证

ribboncurls 采用 [Apache 2.0] 和 [MIT] 许可的双重授权。有关 ribboncurls 所用项目的许可信息,请参阅 THIRD_PARTY_LICENSES.md

依赖项

~6–18MB
~219K SLoC