parser 0.8

This commit is contained in:
Robin Appelman 2020-12-06 01:30:03 +01:00
commit fc35fe8b1c
3 changed files with 27 additions and 28 deletions

42
Cargo.lock generated
View file

@ -17,20 +17,21 @@ checksum = "cdb031dd78e28731d87d56cc8ffef4a8f36ca26c38fe2de700543e627f8a464a"
[[package]]
name = "bitbuffer"
version = "0.7.1"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6007718437539bc4564d96742ad7a86adf1244b5fb6e0381b426034f957edb7f"
checksum = "e2b3cd4415fb790abfc898cd449f319029933a867462634dbd427c3f884ba6c5"
dependencies = [
"bitbuffer_derive",
"err-derive",
"memchr",
"num-traits",
]
[[package]]
name = "bitbuffer_derive"
version = "0.7.1"
version = "0.8.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1d481746ea558a93cdbd62cd9766ab7f56789dcb2605b8344727c5ee92007070"
checksum = "7f51dcbe693d21078994abd2afac5adc9bcc80fbdf80206ebdb33fec4a145693"
dependencies = [
"proc-macro2 1.0.24",
"quote 1.0.7",
@ -188,9 +189,9 @@ dependencies = [
[[package]]
name = "num_enum"
version = "0.4.3"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ca565a7df06f3d4b485494f25ba05da1435950f4dc263440eda7a6fa9b8e36e4"
checksum = "226b45a5c2ac4dd696ed30fa6b94b057ad909c7b7fc2e0d0808192bced894066"
dependencies = [
"derivative",
"num_enum_derive",
@ -198,9 +199,9 @@ dependencies = [
[[package]]
name = "num_enum_derive"
version = "0.4.3"
version = "0.5.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ffa5a33ddddfee04c0283a7653987d634e880347e96b5b2ed64de07efb59db9d"
checksum = "1c0fd9eba1d5db0994a239e09c1be402d35622277e35468ba891aa5e3188ce7e"
dependencies = [
"proc-macro-crate",
"proc-macro2 1.0.24",
@ -209,23 +210,29 @@ dependencies = [
]
[[package]]
name = "parse-display"
version = "0.1.2"
name = "once_cell"
version = "1.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "bd87725635cbae7fe960f91f55a114ed104e637790317cc8d9197ea16b058010"
checksum = "13bd41f508810a131401606d54ac32a467c97172d74ba7662562ebba5ad07fa0"
[[package]]
name = "parse-display"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "12035532e456d9f4f59fcfa3834dc5f45b391d9029f5287292bf41960b05ce91"
dependencies = [
"lazy_static",
"once_cell",
"parse-display-derive",
"regex",
]
[[package]]
name = "parse-display-derive"
version = "0.1.2"
version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cc52b391380aa8550348736a356bf028f5469391d580533a566e97543f55e813"
checksum = "449f5881ab953fa168d60a57dd182a3e1fdeff16bb9bdd309145fbd8f32326ec"
dependencies = [
"lazy_static",
"once_cell",
"proc-macro2 1.0.24",
"quote 1.0.7",
"regex",
@ -431,7 +438,9 @@ dependencies = [
[[package]]
name = "tf-demo-parser"
version = "0.1.0"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c55bccc934036ee9fb1c88106ef3b23a4375bc2fb7cddb735e15d1f265561713"
dependencies = [
"bitbuffer",
"enumflags2",
@ -451,7 +460,6 @@ dependencies = [
name = "tf-demos-viewer"
version = "0.1.0"
dependencies = [
"console_error_panic_hook",
"futures",
"js-sys",
"tf-demo-parser",

View file

@ -26,10 +26,7 @@ wasm-opt = false
wasm-bindgen = "0.2.45"
wee_alloc = { version = "0.4.2", optional = true }
web-sys = { version = "0.3.22", features = ["console"] }
tf-demo-parser = { path = "../tf-demo-parser" }
[target."cfg(debug_assertions)".dependencies]
console_error_panic_hook = "0.1.5"
tf-demo-parser = "0.2"
[dev-dependencies]
wasm-bindgen-test = "0.2.45"

View file

@ -74,8 +74,7 @@ impl FlatState {
#[wasm_bindgen]
pub fn parse_demo(buffer: Box<[u8]>) -> Result<FlatState, JsValue> {
let buffer = buffer.into_vec();
let (parsed, world) = parse_demo_inner(buffer).map_err(|e| JsValue::from(e.to_string()))?;
let (parsed, world) = parse_demo_inner(&buffer).map_err(|e| JsValue::from(e.to_string()))?;
let world = world.ok_or_else(|| JsValue::from_str("No world defined in demo"))?;
@ -92,7 +91,7 @@ pub fn get_map(state: &FlatState) -> String {
state.header.map.clone()
}
pub fn parse_demo_inner(buffer: Vec<u8>) -> Result<(ParsedDemo, Option<World>), ParseError> {
pub fn parse_demo_inner(buffer: &[u8]) -> Result<(ParsedDemo, Option<World>), ParseError> {
let demo = Demo::new(buffer);
let parser = DemoParser::new_with_analyser(demo.get_stream(), GameStateAnalyser::default());
let (header, mut ticker) = parser.ticker()?;
@ -115,10 +114,5 @@ pub fn parse_demo_inner(buffer: Vec<u8>) -> Result<(ParsedDemo, Option<World>),
// This is like the `main` function, except for JavaScript.
#[wasm_bindgen(start)]
pub fn main_js() -> Result<(), JsValue> {
// This provides better error messages in debug mode.
// It's disabled in release mode so it doesn't bloat up the file size.
#[cfg(debug_assertions)]
console_error_panic_hook::set_once();
Ok(())
}