CssVariableProcessor

Struct CssVariableProcessor 

Source
pub struct CssVariableProcessor { /* private fields */ }
Expand description

CSS variable parser and processor.

Implementations§

Source§

impl CssVariableProcessor

Source

pub fn new() -> Self

Creates a new CSS variable processor with compiled regex patterns.

Source

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()));
Source

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()));
Source

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

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Default for CssVariableProcessor

Source§

fn default() -> Self

Returns the “default value” for a type. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> PolicyExt for T
where T: ?Sized,

Source§

fn and<P, B, E>(self, other: P) -> And<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow only if self and other return Action::Follow. Read more
Source§

fn or<P, B, E>(self, other: P) -> Or<T, P>
where T: Policy<B, E>, P: Policy<B, E>,

Create a new Policy that returns Action::Follow if either self or other returns Action::Follow. Read more
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<T> ErasedDestructor for T
where T: 'static,