Skip to main content

ProvBackend

Struct ProvBackend 

Source
pub struct ProvBackend { /* private fields */ }
Expand description

A backend over a single prov document, editing its embedded metadata.

Implementations§

Source§

impl ProvBackend

Source

pub fn open( path: impl Into<PathBuf>, text: impl Into<String>, ) -> Result<Self, BackendError>

Open a prov document from its full text, with no schema. Errors if prov cannot parse it.

Source

pub fn open_with_schema( path: impl Into<PathBuf>, text: impl Into<String>, schema: Schema, ) -> Result<Self, BackendError>

Open a prov document carrying the workspace schema — the prov-aware path, so the flower model validates controlled fields and offers pickers.

Source

pub fn body(&self) -> Result<String, BackendError>

The prose body outside the metadata block — the region a leaf editor would own. Empty for a whole-file config document.

Source

pub fn has_body(&self) -> Result<bool, BackendError>

Whether the document has an editable prose body (a fenced carrier). A whole-file config document has none — its body cannot be replaced.

Source

pub fn set_body(&mut self, body: &str) -> Result<(), BackendError>

Replace the prose body, leaving the metadata block untouched — the write path for edits a leaf editor makes to body.

Uses fig’s Embed::replace_body (the same lossless primitive prov edits through). A frontend that wants fixity/updated restamping routes this through prov’s write path instead; here it demonstrates that the metadata and body regions edit independently over one document.

Trait Implementations§

Source§

impl Backend for ProvBackend

Source§

fn apply(&mut self, op: EditOp) -> Result<(), BackendError>

Apply one edit. Atomic: on Err, the document is unchanged.
Source§

fn to_value(&self) -> Result<Value, BackendError>

The current value tree to render (for an embed backend, the metadata region — not the whole host file).
Source§

fn source(&self) -> Result<String, BackendError>

The canonical serialized form the embedder persists on save (for an embed backend, the full rendered host file).
Source§

fn schema(&self) -> Option<Schema>

The schema governing this document, if the backend knows one. The backend is exactly the component that knows where the document came from, so it is the right place to know what governs it — a prov backend returns the schema resolved from the workspace config; a standalone config file has none. Defaulted to None so existing backends are unaffected.

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = !

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, !>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.