#deserialize #parser #gamedev #source-file #file-tree

nightly clauser

用于解析和反序列化Clausewitz文件的库

1个不稳定版本

0.1.0 2024年6月25日

#2076 in 解析器实现

MIT许可

81KB
2K SLoC

clauser

crates.io badge docs.rs badge

clauser是一个用于处理Paradox Interactive用于其大型策略游戏的Clausewitz引擎配置、脚本和数据文件的库。

它目前实现了Tokenizer(分词器)、低级Reader(读取器)、基于serde的Deserializer(反序列化器)以及用于serde无法工作的情况的复制Value deserializer。更多信息,请阅读文档

示例

使用serde

use serde::Deserialize;

#[derive(Deserialize)]
struct TestObject {
  a: i32,
  b: String,
  c: Date
}

let obj = clauser::de::from_str::<TestObject>(
  "a = 1 b = test c = 1940.1.1"
);
assert!(obj.a == 1);
assert!(obj.b == "test");
assert!(obj.c == Date::new(1940, 1, 1, 0));

lib.rs:

clauser

clauser是一个用于处理Paradox Interactive用于其大型策略游戏的Clausewitz引擎配置、脚本和数据文件的库。

它包含多个组件

  • Deserializer是一个[serde]反序列化器,可以将Clausewitz文件反序列化为Rust数据结构。
  • Value允许将Clausewitz文件反序列化为值树,适用于事先不知道数据模式的情况。
  • Tokenizer将Clausewitz文件转换为一系列标记。
  • Reader是Tokenizer的包装器,它允许对Clausewitz源文件进行低级解析操作。

依赖项

~1.3–2.2MB
~33K SLoC