RenderedPage Pennington.Pipeline
One page in the projected corpus: route + TOC entry + origin metadata, plus the post-pipeline HTML and a parsed AngleSharp element to aggregate over.
Produced by ISiteProjection once per route per file-watch generation and shared across every corpus aggregator (search, llms.txt, link audit). Consumers pattern-match on Origin to recover front-matter / derived metadata where it exists. A nullOrigin means a Razor / programmatic page with no parsed item — the HTML is still available, just without front-matter context.
No parsed DOM is retained. Holding an AngleSharp IElement keeps its whole owning document alive, so a corpus-sized cache of them costs roughly ten times what Html costs — enough to exhaust memory on large sites. Anything derived from the DOM is either captured here as value data (Sections) or re-parsed from Html on demand by the consumer that needs it, which keeps the parse transient.
Properties
HasContentbool- Whether the page produced a content element;
falsefor endpoint pages. Htmlstring- Post-pipeline HTML of the selector-matched content element; empty for endpoint pages.
OriginPageOrigin?- Origin information (markdown / endpoint), or
nullfor Razor / programmatic pages. RouteContentRoute- Canonical route for the page.
SectionsIReadOnlyList<HeadingSection>- Heading-section split of the page content; empty for endpoint pages.
TocContentTocItem- TOC entry that drove the page's inclusion.
Constructors
RenderedPage
#public RenderedPage(ContentRoute Route, ContentTocItem Toc, PageOrigin? Origin, string Html, bool HasContent, IReadOnlyList<HeadingSection> Sections)
One page in the projected corpus: route + TOC entry + origin metadata, plus the post-pipeline HTML and a parsed AngleSharp element to aggregate over.
Produced by ISiteProjection once per route per file-watch generation and shared across every corpus aggregator (search, llms.txt, link audit). Consumers pattern-match on Origin to recover front-matter / derived metadata where it exists. A nullOrigin means a Razor / programmatic page with no parsed item — the HTML is still available, just without front-matter context.
No parsed DOM is retained. Holding an AngleSharp IElement keeps its whole owning document alive, so a corpus-sized cache of them costs roughly ten times what Html costs — enough to exhaust memory on large sites. Anything derived from the DOM is either captured here as value data (Sections) or re-parsed from Html on demand by the consumer that needs it, which keeps the parse transient.
Parameters
RouteContentRoute- Canonical route for the page.
TocContentTocItem- TOC entry that drove the page's inclusion.
OriginPageOrigin?- Origin information (markdown / endpoint), or
nullfor Razor / programmatic pages. Htmlstring- Post-pipeline HTML of the selector-matched content element; empty for endpoint pages.
HasContentbool- Whether the page produced a content element;
falsefor endpoint pages. SectionsIReadOnlyList<HeadingSection>- Heading-section split of the page content; empty for endpoint pages.
Pennington.Pipeline.RenderedPage
namespace Pennington.Pipeline;
/// One page in the projected corpus: route + TOC entry + origin metadata, plus the post-pipeline HTML and a parsed AngleSharp element to aggregate over. Produced by ISiteProjection once per route per file-watch generation and shared across every corpus aggregator (search, llms.txt, link audit). Consumers pattern-match on Origin to recover front-matter / derived metadata where it exists. A nullOrigin means a Razor / programmatic page with no parsed item — the HTML is still available, just without front-matter context.No parsed DOM is retained. Holding an AngleSharp IElement keeps its whole owning document alive, so a corpus-sized cache of them costs roughly ten times what Html costs — enough to exhaust memory on large sites. Anything derived from the DOM is either captured here as value data (Sections) or re-parsed from Html on demand by the consumer that needs it, which keeps the parse transient.
public record RenderedPage
{
/// Whether the page produced a content element; false for endpoint pages.
public bool HasContent { get; set; }
/// Post-pipeline HTML of the selector-matched content element; empty for endpoint pages.
public string Html { get; set; }
/// Origin information (markdown / endpoint), or null for Razor / programmatic pages.
public PageOrigin? Origin { get; set; }
/// One page in the projected corpus: route + TOC entry + origin metadata, plus the post-pipeline HTML and a parsed AngleSharp element to aggregate over. Produced by ISiteProjection once per route per file-watch generation and shared across every corpus aggregator (search, llms.txt, link audit). Consumers pattern-match on Origin to recover front-matter / derived metadata where it exists. A nullOrigin means a Razor / programmatic page with no parsed item — the HTML is still available, just without front-matter context.No parsed DOM is retained. Holding an AngleSharp IElement keeps its whole owning document alive, so a corpus-sized cache of them costs roughly ten times what Html costs — enough to exhaust memory on large sites. Anything derived from the DOM is either captured here as value data (Sections) or re-parsed from Html on demand by the consumer that needs it, which keeps the parse transient.
public RenderedPage(ContentRoute Route, ContentTocItem Toc, PageOrigin? Origin, string Html, bool HasContent, IReadOnlyList<HeadingSection> Sections)
;
/// Canonical route for the page.
public ContentRoute Route { get; set; }
/// Heading-section split of the page content; empty for endpoint pages.
public IReadOnlyList<HeadingSection> Sections { get; set; }
/// TOC entry that drove the page's inclusion.
public ContentTocItem Toc { get; set; }
}