Skip to main content

whisker_css/keyword/
grid.rs

1//! Grid keyword enums.
2//!
3//! Reference:
4//! - <https://lynxjs.org/api/css/properties/grid-auto-flow>
5
6use core::fmt;
7
8use crate::to_css::ToCss;
9
10/// The `grid-auto-flow` keyword.
11#[derive(Copy, Clone, Debug, PartialEq, Eq, Hash)]
12pub enum GridAutoFlow {
13    /// `row` — flow auto-placed items along rows. Default.
14    Row,
15    /// `column` — flow auto-placed items along columns.
16    Column,
17    /// `row dense` — flow along rows, back-filling holes.
18    RowDense,
19    /// `column dense` — flow along columns, back-filling holes.
20    ColumnDense,
21}
22
23impl ToCss for GridAutoFlow {
24    fn to_css(&self, dest: &mut dyn fmt::Write) -> fmt::Result {
25        dest.write_str(match self {
26            GridAutoFlow::Row => "row",
27            GridAutoFlow::Column => "column",
28            GridAutoFlow::RowDense => "row dense",
29            GridAutoFlow::ColumnDense => "column dense",
30        })
31    }
32}
33
34#[cfg(test)]
35mod tests {
36    use super::*;
37
38    #[test]
39    fn all_variants() {
40        let cases = [
41            (GridAutoFlow::Row, "row"),
42            (GridAutoFlow::Column, "column"),
43            (GridAutoFlow::RowDense, "row dense"),
44            (GridAutoFlow::ColumnDense, "column dense"),
45        ];
46        for (k, expected) in cases {
47            assert_eq!(k.to_css_string(), expected);
48        }
49    }
50}