Skip to main content

oxirs_ttl/patch/
patch_writer.rs

1//! RDF Patch serialization.
2//!
3//! Exports: [`PatchSerializer`].
4
5use super::patch_types::{PatchChange, RdfPatch};
6
7// ─── PatchSerializer ─────────────────────────────────────────────────────────
8
9/// Serializes [`RdfPatch`] documents to the RDF Patch text format
10pub struct PatchSerializer;
11
12impl PatchSerializer {
13    /// Serialize an [`RdfPatch`] to a string
14    pub fn serialize(patch: &RdfPatch) -> String {
15        let mut out = String::new();
16        for header in &patch.headers {
17            out.push_str(&header.to_string());
18            out.push('\n');
19        }
20        if !patch.headers.is_empty() && !patch.changes.is_empty() {
21            out.push('\n');
22        }
23        for change in &patch.changes {
24            out.push_str(&change.to_string());
25            out.push('\n');
26        }
27        out
28    }
29
30    /// Serialize a single [`PatchChange`] line (no newline appended)
31    pub fn serialize_change(change: &PatchChange) -> String {
32        change.to_string()
33    }
34}