#[derive(Debug, Clone, PartialEq, Eq)]
pub enum CssGroup {
CssStatic { value: &'static str },
CssDynamic { value: String },
CssMedia {
query: String,
rules: Vec<String>,
}
}
#[derive(Debug, Default, Clone, PartialEq, Eq)]
pub struct Css {
pub groups: Vec<CssGroup>,
}
impl Css {
pub fn str(value: &'static str) -> Self {
Self {
groups: vec![CssGroup::CssStatic { value }],
}
}
pub fn string(value: String) -> Self {
Self {
groups: vec![CssGroup::CssDynamic { value }],
}
}
#[must_use]
pub fn push_str(mut self, value: &'static str) -> Self {
self.groups.push(CssGroup::CssStatic { value });
self
}
pub fn push_string(&mut self, value: String) {
self.groups.push(CssGroup::CssDynamic { value })
}
#[must_use]
pub fn extend(mut self, new_css: Self) -> Self {
for item in new_css.groups {
self.groups.push(item);
}
self
}
}