Skip to main content

blockworx/schema/
json.rs

1//! JSON text ↔ [`Document`] via `serde_json`.
2
3use super::error::SchemaError;
4use super::model::Document;
5
6pub fn parse(src: &str, src_name: &str) -> Result<Document, SchemaError> {
7    let doc: Document =
8        serde_json::from_str(src).map_err(|e| SchemaError::from_json(&e, src_name, src))?;
9    match super::model::unsupported_version(doc.version) {
10        Some(message) => Err(SchemaError::Version { message }),
11        None => Ok(doc),
12    }
13}
14
15#[expect(clippy::expect_used)]
16pub fn format(doc: &Document) -> String {
17    serde_json::to_string_pretty(doc).expect("schema document serializes to JSON")
18}