use crate::ast::CSSNode;
use crate::error::Result;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone)]
pub struct CSSTransformer {
options: TransformOptions,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TransformOptions {
pub optimize: bool,
pub vendor_prefixes: bool,
pub flatten_nesting: bool,
pub resolve_custom_properties: bool,
}
impl Default for TransformOptions {
fn default() -> Self {
Self {
optimize: true,
vendor_prefixes: false,
flatten_nesting: true,
resolve_custom_properties: true,
}
}
}
impl CSSTransformer {
pub fn new(options: TransformOptions) -> Self {
Self { options }
}
pub fn transform(&self, ast: CSSNode) -> Result<CSSNode> {
Ok(ast)
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_transformer_creation() {
let options = TransformOptions::default();
let transformer = CSSTransformer::new(options);
assert!(transformer.options.optimize);
}
}