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