Skip to main content

veripb_parser/
parser.rs

1//! Helper functions for parser that can be reused for new parsers.
2
3use std::{
4    fs::File,
5    io::{BufRead, BufReader, Lines},
6    path::Path,
7};
8
9use crate::error::ParserError;
10
11/// Get an iterator over the lines at the file with path `filename`.
12#[inline]
13pub fn get_lines<P>(filename: P) -> Result<Lines<BufReader<File>>, ParserError>
14where
15    P: AsRef<Path>,
16{
17    let file = File::open(&filename)
18        .map_err(|_| ParserError::FileError(filename.as_ref().to_string_lossy().to_string()))?;
19    Ok(BufReader::new(file).lines())
20}
21
22/// Get a buffered reader for the file at the path `filename`.
23#[inline]
24pub fn get_reader<P>(filename: P) -> Result<BufReader<File>, ParserError>
25where
26    P: AsRef<Path>,
27{
28    let file = File::open(&filename)
29        .map_err(|_| ParserError::FileError(filename.as_ref().to_string_lossy().to_string()))?;
30    Ok(BufReader::new(file))
31}