5 个版本 (3 个破坏性更新)
0.4.1 | 2022 年 9 月 26 日 |
---|---|
0.4.0 | 2022 年 9 月 26 日 |
0.3.1 | 2022 年 5 月 29 日 |
0.2.0 | 2022 年 4 月 23 日 |
0.1.0 | 2022 年 4 月 21 日 |
#1830 in 数据库接口
110KB
3.5K SLoC
ironworks
用 Rust 编写的模块化 FFXIV 数据工具包。
ironworks 是预 1.0 版本,因此其 API 应被视为不稳定。破坏性 API 更改将在新的小版本上发布。
为了最小化未使用的代码和依赖,ironworks 被分割成多个离散的功能。默认情况下没有启用任何功能 - 选择您想要使用的功能!
功能 | 描述 |
---|---|
excel |
从 Excel 数据库读取数据。 |
ffxiv |
与 FFXIV 一起使用 ironworks 的绑定。 |
sqpack |
在 SqPack 包格式中导航和提取文件。 |
此外,文件类型读取器是可选的。上述功能模块将自动启用它们需要的文件类型,但是如果您需要用于定制目的的附加文件类型,它们可以手动启用。文件类型功能以文件的扩展名命名,例如 exl
用于 .exl
文件。
入门指南
[dependencies]
ironworks = {version = "0.4.1", features = ["excel", "ffxiv", "sqpack"]}
use ironworks::{excel::Excel, ffxiv, file::exl, sqpack::SqPack, Error, Ironworks};
fn main() -> Result<(), Error> {
// Build the core ironworks instance. Additional resources can be registered
// for more complicated file layouts.
let ironworks = Ironworks::new()
.with_resource(SqPack::new(ffxiv::FsResource::search().unwrap()));
// Read out files as raw bytes or structured data.
let bytes = ironworks.file::<Vec<u8>>("exd/root.exl")?;
let list = ironworks.file::<exl::ExcelList>("exd/root.exl")?;
// Read fields out of excel.
let excel = Excel::with()
.language(ffxiv::Language::English)
.build(&ironworks, ffxiv::Mapper::new());
let field = excel.sheet("Item")?.row(37362)?.field(0)?;
Ok(())
}
使用从 Excel 生成的表
除了像上面那样逐个读取字段之外,还可以一次将整个行读入一个结构体。为此,生成的表定义可作为 Git 依赖项提供。
警告:用于生成这些结构的数据不提供任何稳定性保证。因此,任何对表结构的更新都应被视为 semver-major 更新。
[dependencies]
# ...
ironworks_sheets = {git = "https://github.com/ackwell/ironworks", branch = "sheets/saint-coinach"}
// ...
use ironworks_sheets::{for_type, sheet};
fn main() -> Result<(), Error> {
// ...
let field = excel.sheet(for_type::<sheet::Item>())?.row(37362)?.singular;
// ...
}
依赖项
~1.5–2MB
~46K SLoC