sunbeam_ir/
class.rs

1pub use self::modifiers::*;
2
3mod modifiers;
4
5/// A CSS class and modifiers.
6#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash)]
7pub struct RetrievedClassDefinition {
8    /// hover:bg-color-brand-red
9    pub class_name: String,
10    /// .hover\:bg-color-brand-red { ... }
11    pub css_class_definition: String,
12    /// See [`Modifiers`]
13    pub modifiers: Modifiers,
14}
15
16impl RetrievedClassDefinition {
17    /// Create a new Modifiers
18    pub fn new(class_name: String, css_class_definition: String, modifiers: Modifiers) -> Self {
19        RetrievedClassDefinition {
20            class_name,
21            css_class_definition,
22            modifiers,
23        }
24    }
25}
26
27/// Pixels, percentages, etc
28#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)]
29pub enum PixelsOrPercent {
30    /// 123px
31    Pixels(u32),
32    /// 56%
33    Percentage(Percent),
34}
35
36/// Percentage, etc
37#[derive(Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)]
38pub struct Percent(u8);
39
40impl Percent {
41    pub(crate) fn new(percentage: u32) -> Option<Percent> {
42        if percentage <= 100 {
43            Some(Percent(percentage as u8))
44        } else {
45            None
46        }
47    }
48
49    pub(crate) fn get(&self) -> u8 {
50        self.0
51    }
52}