Skip to main content

css_ast/units/
line_width.rs

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