use std::path::{Path, PathBuf};
use anyhow::{bail, Result};
use super::{doc::WispDoc, Renderer};
pub mod typst;
pub struct RenderRequest<'a> {
pub doc: &'a WispDoc,
pub template_dir: &'a Path,
pub typst_source: &'a str,
pub output: &'a Path,
}
pub struct RenderResult {
pub pages: Option<u32>,
pub wrote_pdf: bool,
pub intermediate: Option<PathBuf>,
}
pub fn render(renderer: Renderer, req: &RenderRequest) -> Result<RenderResult> {
match renderer {
Renderer::Typst => typst::render(req),
Renderer::Weasyprint | Renderer::Chromium => bail!(
"the `{renderer}` HTML render backend is not wired yet — use the default \
`typst` renderer (it needs no external toolchain)"
),
}
}