Trulla.SourceGenerator
1.4.0-preview01
See the version list below for details.
dotnet add package Trulla.SourceGenerator --version 1.4.0-preview01
NuGet\Install-Package Trulla.SourceGenerator -Version 1.4.0-preview01
<PackageReference Include="Trulla.SourceGenerator" Version="1.4.0-preview01" />
paket add Trulla.SourceGenerator --version 1.4.0-preview01
#r "nuget: Trulla.SourceGenerator, 1.4.0-preview01"
// Install Trulla.SourceGenerator as a Cake Addin #addin nuget:?package=Trulla.SourceGenerator&version=1.4.0-preview01&prerelease // Install Trulla.SourceGenerator as a Cake Tool #tool nuget:?package=Trulla.SourceGenerator&version=1.4.0-preview01&prerelease
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
else
part 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].
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis (>= 4.7.0)
- Trulla.SourceGenerator.Core (>= 1.4.0-preview01)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
1.4.2 | 5,052 | 10/20/2023 |
1.4.1 | 1,266 | 10/18/2023 |
1.4.0-preview01 | 1,359 | 10/17/2023 |
1.3.0 | 1,429 | 9/18/2023 |
1.3.0-preview9 | 1,239 | 9/17/2023 |
1.3.0-preview8 | 1,289 | 9/17/2023 |
1.3.0-preview7 | 1,440 | 9/15/2023 |
1.3.0-preview6 | 1,450 | 9/15/2023 |
1.3.0-preview5 | 1,415 | 9/15/2023 |
1.3.0-preview4 | 1,453 | 9/15/2023 |
1.3.0-preview2 | 1,249 | 9/15/2023 |
1.3.0-preview18 | 1,434 | 9/18/2023 |
1.3.0-preview17 | 1,490 | 9/18/2023 |
1.3.0-preview16 | 1,180 | 9/18/2023 |
1.3.0-preview15 | 1,551 | 9/18/2023 |
1.3.0-preview14 | 1,419 | 9/18/2023 |
1.3.0-preview13 | 1,393 | 9/18/2023 |
1.3.0-preview12 | 1,464 | 9/18/2023 |
1.3.0-preview11 | 1,315 | 9/17/2023 |
1.3.0-preview10 | 1,410 | 9/17/2023 |
1.4.0
- Using TheBlunt instead of FParsec
1.3.0
- Added C# source generator
1.2.1
- Added optional separator to `for` loop
1.1.1
- Removed "experimental" notice
1.1.0
- Revisiting / renaming to "Trulla"
1.0.1
#5: Don't ref FSharp.Core 7
#6: Stable ordering of ctor params
1.0.0
Initial publish.