tf-log-parser/examples/combine_handlers.rs
2021-08-23 22:49:26 +02:00

35 lines
887 B
Rust

//! Example for creating a handler that combines the output of multiple handlers
use main_error::MainError;
use std::env::args;
use std::fs;
use tf_log_parser::module::{ChatMessages, LobbySettingsHandler};
use tf_log_parser::{handler, parse_with_handler};
handler!(Handler {
chat: ChatMessages,
lobby_settings: LobbySettingsHandler
});
fn main() -> Result<(), MainError> {
let path = args().skip(1).next().expect("No path provided");
let content = fs::read_to_string(path)?;
let (
HandlerGlobalOutput {
chat,
lobby_settings,
},
_,
) = parse_with_handler::<Handler>(&content)?;
if let Some(Ok(settings)) = lobby_settings {
println!("Lobby settings: {:#?}", settings);
println!();
}
for message in chat {
println!("{}: {}", message.name, message.message);
}
Ok(())
}