pub struct CssVariableProcessor { /* private fields */ }
Expand description
CSS variable parser and processor.
Implementations§
Source§impl CssVariableProcessor
impl CssVariableProcessor
Sourcepub fn parse_variables(
&self,
css_content: &str,
) -> Result<HashMap<String, String>, CssVarError>
pub fn parse_variables( &self, css_content: &str, ) -> Result<HashMap<String, String>, CssVarError>
Parses CSS variables from :root blocks in the given CSS content.
§Arguments
css_content
- The CSS content to parse
§Returns
A HashMap mapping variable names to their values
§Example
use wechat_pub_rs::css_vars::CssVariableProcessor;
let processor = CssVariableProcessor::new();
let css = ":root { --primary-color: #4870ac; --text-color: #40464f; }";
let variables = processor.parse_variables(css).unwrap();
assert_eq!(variables.get("primary-color"), Some(&"#4870ac".to_string()));
assert_eq!(variables.get("text-color"), Some(&"#40464f".to_string()));
Sourcepub fn resolve_variables(
&self,
variables: HashMap<String, String>,
) -> Result<HashMap<String, String>, CssVarError>
pub fn resolve_variables( &self, variables: HashMap<String, String>, ) -> Result<HashMap<String, String>, CssVarError>
Resolves CSS variables, handling nested variable references.
This method processes variables that reference other variables and resolves them to their final values, detecting circular references.
§Arguments
variables
- HashMap of raw variable declarations
§Returns
A HashMap with all variables resolved to their final values
§Example
use std::collections::HashMap;
use wechat_pub_rs::css_vars::CssVariableProcessor;
let processor = CssVariableProcessor::new();
let mut variables = HashMap::new();
variables.insert("primary-color".to_string(), "#4870ac".to_string());
variables.insert("header-color".to_string(), "var(--primary-color)".to_string());
let resolved = processor.resolve_variables(variables).unwrap();
assert_eq!(resolved.get("header-color"), Some(&"#4870ac".to_string()));
Sourcepub fn process_css(&self, css_content: &str) -> Result<String, CssVarError>
pub fn process_css(&self, css_content: &str) -> Result<String, CssVarError>
Processes CSS content by inlining all CSS variables.
This is the main entry point that parses variables, resolves them, and replaces all var() calls with their resolved values.
§Arguments
css_content
- The CSS content to process
§Returns
CSS content with all variables inlined
§Example
use wechat_pub_rs::css_vars::CssVariableProcessor;
let processor = CssVariableProcessor::new();
let css = r#"
:root {
--primary-color: #4870ac;
--header-color: var(--primary-color);
}
.header { color: var(--header-color); }
"#;
let processed = processor.process_css(css).unwrap();
assert!(processed.contains("color: #4870ac"));
assert!(!processed.contains("var("));
Trait Implementations§
Source§impl Debug for CssVariableProcessor
impl Debug for CssVariableProcessor
Auto Trait Implementations§
impl Freeze for CssVariableProcessor
impl RefUnwindSafe for CssVariableProcessor
impl Send for CssVariableProcessor
impl Sync for CssVariableProcessor
impl Unpin for CssVariableProcessor
impl UnwindSafe for CssVariableProcessor
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more