css_ast/units/
line_width.rs

1use super::prelude::*;
2
3use super::Length;
4
5#[derive(Parse, Peek, IntoCursor, ToCursors, Debug, Copy, Clone, PartialEq, Eq, PartialOrd, Ord, Hash)]
6#[cfg_attr(feature = "serde", derive(serde::Serialize), serde())]
7#[cfg_attr(feature = "visitable", derive(csskit_derives::Visitable), visit)]
8pub enum LineWidth {
9	#[cfg_attr(feature = "visitable", visit(skip))]
10	#[atom(CssAtomSet::Thin)]
11	Thin(T![Ident]),
12	#[cfg_attr(feature = "visitable", visit(skip))]
13	#[atom(CssAtomSet::Medium)]
14	Medium(T![Ident]),
15	#[cfg_attr(feature = "visitable", visit(skip))]
16	#[atom(CssAtomSet::Thick)]
17	Thick(T![Ident]),
18	Length(Length),
19}
20
21// impl From<LineWidth> for Length {
22// 	fn from(value: LineWidth) -> Self {
23// 		match value {
24// 			LineWidth::Thin => Length::Px(1.0.into()),
25// 			LineWidth::Medium => Length::Px(3.0.into()),
26// 			LineWidth::Thick => Length::Px(3.0.into()),
27// 			LineWidth::Length(length) => length,
28// 		}
29// 	}
30// }
31
32#[cfg(test)]
33mod tests {
34	use super::*;
35	use crate::CssAtomSet;
36	use css_parse::assert_parse;
37
38	#[test]
39	fn size_test() {
40		assert_eq!(std::mem::size_of::<LineWidth>(), 16);
41	}
42
43	#[test]
44	fn test_writes() {
45		assert_parse!(CssAtomSet::ATOMS, LineWidth, "1px");
46		assert_parse!(CssAtomSet::ATOMS, LineWidth, "medium");
47	}
48}