Table of Contents

SquidStd.Templating

Templating for SquidStd, backed by Scriban. ITemplateRenderer renders ad-hoc template strings and named templates (compiled and cached), and auto-loads every templates/**/*.tmpl file at startup by relative path without extension (emails/welcome.tmplemails/welcome). Scriban default member naming applies (snake_case): a UserName property is {{ user.user_name }}.

Install

dotnet add package SquidStd.Templating

Usage

using DryIoc;
using SquidStd.Templating.Extensions;
using SquidStd.Templating.Interfaces;

container.AddTemplating(); // after the bootstrap Create (the shared DirectoriesConfig comes from the config core)

var renderer = container.Resolve<ITemplateRenderer>();

// ad-hoc
var hi = await renderer.RenderAsync("Hi {{ user.name }}!", new { User = new { Name = "squid" } });

// named (registered manually or auto-loaded from templates/)
renderer.Register("welcome", "Welcome {{ user.name }}");
var welcome = await renderer.RenderByNameAsync("welcome", new { User = new { Name = "squid" } });

Key types

Type Purpose
ITemplateRenderer Render ad-hoc and named templates.
ScribanTemplateRenderer Scriban implementation; compiles/caches named templates and auto-loads templates/*.tmpl.
TemplateException Raised on parse/render failures.
TemplatingRegistrationExtensions AddTemplating(...) registration.

License

MIT - part of SquidStd.