refactor to modules; update player based on new prototype
This commit is contained in:
80
src/palette.rs
Normal file
80
src/palette.rs
Normal file
@@ -0,0 +1,80 @@
|
||||
use serde_derive::{Serialize, Deserialize};
|
||||
|
||||
use crate::colour::Colour;
|
||||
use std::fs;
|
||||
|
||||
#[derive(Debug, Eq, PartialEq, Serialize, Deserialize)]
|
||||
pub struct Palette {
|
||||
pub name: String,
|
||||
pub colours: Vec<Colour>,
|
||||
}
|
||||
|
||||
impl Palette {
|
||||
pub fn from(name: &str, toml: &str) -> Self {
|
||||
let intermediate: IntermediatePalette = toml::from_str(toml).unwrap();
|
||||
|
||||
println!("palette name: {}", name);
|
||||
|
||||
for colour in &intermediate.colours {
|
||||
println!("palette colour: {}{}{}", colour[0], colour[1], colour[2]);
|
||||
}
|
||||
|
||||
Palette {
|
||||
name: name.to_string(),
|
||||
colours: intermediate.colours.iter().map(|vec| {
|
||||
Colour::from(vec.clone())
|
||||
}).collect(),
|
||||
}
|
||||
}
|
||||
|
||||
pub fn from_file(path: String) -> Self {
|
||||
// todo get name without extension
|
||||
let name = "blah";
|
||||
let toml = fs::read_to_string(path).unwrap();
|
||||
Self::from(name, &toml)
|
||||
}
|
||||
}
|
||||
|
||||
/// for toml purposes
|
||||
#[derive(Serialize, Deserialize)]
|
||||
pub struct IntermediatePalette {
|
||||
pub colours: Vec<Vec<u8>>,
|
||||
}
|
||||
|
||||
/// for toml purposes
|
||||
#[derive(Serialize, Deserialize)]
|
||||
struct IntermediatePalettes {
|
||||
/// singular so each palette section is named "palette" instead of "palettes" in toml
|
||||
palette: Vec<IntermediatePalette>,
|
||||
}
|
||||
|
||||
impl IntermediatePalettes {
|
||||
pub fn from_dir() -> Self {
|
||||
Self {
|
||||
palette: vec![]
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(test)]
|
||||
mod test {
|
||||
use crate::Palette;
|
||||
|
||||
#[test]
|
||||
fn test_palette_from_toml() {
|
||||
let output = Palette::from(
|
||||
"blueprint",
|
||||
include_str!("test-resources/basic/palettes/blueprint.toml")
|
||||
);
|
||||
let expected = crate::mock::palette::default();
|
||||
assert_eq!(output, expected);
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn test_palette_to_toml() {
|
||||
let intermediate = crate::mock::palette::intermediate();
|
||||
let output = toml::to_string(&intermediate).unwrap();
|
||||
let expected = include_str!("test-resources/basic/palettes/blueprint.toml");
|
||||
assert_eq!(&output, expected);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user