Skip to main content

beuvy_runtime/utility/
parser.rs

1use super::builtin::parse_builtin_utility_tokens;
2use super::types::{ParseUtilityError, UtilityStylePatch};
3use crate::stylesheet::{default_style_sheet, parse_style_classes_with_sheet};
4use crate::theme_config::UiThemeConfig;
5
6/// Parses a Tailwind-like utility class string into a style patch using the
7/// currently active UI theme config.
8///
9/// This parser intentionally supports a curated subset of Tailwind focused on
10/// common Bevy UI layout and visual utilities. Unknown tokens fail fast rather
11/// than being ignored so DSL assets cannot silently drift out of support.
12pub fn parse_utility_classes(input: &str) -> Result<UtilityStylePatch, ParseUtilityError> {
13    parse_style_classes_with_sheet(default_style_sheet(), input)
14        .map_err(|error| ParseUtilityError::new(input, error.reason))
15}
16
17#[doc(hidden)]
18pub fn parse_utility_classes_with_config(
19    config: &UiThemeConfig,
20    input: &str,
21) -> Result<UtilityStylePatch, ParseUtilityError> {
22    let tokens = input
23        .split_whitespace()
24        .map(ToString::to_string)
25        .collect::<Vec<_>>();
26    parse_builtin_utility_tokens(config, &tokens)
27}