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

View file

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