use alloc::vec::Vec;
use vize_davinci::folio::{Folio, FolioError, FolioMode};
use vize_davinci::key::{KeySink, KeyedArtifact, schema};
use vize_davinci::stage::Stage;
mod owned;
mod parse;
mod print;
mod provenance;
pub use owned::{
FolioAttribute, FolioBind, FolioBinding, FolioBranch, FolioComment, FolioComponent,
FolioContract, FolioElement, FolioExpr, FolioFor, FolioForBinding, FolioIf, FolioInterpolation,
FolioModel, FolioName, FolioOn, FolioOp, FolioSlot, FolioSlotContent, FolioText, FolioVueCloak,
FolioVueCssBind, FolioVueDirective, FolioVueHtml, FolioVueMemo, FolioVueOnce, FolioVueShow,
FolioVueSlotScope, FolioVueSync, FolioVueText,
};
pub use provenance::{FolioProvenance, L2ProvenanceFolio};
#[doc(alias = "DisegnoFolio")]
#[derive(Debug, Clone, Default, PartialEq, Eq)]
pub struct L2Folio {
pub ops: Vec<FolioOp>,
}
pub type DisegnoFolio = L2Folio;
impl Folio for L2Folio {
fn print<W: core::fmt::Write>(&self, w: &mut W, mode: FolioMode) -> core::fmt::Result {
print::print(self, w, print::Style::folio(mode))
}
fn parse(input: &str) -> Result<Self, FolioError> {
parse::parse(input)
}
}
impl KeyedArtifact for L2Folio {
const STAGE: Stage = Stage::Semantic;
const SCHEMA_VERSION: u32 = schema::L2_PAGE;
fn feed_key(&self, sink: &mut KeySink) {
let style = print::Style::keyed(sink.block_start());
let _ = print::print(self, sink, style);
}
}