RawFormatter 0.5.2
If you want complex and sophisticated string template processing and interpolation, try Scriban.
dotnet add package RawFormatter --version 0.5.2
NuGet\Install-Package RawFormatter -Version 0.5.2
<PackageReference Include="RawFormatter" Version="0.5.2" />
paket add RawFormatter --version 0.5.2
#r "nuget: RawFormatter, 0.5.2"
// Install RawFormatter as a Cake Addin #addin nuget:?package=RawFormatter&version=0.5.2 // Install RawFormatter as a Cake Tool #tool nuget:?package=RawFormatter&version=0.5.2
RawFormatter
A library that combines raw string literals and string interpolation introduced in C# 11, compatible with .NET Standard 2.0, to implement fast-acting template features.
Minimum Requirements
- Requires a platform with .NET Standard 2.0 or later, and Windows Vista+, Windows Server 2008+
- Supported .NET Version: .NET Core 2.0+, .NET 5+, .NET Framework 4.6.1+, Mono 5.4+, UWP 10.0.16299+, Unity 2018.1+
Breaking Change
From 0.5.1 to 0.5.2
- Considering that the type name
Switch
may exist among namespaces linked by implicit reference in the BCL, change the type name toSelect
.
How to use
Use with conditional block
Initialize and pass instances of the If
, For
, Select
and ForEach
classes in the string interpolation interval. At this point, you can use collection initializers to implement a simplified syntax.
using RawFormatter;
...
var @namespace = "Hello";
var isEnumType = DateTime.Now.Second % 2 == 0;
var typeName = "Candidates";
var memberType = "int";
var cases = DateTime.Now.Second % 3;
var members = Enumerable.Range(0, 5).Select(x => new KeyValuePair<string, int>($"Member{x}", x)).ToArray();
var fragment =
$$"""
namespace {{@namespace}}
{
using System;
{{new For(5) { (int i) => $"/* forloop / {i} time(s) */" } }}
/*
{{new Select(cases)
{
{ 3, (int num) => $"select case / {num} with 3" },
{ Select.Else, (int num) => $"select default / {num}" }
}
}}
*/
{{new If(isEnumType)
{
$$"""
public enum {{typeName}} : {{memberType}}
{
{{new ForEach(members) {
(KeyValuePair<string, int> item) => $$"""
{{item.Key}} = {{item.Value}}, /*if - true*/ /* foreach */
"""
}}}
}
""",
$$"""
public static class {{typeName}}
{
{{new ForEach(members) {
(KeyValuePair<string, int> item) => $$"""
// if - false && foreach
public static readonly {{item.Value.GetType()}} {{item.Key}} = {{item.Value}};
"""
}}}
}
""",
}}}
}
""";
Console.Out.WriteLine(fragment);
License
This library follows Apache-2.0 license. See LICENSE file for more information.
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- No dependencies.
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 |
---|