raw events

This commit is contained in:
Robin Appelman 2023-03-16 19:22:10 +01:00
commit 484fd735d1
2 changed files with 9 additions and 5 deletions

View file

@ -1,15 +1,15 @@
use main_error::MainError;
use std::env::args;
use std::fs;
use tf_log_parser::{GameEvent, LineSplit, RawEvent};
use tf_log_parser::{raw_events, GameEvent};
fn main() -> Result<(), MainError> {
let path = args().nth(1).expect("No path provided");
let input = fs::read_to_string(path)?;
let events: Vec<_> = LineSplit::new(&input)
.flat_map(RawEvent::parse)
.map(|raw| GameEvent::parse(&raw).unwrap())
let events: Vec<_> = raw_events(&input)
.map(|res| res.expect("Failed to parse raw event"))
.map(|raw| GameEvent::parse(&raw).expect("Failed to parse event"))
.collect();
println!("{} events parsed", events.len());

View file

@ -58,6 +58,10 @@ pub fn parse(
parse_with_handler::<LogHandler>(log)
}
pub fn raw_events<'a>(log: &'a str) -> impl Iterator<Item = Result<RawEvent<'a>>> + 'a {
LineSplit::new(log).map(RawEvent::parse)
}
pub fn parse_with_handler<Handler: EventHandler>(
log: &str,
) -> Result<
@ -67,7 +71,7 @@ pub fn parse_with_handler<Handler: EventHandler>(
),
Error,
> {
let events = LineSplit::new(log).map(RawEvent::parse);
let events = raw_events(log);
let mut handler = Handler::default();