ITemplateFormats
ITemplateFormats is a table that manages ITemplateFormats.
/// <summary>Configurable table of template formats.</summary>
public interface ITemplateFormats
{
/// <summary>List of all formats, excluding detect format</summary>
ITemplateFormat[] AllFormats { get; set; }
/// <summary>Format by name, including <see cref="Detect"/>.</summary>
IProvider<string, ITemplateFormat> ByName { get; set; }
/// <summary>Auto-detect format</summary>
ITemplateFormat Detect { get; set; }
}
TemplateFormatsBase is simple implementation where each property must be manually assigned.
// Create template formats table
TemplateFormatsBase templateFormats = new TemplateFormatsBase();
// Assign all
templateFormats.AllFormats = new ITemplateFormat[] { BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric };
templateFormats.Detect = new DetectTemplateFormat("Detect", templateFormats.AllFormats);
templateFormats.ByName = TemplateFormatsBase.CreateByNameProvider(templateFormats).Cached();
// Make immutable
templateFormats.SetReadOnly();
TemplateFormats is easier-to-use implementation where .AllFormats is the only property that needs to be assigned. AllFormats can be reassigned later, provided it's not in read-only state. Formats can be assigned at construction. .ByName and .Detect are automatically created, cannot be setted, and getter always return the same object references, which are automatically kept up-to-date.
ITemplateFormats templateFormats = new TemplateFormats(BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric).SetReadOnly();
TemplateFormats.Add(templateformat) adds a format thread-safely.
TemplateFormats templateFormats = new TemplateFormats()
.Add(BraceTemplateFormat.AlphaNumeric)
.Add(BraceTemplateFormat.Numeric)
.SetReadOnly();
.ByName returns format by its name.
ITemplateFormat templateFormat = templateFormats.ByName["BraceNumeric"];
.Detect is template format that detects best matching format.
// Create format table
ITemplateFormats templateFormats = new TemplateFormats(BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric).SetReadOnly();
// Parse template into breakdown
ITemplateBreakdown templateText = templateFormats.Detect.Breakdown["Hello {user}, welcome to {location}."];
Full Example
Full example
using System.Collections.Concurrent;
using Avalanche.Template;
using Avalanche.Utilities;
using Avalanche.Utilities.Provider;
public class itemplateformats
{
public static void Run()
{
{
// <01>
// Create template formats table
TemplateFormatsBase templateFormats = new TemplateFormatsBase();
// Assign all
templateFormats.AllFormats = new ITemplateFormat[] { BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric };
templateFormats.Detect = new DetectTemplateFormat("Detect", templateFormats.AllFormats);
templateFormats.ByName = TemplateFormatsBase.CreateByNameProvider(templateFormats).Cached();
// Make immutable
templateFormats.SetReadOnly();
// </01>
var format = templateFormats.ByName["Detect"];
format = templateFormats.ByName["BraceNumeric"];
}
{
// <02>
ITemplateFormats templateFormats = new TemplateFormats(BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric).SetReadOnly();
// </02>
var format = templateFormats.ByName["Detect"];
}
{
// <03>
TemplateFormats templateFormats = new TemplateFormats()
.Add(BraceTemplateFormat.AlphaNumeric)
.Add(BraceTemplateFormat.Numeric)
.SetReadOnly();
// </03>
var format = templateFormats.ByName["Detect"];
}
{
ITemplateFormats templateFormats = new TemplateFormats(BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric).SetReadOnly();
// <11>
ITemplateFormat templateFormat = templateFormats.ByName["BraceNumeric"];
// </11>
var format = templateFormats.ByName["Detect"];
}
{
// <12>
// Create format table
ITemplateFormats templateFormats = new TemplateFormats(BraceTemplateFormat.AlphaNumeric, BraceTemplateFormat.Numeric).SetReadOnly();
// Parse template into breakdown
ITemplateBreakdown templateText = templateFormats.Detect.Breakdown["Hello {user}, welcome to {location}."];
// </12>
var format = templateFormats.ByName["Detect"];
}
}
}