online Minecraft written book viewer

feat: text colors

not sold on this implementation. will probably change it drastically.

kokirigla.de 33e72147 a5817fb3

verified
+83
+4
Cargo.lock
··· 997 997 [[package]] 998 998 name = "nara_text" 999 999 version = "0.1.0" 1000 + dependencies = [ 1001 + "serde", 1002 + "serde_with", 1003 + ] 1000 1004 1001 1005 [[package]] 1002 1006 name = "nu-ansi-term"
+4
nara_text/Cargo.toml
··· 2 2 name = "nara_text" 3 3 version.workspace = true 4 4 edition.workspace = true 5 + 6 + [dependencies] 7 + serde.workspace = true 8 + serde_with.workspace = true
+75
nara_text/src/lib.rs
··· 1 + #[derive(Debug)] 2 + pub enum Component { 3 + String(String), 4 + Object(ComponentObject), 5 + Array(Vec<Component>), 6 + } 7 + 8 + #[derive(Debug, Clone, Copy)] 9 + pub enum NamedColor { 10 + Black, 11 + DarkBlue, 12 + DarkGreen, 13 + DarkAqua, 14 + DarkRed, 15 + DarkPurple, 16 + Gold, 17 + Gray, 18 + DarkGray, 19 + Blue, 20 + Green, 21 + Aqua, 22 + Red, 23 + LightPurple, 24 + Yellow, 25 + White, 26 + } 27 + 28 + impl NamedColor { 29 + fn as_hex_string(&self) -> String { 30 + match self { 31 + NamedColor::Black => "#000000".to_string(), 32 + NamedColor::DarkBlue => "#0000AA".to_string(), 33 + NamedColor::DarkGreen => "#00AA00".to_string(), 34 + NamedColor::DarkAqua => "#00AAAA".to_string(), 35 + NamedColor::DarkRed => "#AA0000".to_string(), 36 + NamedColor::DarkPurple => "#AA00AA".to_string(), 37 + NamedColor::Gold => "#FFAA00".to_string(), 38 + NamedColor::Gray => "#AAAAAA".to_string(), 39 + NamedColor::DarkGray => "#555555".to_string(), 40 + NamedColor::Blue => "#5555FF".to_string(), 41 + NamedColor::Green => "#55FF55".to_string(), 42 + NamedColor::Aqua => "#55FFFF".to_string(), 43 + NamedColor::Red => "#FF5555".to_string(), 44 + NamedColor::LightPurple => "#FF55FF".to_string(), 45 + NamedColor::Yellow => "#FFFF55".to_string(), 46 + NamedColor::White => "#FFFFFF".to_string(), 47 + } 48 + } 49 + } 50 + 51 + #[derive(Debug, Clone)] 52 + pub enum Color { 53 + Named(NamedColor), 54 + Hex(String), 55 + } 56 + 57 + impl Color { 58 + fn as_hex_string(&self) -> String { 59 + match self { 60 + Color::Named(named_color) => todo!(), 61 + Color::Hex(hex) => hex.clone(), 62 + } 63 + } 64 + 65 + #[derive(Debug)] 66 + pub struct ComponentObject { 67 + extra: Option<Vec<Component>>, 68 + color: Option<Color>, 69 + font: Option<String>, 70 + bold: Option<bool>, 71 + italic: Option<bool>, 72 + underlined: Option<bool>, 73 + strikethrough: Option<bool>, 74 + obfuscated: Option<bool>, 75 + }