[](https://github.com/dxshie/kv3/actions/workflows/ci.yml) [](https://crates.io/crates/kv3) [](https://docs.rs/crate/kv3/latest)
# kv3
A Rust crate for parsing Valve's KeyValues3 (KV3) format.
## Overview
`kv3` is a Rust library for parsing and serializing the [KeyValues3 (KV3)](https://developer.valvesoftware.com/wiki/KeyValues3) format used by Valve in their games and tools. It allows you to read KV3 files and access their data in a structured way.
## Features
- **Parsing**: Parsing KV3 Format.
- **Deserialization**: Deserialization Serde Support for the KV3 parsing.
- **Serialization**: TODO.
- **Support for Header Metadata**: TODO.
- **Support for Comments**: Handles single-line (`//`), multi-line (`/* ... */`), and XML-style (`<!-- ... -->`) comments.
- **Support for Multiline Strings**: Parses multiline strings enclosed in triple double-quotes (`"""`).
- **Handles Various Data Types**: Supports booleans, integers, floats, strings, arrays, hex arrays(binary blobs), objects, and null values.
- **Customizable Parsing**: Built using the [`nom`](https://github.com/Geal/nom) parser combinator library for flexibility.
## Installation
Add `kv3` to your `Cargo.toml` dependencies:
```toml
[dependencies]
kv3 = { version = "0.1.0", features = ["serde"] }