1use ishou_tokens::TokenSet;
5
6pub fn render(t: &TokenSet) -> String {
7 let mut out = String::from(
8 "// ishou — pleme-io design tokens (generated)\n\
9 // Use ishou-tokens::TokenSet for runtime; this file is for\n\
10 // consumers that want const-propagated values.\n\n\
11 #[allow(dead_code)]\n\
12 pub mod color {\n #[derive(Clone, Copy, Debug)]\n pub struct Rgb(pub u8, pub u8, pub u8);\n\n",
13 );
14 for (k, v) in t.color.entries() {
15 out.push_str(&format!(
16 " pub const {}: Rgb = Rgb({}, {}, {});\n",
17 k.to_uppercase(),
18 v.r,
19 v.g,
20 v.b
21 ));
22 }
23 out.push_str("}\n\npub mod spacing {\n");
24 for (k, v) in t.spacing.pairs() {
25 out.push_str(&format!(" pub const SPACE_{}: u16 = {v};\n", k));
26 }
27 out.push_str("}\n\npub mod radius {\n");
28 for (k, v) in t.radius.pairs() {
29 out.push_str(&format!(" pub const RADIUS_{}: u16 = {v};\n", k.to_uppercase()));
30 }
31 out.push_str("}\n");
32 out
33}