tailwind_css_fixes/modules/flexbox/grid/
mod.rs1use super::*;
2
3pub(crate) mod grid_auto;
4pub(crate) mod grid_cols;
5pub(crate) mod grid_flow;
6pub(crate) mod grid_rows;
7
8#[doc=include_str!("readme.md")]
9#[derive(Debug, Clone, Copy)]
10pub struct TailwindGrid {}
11
12impl TailwindGrid {
13 pub fn adapt(str: &[&str], arbitrary: &TailwindArbitrary) -> Result<Box<dyn TailwindInstance>> {
14 let out = match str {
15 ["rows", rest @ ..] => TailwindGridRows::parse(rest, arbitrary)?.boxed(),
17 ["cols", rest @ ..] => TailwindGridColumns::parse(rest, arbitrary)?.boxed(),
19 ["flow", rest @ ..] => TailwindGridFlow::parse(rest, arbitrary)?.boxed(),
21 _ => return syntax_error!("Unknown list instructions: {}", str.join("-")),
22 };
23 Ok(out)
24 }
25}
26
27#[derive(Debug, Clone)]
28enum GridTemplate {
29 None,
30 Unit(i32),
31 Arbitrary(TailwindArbitrary),
32}
33
34impl Display for GridTemplate {
35 fn fmt(&self, f: &mut Formatter<'_>) -> std::fmt::Result {
36 match self {
37 GridTemplate::None => write!(f, "none"),
38 GridTemplate::Unit(s) => write!(f, "{}", s),
39 GridTemplate::Arbitrary(s) => s.write(f),
40 }
41 }
42}
43impl GridTemplate {
44 pub fn parse(pattern: &[&str], arbitrary: &TailwindArbitrary) -> Result<Self> {
45 let kind = match pattern {
46 ["none"] => Self::None,
47 [n] => Self::Unit(TailwindArbitrary::from(*n).as_integer()?),
48 _ => Self::parse_arbitrary(arbitrary)?,
49 };
50 Ok(kind)
51 }
52 pub fn parse_arbitrary(arbitrary: &TailwindArbitrary) -> Result<Self> {
53 Ok(Self::Arbitrary(TailwindArbitrary::new(arbitrary)?))
54 }
55 pub fn get_properties(&self) -> String {
56 match self {
57 GridTemplate::None => "none".to_string(),
58 GridTemplate::Unit(s) => format!("repeat({},minmax(0,1fr))", s),
59 GridTemplate::Arbitrary(s) => s.get_properties(),
60 }
61 }
62}