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> {
|
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;
|
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' {
|
if return_chr == '\n' {
|
||||||
self.line += 1;
|
self.line += 1;
|
||||||
|
|
@ -220,17 +212,17 @@ impl<R: std::io::BufRead> ListTokenizer<R> {
|
||||||
}
|
}
|
||||||
|
|
||||||
fn peek_char(&mut self) -> Result<char, ParseErrorContext> {
|
fn peek_char(&mut self) -> Result<char, ParseErrorContext> {
|
||||||
if let Some(chr) = self.peeked_char {
|
Ok(if let Some(chr) = self.peeked_char {
|
||||||
Ok(chr)
|
chr
|
||||||
} else {
|
} else {
|
||||||
let chr = self.reader
|
let chr = self.reader
|
||||||
.chars()
|
.read_char()
|
||||||
.next()
|
.transpose()
|
||||||
.ok_or(self.add_context(ParseError::Eof))?
|
.ok_or(self.add_context(ParseError::Eof))?
|
||||||
.map_err(|err| self.add_context(err.into()))?;
|
.map_err(|err| self.add_context(err.into()))?;
|
||||||
self.peeked_char = Some(chr);
|
self.peeked_char = Some(chr);
|
||||||
Ok(chr)
|
chr
|
||||||
}
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
fn skip_whitespace(&mut self) -> Result<(), ParseErrorContext> {
|
fn skip_whitespace(&mut self) -> Result<(), ParseErrorContext> {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue