From 5aae676fb8ea92069fabf730763fd3d755ce5732 Mon Sep 17 00:00:00 2001 From: Alain Emilia Anna Zscheile Date: Mon, 2 Dec 2024 22:44:46 +0100 Subject: [PATCH] refactor(specctra/read): put read_quoted into a separate function again --- src/specctra/read.rs | 39 +++++++++++++++++++++++---------------- 1 file changed, 23 insertions(+), 16 deletions(-) diff --git a/src/specctra/read.rs b/src/specctra/read.rs index 1dc2746..f19e92a 100644 --- a/src/specctra/read.rs +++ b/src/specctra/read.rs @@ -254,24 +254,31 @@ impl ListTokenizer { } fn read_string(&mut self) -> Result { + fn read_quoted( + this: &mut ListTokenizer, + quote_chr: char, + ) -> Result { + let mut string = String::new(); + this.reset_char(); + + loop { + let ctx = this.context(); + let chr = this.next_char()?; + if chr == ' ' && !this.space_in_quoted { + return Err(ParseError::UnexpectedSpaceInQuotedStr.add_context(ctx)); + } else if chr == quote_chr { + break; + } else { + string.push(chr); + } + } + + Ok(string) + } + if let Some(quote_chr) = self.quote_char { if quote_chr == self.peek_char()? { - let mut string = String::new(); - self.reset_char(); - - loop { - let ctx = self.context(); - let chr = self.next_char()?; - if chr == ' ' && !self.space_in_quoted { - return Err(ParseError::UnexpectedSpaceInQuotedStr.add_context(ctx)); - } else if chr == quote_chr { - break; - } else { - string.push(chr); - } - } - - return Ok(string); + return read_quoted(self, quote_chr); } } self.read_unquoted()