summaryrefslogtreecommitdiff
path: root/Justfile
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-06-16 18:00:47 +0300
committerPaul Buetow <paul@buetow.org>2026-06-16 18:00:47 +0300
commitcd7cf797bc633700c5ee7e986077f366c000f0b9 (patch)
treedb7bda7af7a71359cba6bc6c0557552e8659fe8c /Justfile
parentb58d9b3f656f2e6be803a1d2d567a066bb8b902a (diff)
hn0 make template render kind dispatch extensible (OCP)
Replace the hardcoded `case "$kind"` block in prepare_template_render_vars with a name-based registration/dispatch pattern. Each render field kind is now implemented by one prepare_template_render_var__<kind> handler; the core loop resolves the handler by name (prepare_template_render_var__$kind), verifies it exists via `declare -F`, calls it with a uniform signature (out_nameref, context_name, source_name), and reports a config_error for an unknown kind (no matching handler) -- preserving the previous error behavior. Adding a new kind now means defining a new handler function only; the loop never changes. Handlers cover all existing kinds: context_css, context_html, context_raw, current_date_html, config_html (keeps its inner source_name dispatch for HEIGHT/MAXPREVIEWS/TITLE/etc. and the same :- defaults), original_basepath_is_set, preview_num_next_html, preview_num_prev_html, and tarball_include. Escaping and defaults are unchanged, so rendered output is byte-identical (verified by diff -r of a full --generate album, before vs after). Add test_template_render_var_dispatch_is_extensible proving every declared kind resolves to a handler and that a newly defined handler is dispatched without touching the core loop (OCP). just test, just shellcheck, just check-generated and git diff --check all pass. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'Justfile')
0 files changed, 0 insertions, 0 deletions