tailwind_css_fixes/modules/typography/font/
mod.rs

1use super::*;
2
3pub(crate) mod font_family;
4pub(crate) mod font_size;
5pub(crate) mod font_smoothing;
6pub(crate) mod font_style;
7pub(crate) mod font_variant_numeric;
8pub(crate) mod font_weight;
9
10pub fn font_adaptor(pattern: &[&str], arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
11    let out = match pattern {
12        // https://tailwindcss.com/docs/float
13        ["thin"] => TailwindFontWeight::THIN.boxed(),
14        ["extralight"] => TailwindFontWeight::EXTRA_LIGHT.boxed(),
15        ["light"] => TailwindFontWeight::LIGHT.boxed(),
16        ["normal"] => TailwindFontWeight::NORMAL.boxed(),
17        ["medium"] => TailwindFontWeight::MEDIUM.boxed(),
18        ["semibold"] => TailwindFontWeight::SEMI_BOLD.boxed(),
19        ["bold"] => TailwindFontWeight::BOLD.boxed(),
20        ["extrabold"] => TailwindFontWeight::EXTRA_BOLD.boxed(),
21        ["black"] => TailwindFontWeight::BLACK.boxed(),
22        ["size"] => maybe_size(arbitrary)?,
23        ["size", n] => {
24            let a = TailwindArbitrary::from(*n);
25            maybe_size(&a)?
26        },
27        [n] => {
28            let a = TailwindArbitrary::from(*n);
29            maybe_weight(&a).or_else(|_| maybe_size(&a))?
30        },
31        _ => TailwindFontFamily::from(pattern.join("-")).boxed(),
32    };
33    Ok(out)
34}
35
36fn maybe_weight(arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
37    let w = arbitrary.as_integer()?;
38    Ok(TailwindFontWeight::new(w).boxed())
39}
40
41fn maybe_size(arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
42    let w = arbitrary.as_integer()?;
43    Ok(TailwindFontWeight::new(w).boxed())
44}