batuta/oracle/svg/renderers/
mod.rs1pub mod shape_heavy;
6pub mod text_heavy;
7
8pub use shape_heavy::ShapeHeavyRenderer;
9pub use text_heavy::TextHeavyRenderer;
10
11#[derive(Debug, Clone, Copy, PartialEq, Eq, Default)]
13pub enum RenderMode {
14 #[default]
16 ShapeHeavy,
17 TextHeavy,
19}
20
21impl std::fmt::Display for RenderMode {
22 fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
23 match self {
24 Self::ShapeHeavy => write!(f, "shape-heavy"),
25 Self::TextHeavy => write!(f, "text-heavy"),
26 }
27 }
28}
29
30impl std::str::FromStr for RenderMode {
31 type Err = String;
32
33 fn from_str(s: &str) -> Result<Self, Self::Err> {
34 match s.to_lowercase().as_str() {
35 "shape-heavy" | "shape_heavy" | "shapes" => Ok(Self::ShapeHeavy),
36 "text-heavy" | "text_heavy" | "text" => Ok(Self::TextHeavy),
37 _ => Err(format!("Unknown render mode: {}", s)),
38 }
39 }
40}
41
42#[cfg(test)]
43mod tests {
44 use super::*;
45
46 #[test]
47 fn test_render_mode_display() {
48 assert_eq!(format!("{}", RenderMode::ShapeHeavy), "shape-heavy");
49 assert_eq!(format!("{}", RenderMode::TextHeavy), "text-heavy");
50 }
51
52 #[test]
53 fn test_render_mode_from_str() {
54 assert_eq!(
55 "shape-heavy".parse::<RenderMode>().expect("parse failed"),
56 RenderMode::ShapeHeavy
57 );
58 assert_eq!(
59 "text-heavy".parse::<RenderMode>().expect("parse failed"),
60 RenderMode::TextHeavy
61 );
62 assert!("invalid".parse::<RenderMode>().is_err());
63 }
64}