1
0
Fork 0
mirror of https://codeberg.org/demostf/parser.git synced 2026-06-03 10:14:06 +02:00

Merge pull request #16 from ddeityy/master

Added header to json output
This commit is contained in:
Robin Appelman 2023-11-11 21:21:08 +01:00 committed by GitHub
commit 5f6600cfdb
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -2,6 +2,9 @@ use std::env;
use std::fs; use std::fs;
use main_error::MainError; use main_error::MainError;
use serde::{Deserialize, Serialize};
use tf_demo_parser::demo::header::Header;
use tf_demo_parser::demo::parser::analyser::MatchState;
use tf_demo_parser::demo::parser::player_summary_analyzer::PlayerSummaryAnalyzer; use tf_demo_parser::demo::parser::player_summary_analyzer::PlayerSummaryAnalyzer;
pub use tf_demo_parser::{Demo, DemoParser, Parse, ParseError, ParserState, Stream}; pub use tf_demo_parser::{Demo, DemoParser, Parse, ParseError, ParserState, Stream};
@ -9,6 +12,14 @@ pub use tf_demo_parser::{Demo, DemoParser, Parse, ParseError, ParserState, Strea
#[global_allocator] #[global_allocator]
static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc; static ALLOC: jemallocator::Jemalloc = jemallocator::Jemalloc;
#[derive(Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
struct JsonDemo {
header: Header,
#[serde(flatten)]
state: MatchState,
}
fn main() -> Result<(), MainError> { fn main() -> Result<(), MainError> {
#[cfg(feature = "better_panic")] #[cfg(feature = "better_panic")]
better_panic::install(); better_panic::install();
@ -34,8 +45,9 @@ fn main() -> Result<(), MainError> {
} else { } else {
DemoParser::new(demo.get_stream()) DemoParser::new(demo.get_stream())
}; };
let (_, state) = parser.parse()?; let (header, state) = parser.parse()?;
println!("{}", serde_json::to_string(&state)?); let demo = JsonDemo { header, state };
println!("{}", serde_json::to_string(&demo)?);
} else { } else {
let parser = DemoParser::new_with_analyser(demo.get_stream(), PlayerSummaryAnalyzer::new()); let parser = DemoParser::new_with_analyser(demo.get_stream(), PlayerSummaryAnalyzer::new());
let (header, state) = parser.parse()?; let (header, state) = parser.parse()?;