使う
# Cargo.toml — not on crates.io yet, so pull it straight from the repo
[dependencies]
velq-core = { git = "https://github.com/iKora128/velq" }書く・検証する・読む
use std::path::Path;
use velq_core::{pack, read_manifest, validate, Asset, Manifest};
let manifest = Manifest { title: "Q3 report".into(), ..Manifest::default() };
let assets = [Asset {
path: "assets/css/main.css".into(),
bytes: b"body{margin:2rem}".to_vec(),
}];
pack(Path::new("report.velq"), &manifest, b"<h1>Q3</h1>", &assets)?;
validate(Path::new("report.velq"))?; // manifest.json + index.html: ok
let title = read_manifest(Path::new("report.velq"))?.title;API はこれで全部
pack / pack_mdパッケージを書き出す。HTML のみ、または Markdown 原稿と描画済み HTML のペア。
validate必須 2 エントリの検査。「この ZIP は .velq か?」
read_manifest / read_index_md / read_file_bytes / read_assetsメタデータ、Markdown 原稿、任意のエントリを読む。
update_index / update_mdドキュメントだけ差し替えて manifest とアセットは保持。アトミックに書くので、途中で落ちてもパッケージは壊れません。
unpackフォルダへ全展開(「.zip リネーム」の関数版)。