DocShell.Presentation.SiteProjector (DocShell v0.5.0)

Copy Markdown View Source

Turns validated documentation collections into a renderer-neutral site.

The host owns the choices that make one site different from another: title, taxonomy, routes, navigation, visibility, locales, and redirects. It supplies those choices through DocShell.Presentation.SiteSource. The projector then applies the portable guarantees shared by every renderer: source identity, finite limits, deterministic anchors and digests, a closed internal-link graph, reading order, search records, and renderer capability requirements.

Projection performs no rendering, filesystem writes, network requests, or authorization. The result is a DocShell.Presentation.Site value that a hosted renderer or DocShell.Presentation.StaticExporter can consume without reopening the source corpora.

Summary

Functions

Projects loaded collections through a host site source.

Functions

project(opts)

@spec project(keyword()) :: {:ok, DocShell.Presentation.Site.t()} | {:error, term()}

Projects loaded collections through a host site source.

The required :collections option contains values returned by DocShell.Generate.Collection.load/1. :source defaults to DocShell.Presentation.SiteSource.Default; a host can provide another module to choose routes and taxonomy. Projection is deterministic except for the generated snapshot identity, which callers may set with :generation_id.

Returns a complete doc-shell-site/v1 value or a tagged error before any rendering or publication occurs.