use super::binary_parser::BinaryDataParser;
use crate::parser::ast::{Font, Graphic, Section};
pub(in crate::parser) struct FontsParser;
impl FontsParser {
pub fn parse(source: &str, position: usize, line: usize) -> (Section<'_>, usize, usize) {
let parser = BinaryDataParser::new(
source,
position,
line,
"fontname",
|filename, data_lines, span| Font {
filename,
data_lines,
span,
},
);
let (fonts, final_position, final_line) = parser.parse();
(Section::Fonts(fonts), final_position, final_line)
}
}
pub(in crate::parser) struct GraphicsParser;
impl GraphicsParser {
pub fn parse(source: &str, position: usize, line: usize) -> (Section<'_>, usize, usize) {
let parser = BinaryDataParser::new(
source,
position,
line,
"filename",
|filename, data_lines, span| Graphic {
filename,
data_lines,
span,
},
);
let (graphics, final_position, final_line) = parser.parse();
(Section::Graphics(graphics), final_position, final_line)
}
}