use std::cell::RefCell;
use std::rc::{Rc, Weak};
use crate::ast::{Node, Source};
#[derive(Debug, PartialEq, Clone)]
pub struct RawValue {
pub value: String,
pub raw: String,
}
#[derive(Debug, PartialEq, Clone)]
pub struct RuleRaws {
pub before: Option<String>,
pub after: Option<String>,
pub between: Option<String>,
pub semicolon: Option<bool>,
pub own_semicolon: Option<bool>,
pub selector: Option<RawValue>,
}
pub struct Rule {
pub r#type: &'static str,
pub nodes: Option<RefCell<Vec<Rc<Node>>>>,
pub parent: Option<RefCell<Weak<Node>>>,
pub selector: String,
pub selectors: Option<Vec<String>>,
pub raws: RuleRaws,
pub source: Option<Source>,
}