Crates.io | tinted-builder |
lib.rs | tinted-builder |
version | 0.8.0 |
source | src |
created_at | 2024-05-15 13:13:53.806863 |
updated_at | 2024-10-05 21:52:31.019666 |
description | A Tinted Theming template builder which uses yaml color schemes to generate theme files. |
homepage | https://github.com/tinted-theming/tinted-builder-rust |
repository | https://github.com/tinted-theming/tinted-builder-rust |
max_upload_size | |
id | 1241057 |
size | 37,149 |
A Rust library to generate base16 and base24 templates using the
0.11.1
builder specification.
This library exposes a Scheme
and Template
struct which you can use
to generate your own themes using base16 and base24 templates and
0.11.1
compliant base16 and base24 scheme files.
Internally tinted-builder uses ribboncurls to render the templates.
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 scheme = Scheme::Base16(serde_yaml::from_str(&scheme_str).unwrap());
let template = Template::new(template, scheme);
let output = template
.render()
.unwrap();
assert_eq!(output, r#"/* Some CSS file with UwUnicorn theme */
.someCssSelector { background-color: #241b26 }
.someOtherCssSelector { background-color: #a3a079 }"#);
Scheme
) enum variant while providing the
deserialized data into into the variant:
Scheme::Base16(serde_yaml::from_str(&scheme_str).unwrap())
in this
caseScheme
variant in step 1 into the Template
struct:
Template::new(mustache_text, scheme)
. The template.render()
method takes the scheme, generates the variables defined in the
0.11.1
builder specification and returns a new string.Result<String, TintedBuilderError>
type:
let output = template.render().unwrap();
Contributions are welcome! Have a look at CONTRIBUTING.md for more information.
Ribboncurls is dual-licensed under the [Apache 2.0] and [MIT] licenses. For more information about the licenses of the projects used by Ribboncurls, have a look at LICENSES-THIRD-PARTY.md.