Published
Oct 17, 2023
3y ago
Total Downloads
11.5K
11,527
Install
dotnet add package Trulla --version 1.4.0-preview01
| Product | Versions |
|---|---|
| .NET Standard |
README
Trulla Templates
...it's like Handlebars or Mustache templates, but statically typed!
Status: Stable
The Trulla Approcah
- Provide a text template with:
- template parameters
- iterations
- conditionals
- A model type is infered from a given template.
- An instance of the model is provided by the user for rendering the final template.
Examples and Usage
- C# usage via Source Generators: Go to the C# Documentation
- F# usage via Type Providers: Go to the F# Documentation
General Template Syntax
Have a look at the tests for more samples!
for loops (with separator)
- This will render 'abc' for given chars = ["a"; "b"; "c"]:
{{for c in chars}}{{c}}{{end}}
- With a given separator between items, this will render 'a;b;c' for given chars = ["a"; "b"; "c"]:
{{for x in numbers|;}}{{x.id}}{{end}}
if/else
- This will print "Order is active." or "Order is closed." depending on the value of order.isActive:
- The
elsepart is optional.
Order is {{if order.isActive}}active{{else}}closed{{end}}.
How it works internals
Trulla is implemented in F#. It basically contains everything a "real" language has, like
- a parser
- an untyped AST
- type inference with a solver
- a typed AST
- code generation
If you want to know more, have a look at the (Internals)[./src/docs/Internals.md].
Changes from Previous Version
v1.3.0v1.4.0-preview01
Removed Dependencies
FParsec(.NETStandard2.0)
Adoption Assessment
Assess this package against its supported frameworks, license, maintenance signals and dependency graph before making it a project standard.
This version is marked prerelease. Validate its API and upgrade path before production use.Compatibility metadata lists 1 target framework; confirm the exact target used by your application.
Related Guides & Workflows
Learn how to evaluate, integrate, or audit this package in your .NET project.