This documentation is also published as Markdown for efficient machine reading: the whole site is indexed at /llms.txt, and every page has a clean Markdown copy at the same URL with .md appended. These are generated from the same source and cost far fewer tokens to read than this rendered HTML.

Skip to main content Skip to navigation

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

HasContent bool
Whether the page produced a content element; false for endpoint pages.
Html string
Post-pipeline HTML of the selector-matched content element; empty for endpoint pages.
Origin PageOrigin?
Origin information (markdown / endpoint), or null for Razor / programmatic pages.
Route ContentRoute
Canonical route for the page.
Sections IReadOnlyList<HeadingSection>
Heading-section split of the page content; empty for endpoint pages.
Toc ContentTocItem
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

Route ContentRoute
Canonical route for the page.
Toc ContentTocItem
TOC entry that drove the page's inclusion.
Origin PageOrigin?
Origin information (markdown / endpoint), or null for Razor / programmatic pages.
Html string
Post-pipeline HTML of the selector-matched content element; empty for endpoint pages.
HasContent bool
Whether the page produced a content element; false for endpoint pages.
Sections IReadOnlyList<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; }
}