Skip to main content

ContentFormat

Enum ContentFormat 

Source
pub enum ContentFormat {
    Markdown,
    Djot,
    Html,
}
Expand description

Which body-prose grammar a document is written in. Maps to a twig twig::Format one-to-one; kept as prov’s own type so callers can name a format without depending on twig directly, e.g. for the content_format config knob.

Variants§

§

Markdown

§

Djot

§

Html

Implementations§

Source§

impl ContentFormat

Source

pub fn from_extension(path: &Path) -> Option<Self>

Infer the content format from a path’s extension. None for anything unrecognized (including config extensions, which have no body).

Source

pub fn extension(self) -> &'static str

The canonical file extension for this grammar (no leading dot) — what a freshly authored document’s filename gets when prov derives a name from a title (prov new "A Title"). The inverse of the primary from_extension spelling.

Source

pub fn as_config_str(self) -> &'static str

The content_format config-document spelling for this grammar.

Source

pub fn from_config_str(value: &str) -> Option<Self>

Parse a content_format config value. Unknown → None (keep default).

Source

pub fn is_lossy_to(self, other: Self) -> bool

Whether transcoding between self and other loses authored structure badly enough to need an explicit --force.

HTML is the lossy endpoint, in both directions. Into HTML is a one-way trip: the result is a rendering, and the Markdown or Djot the author wrote — the #, the _emph_, the fence — is gone from the file, recoverable only by re-deriving a guess at it. Out of HTML is that trip run backwards, and everything HTML carries that a prose grammar has no spelling for (attributes, nested inline markup, whole elements) survives only as a raw-HTML escape, or not at all.

Markdown ↔ Djot is deliberately not gated: twig re-spells emphasis, headings and raw HTML into the target grammar and carries footnotes, tables, code fences and [[wikilinks]] through intact. The one wart is a reference-style link, which is inlined ([x][ref][x](notes/b.md)), leaving its now-unused [ref]: definition behind — untidy, but nothing a reader loses.

Trait Implementations§

Source§

impl Clone for ContentFormat

Source§

fn clone(&self) -> ContentFormat

Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
Source§

impl Copy for ContentFormat

Source§

impl Debug for ContentFormat

Source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
Source§

impl Eq for ContentFormat

Source§

impl PartialEq for ContentFormat

Source§

fn eq(&self, other: &ContentFormat) -> bool

Equality operator ==. Read more
1.0.0 (const: unstable) · Source§

fn ne(&self, other: &Rhs) -> bool

Inequality operator !=. Read more
Source§

impl StructuralPartialEq for ContentFormat

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> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Checks if this value is equivalent to the given key. Read more
Source§

impl<Q, K> Equivalent<K> for Q
where Q: Eq + ?Sized, K: Borrow<Q> + ?Sized,

Source§

fn equivalent(&self, key: &K) -> bool

Compare self to key and return true if they are equal.
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> ToOwned for T
where T: Clone,

Source§

type Owned = T

The resulting type after obtaining ownership.
Source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
Source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
Source§

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

Source§

type Error = Infallible

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

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

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.