Skip to main content

JKToolKit.TemplatePropertyGenerator by Jonas Kamsker

Nuget / site data

Nuget GitHub last commit GitHub Repo stars

Details

Info

info

Name: JKToolKit.TemplatePropertyGenerator

Generates strongly typed stringformatters based on stringformats.

Author: Jonas Kamsker

NuGet: https://www.nuget.org/packages/JKToolKit.TemplatePropertyGenerator/

You can find more details at https://github.com/JKamsker/JKToolKit.TemplatePropertyGenerator

Source : https://github.com/JKamsker/JKToolKit.TemplatePropertyGenerator

Original Readme

note

Overview

TemplatePropertyGenerator is a C# source generator that creates strongly-typed template properties from annotated classes. This allows for easy and safe string formatting by generating classes with methods to format predefined templates.

Features

  • Define template properties with format strings using attributes.
  • Auto-generate classes with methods to format the strings.
  • Supports FormattableString for more complex formatting needs.

How to Use

  1. Install the NuGet package:

    Ensure you have the NuGet package installed in your project. If not, you can install it via the NuGet Package Manager or the .NET CLI.

    dotnet add package JKToolKit.TemplatePropertyGenerator
  2. Define your templates:

    Use the TemplateProperty attribute to define your template properties in a partial class. The attribute takes the name of the property and the format string as parameters.

    [TemplateProperty("Hello", "Hello {value}, {value}!")]
    [TemplateProperty("FooBar", "Foo {value}, Bar {value}")]
    public static partial class Consts
    {
    }
  3. Use the generated code:

    Once the generator runs, it will produce a class with properties and methods to format your strings. You can use these in your code as shown below:

    private static void Main(string[] args)
    {
    Console.WriteLine(Consts.Hello.Template); // Output: Hello {value}, {value}!
    Console.WriteLine(Consts.Hello.Format("World")); // Output: Hello World, World!
    Console.WriteLine(Consts.FooBar.Format("Foo1", "Bar1")); // Output: Foo Foo1, Bar Bar1
    }

Contributing

Contributions are welcome! Please feel free to submit a pull request or open an issue to discuss any changes or improvements.

License

This project is licensed under the MIT License .

Acknowledgements

About

note

String templating for a class

How to use

Example ( source csproj, source files )

This is the CSharp Project that references JKToolKit.TemplatePropertyGenerator

<Project Sdk="Microsoft.NET.Sdk">

<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net8.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
</PropertyGroup>

<ItemGroup>
<PackageReference Include="JKToolKit.TemplatePropertyGenerator" Version="0.0.4" />
</ItemGroup>
<PropertyGroup>
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
<CompilerGeneratedFilesOutputPath>$(BaseIntermediateOutputPath)\GX</CompilerGeneratedFilesOutputPath>
</PropertyGroup>
</Project>

Generated Files

Those are taken from $(BaseIntermediateOutputPath)\GX

global using JKToolKit.TemplatePropertyGenerator.Attributes;

using System;

namespace JKToolKit.TemplatePropertyGenerator.Attributes;

[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
internal class TemplatePropertyAttribute : Attribute
{
public string Name { get; }
public string Format { get; }

public TemplatePropertyAttribute(string name, string format)
{
Name = name;
Format = format;
}
}

Usefull

Download Example (.NET C# )

Share JKToolKit.TemplatePropertyGenerator

https://ignatandrei.github.io/RSCG_Examples/v2/docs/JKToolKit.TemplatePropertyGenerator

In the same category (Templating) - 9 other generators

Gobie

InterceptorTemplate

Microsoft.NET.Sdk.Razor.SourceGenerators

Minerals.AutoMixins

MorrisMoxy

RazorBlade

RSCG_IFormattable

RSCG_Templating

spreadcheetah