handler macro

This commit is contained in:
Robin Appelman 2021-08-08 01:06:19 +02:00
commit e846fcceae
5 changed files with 91 additions and 56 deletions

View file

@ -1,16 +1,22 @@
use main_error::MainError;
use std::env::args;
use std::fs;
use tf_log_parser::module::{ChatHandler, HandlerStack, LobbySettingsHandler, OptionalHandler};
use tf_log_parser::parse_with_handler;
use tf_log_parser::module::{ChatHandler, LobbySettingsHandler};
use tf_log_parser::{handler, parse_with_handler};
type Handler = HandlerStack<ChatHandler, OptionalHandler<LobbySettingsHandler>>;
handler!(Handler {
chat: ChatHandler,
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 (chat, lobby_settings) = parse_with_handler::<Handler>(&content)?;
let HandlerOutput {
chat,
lobby_settings,
} = parse_with_handler::<Handler>(&content)?;
if let Ok(Some(settings)) = lobby_settings {
println!("Lobby settings: {:#?}", settings);