tailwind_css_fixes/modules/background/size/
mod.rs

1use super::*;
2
3#[doc=include_str!("readme.md")]
4#[derive(Debug, Clone)]
5pub struct TailwindBackgroundSize {
6    kind: StandardValue,
7}
8
9crate::macros::sealed::keyword_instance!(TailwindBackgroundSize => "background-size");
10
11impl Display for TailwindBackgroundSize {
12    fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
13        match &self.kind {
14            StandardValue::Keyword(s) => match s.as_str() {
15                s @ ("auto" | "cover" | "contain") => write!(f, "bg-{}", s),
16                _ => write!(f, "bg-size-{}", s),
17            },
18            StandardValue::Arbitrary(s) => s.write_class(f, "bg-size-"),
19        }
20    }
21}
22
23impl TailwindBackgroundSize {
24    /// <https://tailwindcss.com/docs/background-size>
25    pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary) -> Result<Self> {
26        let kind = StandardValue::parser("bg-size", &Self::check_valid)(pattern, arbitrary)?;
27        Ok(Self { kind })
28    }
29    /// <https://developer.mozilla.org/en-US/docs/Web/CSS/background-size#syntax>
30    pub fn check_valid(mode: &str) -> bool {
31        let set = BTreeSet::from_iter(vec!["auto", "contain", "cover", "inherit", "initial", "revert", "unset"]);
32        set.contains(mode)
33    }
34}