Hwaro::Core::Build::TemplateDeps
Inherits Reference / Object
Constants
Per-tag argument shapes where the template name is a plain string
literal. The literal must account for the ENTIRE argument (modulo
the tag's own keywords) — a leading literal in an expression like
{% include "partials/" ~ name %} must NOT count as static.
{% extends "base.html" %}, {% include 'partials/head.html' %},
{% import "macros.html" as m %}, {% from "macros.html" import x %}
\b\s* (not \s+) after the keyword: Crinja happily parses
{% include"x.html" %} with no space, and a tag this regex fails
to see entirely never reaches the safe @dynamic = true fallback —
it just silently drops the dependency edge and the included
template's edits stop re-rendering its dependents during serve.
Constructors
Instance methods
Transitive dependency set of a template, including itself. Unknown references stay in the set: they hash as "absent", so a template appearing later changes the closure hash and re-renders.
Stable fingerprint of everything that influences a page's rendered template output: the entry template's closure plus the closures of every shortcode template the page content invokes.
Memoized: sites have a handful of distinct (entry template, shortcode set) combinations but compute this once or twice per page on cached builds. The memo lives for this instance's lifetime, which is exactly one template (re)load — invalidation is automatic.
All templates whose closure intersects changed — i.e. every
template that (transitively) extends, includes, or imports one of
the changed templates, plus the changed templates themselves.
True when any reference could not be resolved statically — the graph is incomplete and callers must treat every template change as affecting every page.
Templates the page's content references via shortcode calls.