mirror of
https://codeberg.org/demostf/parser.git
synced 2026-06-03 18:24:05 +02:00
readme
This commit is contained in:
parent
c295c95c28
commit
804b70a48f
1 changed files with 46 additions and 1 deletions
45
README.md
45
README.md
|
|
@ -20,3 +20,48 @@ which will place the binary at `target/release/parse_demo`
|
|||
## Usage
|
||||
|
||||
Basic usage is as simple as `parse_demo demofile.dem` which will output a "summary" of the demo file in JSON format.
|
||||
|
||||
## Advanced usage
|
||||
|
||||
### Loop trough every packet
|
||||
|
||||
```rust
|
||||
use bitbuffer::BitRead;
|
||||
use main_error::MainError;
|
||||
use std::fs;
|
||||
use tf_demo_parser::demo::header::Header;
|
||||
use tf_demo_parser::demo::parser::{DemoHandler, RawPacketStream};
|
||||
use tf_demo_parser::Demo;
|
||||
|
||||
fn main() -> Result<(), MainError> {
|
||||
let file = fs::read("demofile.dem")?;
|
||||
|
||||
let demo = Demo::new(&file);
|
||||
let mut handler = DemoHandler::default();
|
||||
|
||||
let mut stream = demo.get_stream();
|
||||
let header = Header::read(&mut stream)?;
|
||||
handler.handle_header(&header);
|
||||
|
||||
let mut packets = RawPacketStream::new(stream);
|
||||
|
||||
while let Some(packet) = packets.next(&handler.state_handler)? {
|
||||
handler.handle_packet(packet).unwrap();
|
||||
}
|
||||
assert_eq!(false, packets.incomplete);
|
||||
|
||||
Ok(())
|
||||
}
|
||||
```
|
||||
|
||||
### Handle demo data with a custom analyser
|
||||
|
||||
Sometimes it's easier to create a custom `Analyser` to handle the demo data as it comes along.
|
||||
|
||||
See `src/demo/parser/analyser.rs` for an example.
|
||||
Once you have a custom analyser you can use it with:
|
||||
|
||||
```rust
|
||||
DemoParser::new_all_with_analyser(demo.get_stream(), CustomAnalyser::new());
|
||||
let (header, state) = parser.parse()?;
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue