From 09f39f3706945fc1cb5295236d59cd1f03fecb08 Mon Sep 17 00:00:00 2001 From: Johan Klokkhammer Helsing Date: Fri, 24 Oct 2025 11:36:52 +0200 Subject: [PATCH] fix: Don't crash on empty strings --- crates/pretty_text_parser/src/lib.rs | 30 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/crates/pretty_text_parser/src/lib.rs b/crates/pretty_text_parser/src/lib.rs index b3addf5..b615576 100644 --- a/crates/pretty_text_parser/src/lib.rs +++ b/crates/pretty_text_parser/src/lib.rs @@ -31,19 +31,23 @@ pub enum PrettyParserError { } pub fn parse<'a>(pretty_text: &'a str) -> Result, PrettyParserError> { - tokenize - .parse(pretty_text) - .map_err(|err| PrettyParserError::Lex(err.to_string())) - .and_then(|tokens| { - parse_tokens.parse(&tokens).map_err(|err| { - PrettyParserError::Parse(pretty_print_token_err( - pretty_text, - err.input(), - err.offset(), - err.inner(), - )) + if pretty_text.is_empty() { + Ok(PrettyText(Vec::new())) + } else { + tokenize + .parse(pretty_text) + .map_err(|err| PrettyParserError::Lex(err.to_string())) + .and_then(|tokens| { + parse_tokens.parse(&tokens).map_err(|err| { + PrettyParserError::Parse(pretty_print_token_err( + pretty_text, + err.input(), + err.offset(), + err.inner(), + )) + }) }) - }) + } } #[derive(Debug)] @@ -462,6 +466,8 @@ mod test { fn valid_parser_syntax() { assert_ok("hello, world!"); + assert_ok(""); + assert_ok("[simple style](red)"); assert_ok("[simple style and effect](red, shake)");