pub struct BBParser { /* private fields */ }Expand description
A BBCode-style tag parser for terminal styling.
The parser processes [tag]content[/tag] patterns and transforms them
according to the configured TagTransform mode.
Implementations§
Source§impl BBParser
impl BBParser
Sourcepub fn new(styles: HashMap<String, Style>, transform: TagTransform) -> Self
pub fn new(styles: HashMap<String, Style>, transform: TagTransform) -> Self
Creates a new parser with the given styles and transform mode.
§Arguments
styles- Map of tag names to console styles. Note: These styles are used directly; no alias resolution is performed.transform- How to handle matched tags
Unknown tags default to UnknownTagBehavior::Passthrough.
Sourcepub fn unknown_behavior(self, behavior: UnknownTagBehavior) -> Self
pub fn unknown_behavior(self, behavior: UnknownTagBehavior) -> Self
Sets the behavior for unknown tags.
§Example
use standout_bbparser::{BBParser, TagTransform, UnknownTagBehavior};
use std::collections::HashMap;
let parser = BBParser::new(HashMap::new(), TagTransform::Remove)
.unknown_behavior(UnknownTagBehavior::Strip);
// Unknown tags are stripped
assert_eq!(parser.parse("[foo]text[/foo]"), "text");Sourcepub fn parse(&self, input: &str) -> String
pub fn parse(&self, input: &str) -> String
Parses and transforms input.
Unknown tags are handled according to the configured UnknownTagBehavior.
Sourcepub fn parse_with_diagnostics(&self, input: &str) -> (String, UnknownTagErrors)
pub fn parse_with_diagnostics(&self, input: &str) -> (String, UnknownTagErrors)
Parses input and collects any unknown tag errors.
Returns the transformed output AND any errors found.
The output uses the configured UnknownTagBehavior for transformation.
§Example
use standout_bbparser::{BBParser, TagTransform};
use std::collections::HashMap;
let parser = BBParser::new(HashMap::new(), TagTransform::Remove);
let (output, errors) = parser.parse_with_diagnostics("[unknown]text[/unknown]");
assert!(!errors.is_empty());
assert_eq!(errors.len(), 2); // open and close tagsSourcepub fn validate(&self, input: &str) -> Result<(), UnknownTagErrors>
pub fn validate(&self, input: &str) -> Result<(), UnknownTagErrors>
Validates input for unknown tags without producing transformed output.
Returns Ok(()) if all tags are known, Err with details otherwise.
§Example
use standout_bbparser::{BBParser, TagTransform};
use std::collections::HashMap;
use console::Style;
let mut styles = HashMap::new();
styles.insert("bold".to_string(), Style::new().bold());
let parser = BBParser::new(styles, TagTransform::Apply);
// Known tag passes validation
assert!(parser.validate("[bold]text[/bold]").is_ok());
// Unknown tag fails validation
let result = parser.validate("[unknown]text[/unknown]");
assert!(result.is_err());Trait Implementations§
Auto Trait Implementations§
impl Freeze for BBParser
impl RefUnwindSafe for BBParser
impl Send for BBParser
impl Sync for BBParser
impl Unpin for BBParser
impl UnwindSafe for BBParser
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