use cosy::CosyParserExtension;
#[derive(Debug, PartialEq)]
enum MySyntax {
SpeechBubble(String),
}
struct MyExtension;
impl CosyParserExtension for MyExtension {
type Output = MySyntax;
fn parse_bracket(&self, content: &str) -> Option<Self::Output> {
content
.strip_prefix("{ ")
.map(|body| MySyntax::SpeechBubble(body.to_string()))
}
}
fn main() {
let extension = MyExtension;
let input = "Cheshire Cat[{ We're all mad here.]";
let result = cosy::parse(input, &extension);
match result {
Ok(nodes) => println!("{:#?}", nodes),
Err(e) => println!("Error: {}", e),
}
}