Skip to content

dxshie/kv2

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

6 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CI Crates.io Version docs.rs

kv2

A Rust crate for parsing Valve's KeyValues2 (KV2) format.

Overview

kv2 is a Rust library for parsing and serializing the KeyValues2 (KV2) format used by Valve in their games and tools. It allows you to read KV2 files and access their data in a structured way.

Features

  • Parsing: Parsing KV2 Format.
  • Deserialization: Deserialization Serde Support for the KV2 parsing.
  • Serialization: TODO.
  • Handles Various Data Types: Supports booleans, integers, floats, strings, arrays, hex arrays(binary blobs), objects, and null values.
  • Customizable Parsing: Built using the nom parser combinator library for flexibility.

Installation

Add kv2 to your Cargo.toml dependencies:

[dependencies]
kv2 = { version = "0.1.2", features = ["serde"] }

Example

use kv2::parse_kv2;
use serde::{Deserialize, Serialize};

#[derive(Debug, Serialize, Deserialize)]
pub struct DmElement {
    id: String,
    name: String,
}

#[derive(Debug, Serialize, Deserialize)]
pub struct DmeModel {
    id: String,
    visible: bool,
}

fn main() {
    let input = r#"
"DmElement"
{
"id" "elementid" "df939bf4-8dd6-435c-9eef-a6e25434ecca"
"name" "string" "root"
}

"DmeModel"
{
"id" "elementid" "90e0ae34-0671-478d-95f5-12fa5c905c7a"
"visible" "bool" "1"
}
        "#;

    match parse_kv2(input) {
        Ok(data) => {
            let element = DmElement::deserialize(data.1[0].clone());
            let model = DmeModel::deserialize(data.1[1].clone());
        }
        Err(e) => {
            error!("{:?}", e);
        }
    }
}

About

kv2 format keyvalue2 valve rust parser with serde support

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages