tailwind_css_fixes/modules/typography/font/
mod.rs1use 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 ["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"] => TailwindFontSize::parse(pattern, arbitrary)?.boxed(),
24 ["size", n] => {
25 let a = TailwindArbitrary::from(*n);
26 TailwindFontSize::parse(pattern, &a)?.boxed()
27 },
28 ["family", rest @ ..] => {
30 if rest.is_empty() && arbitrary.is_some() {
31 return Ok(TailwindFontFamily::from(arbitrary.get_properties()).boxed())
32 }
33 TailwindFontFamily::from(rest.join("-")).boxed()
34 },
35 [n] => {
38 let a = TailwindArbitrary::from(*n);
39 maybe_weight(&a)?
40 },
41 [_, _rest @ ..] => {
43 TailwindFontFamily::from(pattern.join("-")).boxed()
44 },
45 [] => {
49 maybe_weight(arbitrary)
50 .or_else(|_| Ok::<Box<dyn TailwindInstance>, TailwindError>(
51 TailwindFontFamily::from(arbitrary.get_properties()).boxed()
52 ))?
53 }
54 };
55 Ok(out)
56}
57
58fn maybe_weight(arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
59 let w = arbitrary.as_integer()?;
60 Ok(TailwindFontWeight::new(w).boxed())
61}