8 releases (breaking)

0.8.0 Jul 23, 2023
0.7.0 Jan 16, 2023
0.6.0 Sep 1, 2022
0.5.0 Dec 31, 2021
0.1.0 Dec 26, 2019

#521 in Parser implementations

Download history 36/week @ 2024-01-25 5/week @ 2024-02-01 19/week @ 2024-02-15 22/week @ 2024-02-22 21/week @ 2024-02-29 11/week @ 2024-03-07 11/week @ 2024-03-14 16/week @ 2024-03-21 153/week @ 2024-03-28

191 downloads per month
Used in 2 crates

MIT/Apache

205KB
3K SLoC

Rust 2K SLoC // 0.0% comments C++ 800 SLoC Shell 16 SLoC // 0.1% comments Pan 11 SLoC // 0.2% comments

hltas

crates.io Documentation

CHANGELOG

A crate for reading and writing Half-Life TAS scripts (.hltas).

Examples

use hltas::{HLTAS, types::{JumpBug, Line, Times}};

let contents = "\
version 1
demo test
frames
------b---|------|------|0.001|-|-|5";

match HLTAS::from_str(&contents) {
    Ok(hltas) => {
        assert_eq!(hltas.properties.demo.as_deref(), Some("test"));

        if let Line::FrameBulk(frame_bulk) = &hltas.lines[0] {
            assert_eq!(
                frame_bulk.auto_actions.jump_bug,
                Some(JumpBug { times: Times::UnlimitedWithinFrameBulk })
            );
            assert_eq!(&frame_bulk.frame_time, "0.001");
            assert_eq!(frame_bulk.frame_count.get(), 5);
        } else {
            unreachable!()
        }
    }

    // The errors are pretty-printed with context.
    Err(error) => println!("{}", error),
}

Features

  • serde1: implements serde's Serialize and Deserialize traits for all types.

  • proptest1: implements proptest's Arbitrary trait for all types. Only "valid" contents are generated, as in, writing to string and parsing back will work and give you the same result.

C++ Wrapper

Also included is a C++ wrapper, exporting the same C++ interface as the previous C++ version of HLTAS.

Using the C++ wrapper from CMake

  • You will need Rust: either from your distribution's packages, or from rustup.
  • From your project's CMakeLists.txt, call add_subdirectory("path/to/hltas").
  • Link to the hltas-cpp target: target_link_libraries(your-target hltas-cpp).

License: MIT/Apache-2.0

Dependencies

~0.9–1.6MB
~31K SLoC