mirror of https://codeberg.org/topola/topola.git
specctra/read: don't repeat character retrieval code
This commit is contained in:
parent
62b58e2210
commit
b738a425e4
|
|
@ -198,16 +198,8 @@ impl<R: std::io::BufRead> ListTokenizer<R> {
|
|||
}
|
||||
|
||||
fn next_char(&mut self) -> Result<char, ParseErrorContext> {
|
||||
let return_chr = if let Some(chr) = self.peeked_char {
|
||||
let return_chr = self.peek_char()?;
|
||||
self.peeked_char = None;
|
||||
chr
|
||||
} else {
|
||||
self.reader
|
||||
.chars()
|
||||
.next()
|
||||
.ok_or(self.add_context(ParseError::Eof))?
|
||||
.map_err(|err| self.add_context(err.into()))?
|
||||
};
|
||||
|
||||
if return_chr == '\n' {
|
||||
self.line += 1;
|
||||
|
|
@ -220,17 +212,17 @@ impl<R: std::io::BufRead> ListTokenizer<R> {
|
|||
}
|
||||
|
||||
fn peek_char(&mut self) -> Result<char, ParseErrorContext> {
|
||||
if let Some(chr) = self.peeked_char {
|
||||
Ok(chr)
|
||||
Ok(if let Some(chr) = self.peeked_char {
|
||||
chr
|
||||
} else {
|
||||
let chr = self.reader
|
||||
.chars()
|
||||
.next()
|
||||
.read_char()
|
||||
.transpose()
|
||||
.ok_or(self.add_context(ParseError::Eof))?
|
||||
.map_err(|err| self.add_context(err.into()))?;
|
||||
self.peeked_char = Some(chr);
|
||||
Ok(chr)
|
||||
}
|
||||
chr
|
||||
})
|
||||
}
|
||||
|
||||
fn skip_whitespace(&mut self) -> Result<(), ParseErrorContext> {
|
||||
|
|
|
|||
Loading…
Reference in New Issue