Moved all extension methods into extension blocks (#1155)

This commit is contained in:
Thorsten Sommer authored and GitHub committed 2026-11-04 10:46:18 +01:00
1 parent acc7d09fa2
commit c0a75f39ac
138 files changed
+5884 -4954

No files matched your search

@@ -4,63 +4,66 @@ public static class AssistantComponentTypeExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(AssistantComponentTypeExtensions).Namespace, nameof(AssistantComponentTypeExtensions));
public static string GetDisplayName(this AssistantComponentType type) => type switch
extension(AssistantComponentType type)
{
AssistantComponentType.FORM => TB("Root"),
AssistantComponentType.TEXT_AREA => TB("Text Area"),
AssistantComponentType.BUTTON => TB("Button"),
AssistantComponentType.BUTTON_GROUP => TB("Button group"),
AssistantComponentType.DROPDOWN => TB("Dropdown"),
AssistantComponentType.PROVIDER_SELECTION => TB("Provider Selection"),
AssistantComponentType.PROFILE_SELECTION => TB("Profile Selection"),
AssistantComponentType.SWITCH => TB("Switch"),
AssistantComponentType.HEADING => TB("Heading"),
AssistantComponentType.TEXT => TB("Text"),
AssistantComponentType.LIST => TB("List"),
AssistantComponentType.WEB_CONTENT_READER => TB("Web Content Reader"),
AssistantComponentType.FILE_CONTENT_READER => TB("File Content Reader"),
AssistantComponentType.FILE_ATTACHMENTS => TB("File Attachments"),
AssistantComponentType.IMAGE => TB("Image"),
AssistantComponentType.COLOR_PICKER => TB("Color Selection"),
AssistantComponentType.DATE_PICKER => TB("Date Selection"),
AssistantComponentType.DATE_RANGE_PICKER => TB("Date Range Selection"),
AssistantComponentType.TIME_PICKER => TB("Time Selection"),
AssistantComponentType.LAYOUT_ITEM => TB("Grid Item"),
AssistantComponentType.LAYOUT_GRID => TB("Grid"),
AssistantComponentType.LAYOUT_PAPER => TB("Container"),
AssistantComponentType.LAYOUT_STACK => TB("Stack"),
AssistantComponentType.LAYOUT_ACCORDION => TB("Accordion"),
AssistantComponentType.LAYOUT_ACCORDION_SECTION => TB("Accordion Section"),
_ => TB("Unknown Element")
};
public static string GetIcon(this AssistantComponentType type) => type switch
{
AssistantComponentType.BUTTON => MudBlazor.Icons.Material.Filled.AdsClick,
AssistantComponentType.BUTTON_GROUP => MudBlazor.Icons.Material.Filled.LinearScale,
AssistantComponentType.DROPDOWN => MudBlazor.Icons.Material.Filled.Rule,
AssistantComponentType.PROVIDER_SELECTION => MudBlazor.Icons.Material.Filled.Memory,
AssistantComponentType.PROFILE_SELECTION => MudBlazor.Icons.Material.Filled.Badge,
AssistantComponentType.SWITCH => MudBlazor.Icons.Material.Filled.ToggleOn,
AssistantComponentType.HEADING => MudBlazor.Icons.Material.Filled.Title,
AssistantComponentType.TEXT => MudBlazor.Icons.Material.Filled.TextFields,
AssistantComponentType.TEXT_AREA => MudBlazor.Icons.Material.Filled.Wysiwyg,
AssistantComponentType.LIST => MudBlazor.Icons.Material.Filled.List,
AssistantComponentType.WEB_CONTENT_READER => MudBlazor.Icons.Material.Filled.Public,
AssistantComponentType.FILE_CONTENT_READER => MudBlazor.Icons.Material.Filled.AttachFile,
AssistantComponentType.FILE_ATTACHMENTS => MudBlazor.Icons.Material.Filled.AttachFile,
AssistantComponentType.IMAGE => MudBlazor.Icons.Material.Filled.Image,
AssistantComponentType.COLOR_PICKER => MudBlazor.Icons.Material.Filled.Palette,
AssistantComponentType.DATE_PICKER => MudBlazor.Icons.Material.Filled.CalendarMonth,
AssistantComponentType.DATE_RANGE_PICKER => MudBlazor.Icons.Material.Filled.DateRange,
AssistantComponentType.TIME_PICKER => MudBlazor.Icons.Material.Filled.Schedule,
AssistantComponentType.LAYOUT_ITEM => MudBlazor.Icons.Material.Filled.DashboardCustomize,
AssistantComponentType.LAYOUT_GRID => MudBlazor.Icons.Material.Filled.GridView,
AssistantComponentType.LAYOUT_PAPER => MudBlazor.Icons.Material.Filled.Inbox,
AssistantComponentType.LAYOUT_STACK => MudBlazor.Icons.Material.Filled.Layers,
AssistantComponentType.LAYOUT_ACCORDION => MudBlazor.Icons.Material.Filled.CalendarViewDay,
AssistantComponentType.LAYOUT_ACCORDION_SECTION => MudBlazor.Icons.Material.Filled.HorizontalSplit,
AssistantComponentType.FORM => MudBlazor.Icons.Material.Filled.AccountTree,
_ => MudBlazor.Icons.Material.Filled.AccountTree,
};
public string GetDisplayName() => type switch
{
AssistantComponentType.FORM => TB("Root"),
AssistantComponentType.TEXT_AREA => TB("Text Area"),
AssistantComponentType.BUTTON => TB("Button"),
AssistantComponentType.BUTTON_GROUP => TB("Button group"),
AssistantComponentType.DROPDOWN => TB("Dropdown"),
AssistantComponentType.PROVIDER_SELECTION => TB("Provider Selection"),
AssistantComponentType.PROFILE_SELECTION => TB("Profile Selection"),
AssistantComponentType.SWITCH => TB("Switch"),
AssistantComponentType.HEADING => TB("Heading"),
AssistantComponentType.TEXT => TB("Text"),
AssistantComponentType.LIST => TB("List"),
AssistantComponentType.WEB_CONTENT_READER => TB("Web Content Reader"),
AssistantComponentType.FILE_CONTENT_READER => TB("File Content Reader"),
AssistantComponentType.FILE_ATTACHMENTS => TB("File Attachments"),
AssistantComponentType.IMAGE => TB("Image"),
AssistantComponentType.COLOR_PICKER => TB("Color Selection"),
AssistantComponentType.DATE_PICKER => TB("Date Selection"),
AssistantComponentType.DATE_RANGE_PICKER => TB("Date Range Selection"),
AssistantComponentType.TIME_PICKER => TB("Time Selection"),
AssistantComponentType.LAYOUT_ITEM => TB("Grid Item"),
AssistantComponentType.LAYOUT_GRID => TB("Grid"),
AssistantComponentType.LAYOUT_PAPER => TB("Container"),
AssistantComponentType.LAYOUT_STACK => TB("Stack"),
AssistantComponentType.LAYOUT_ACCORDION => TB("Accordion"),
AssistantComponentType.LAYOUT_ACCORDION_SECTION => TB("Accordion Section"),
_ => TB("Unknown Element")
};
public string GetIcon() => type switch
{
AssistantComponentType.BUTTON => MudBlazor.Icons.Material.Filled.AdsClick,
AssistantComponentType.BUTTON_GROUP => MudBlazor.Icons.Material.Filled.LinearScale,
AssistantComponentType.DROPDOWN => MudBlazor.Icons.Material.Filled.Rule,
AssistantComponentType.PROVIDER_SELECTION => MudBlazor.Icons.Material.Filled.Memory,
AssistantComponentType.PROFILE_SELECTION => MudBlazor.Icons.Material.Filled.Badge,
AssistantComponentType.SWITCH => MudBlazor.Icons.Material.Filled.ToggleOn,
AssistantComponentType.HEADING => MudBlazor.Icons.Material.Filled.Title,
AssistantComponentType.TEXT => MudBlazor.Icons.Material.Filled.TextFields,
AssistantComponentType.TEXT_AREA => MudBlazor.Icons.Material.Filled.Wysiwyg,
AssistantComponentType.LIST => MudBlazor.Icons.Material.Filled.List,
AssistantComponentType.WEB_CONTENT_READER => MudBlazor.Icons.Material.Filled.Public,
AssistantComponentType.FILE_CONTENT_READER => MudBlazor.Icons.Material.Filled.AttachFile,
AssistantComponentType.FILE_ATTACHMENTS => MudBlazor.Icons.Material.Filled.AttachFile,
AssistantComponentType.IMAGE => MudBlazor.Icons.Material.Filled.Image,
AssistantComponentType.COLOR_PICKER => MudBlazor.Icons.Material.Filled.Palette,
AssistantComponentType.DATE_PICKER => MudBlazor.Icons.Material.Filled.CalendarMonth,
AssistantComponentType.DATE_RANGE_PICKER => MudBlazor.Icons.Material.Filled.DateRange,
AssistantComponentType.TIME_PICKER => MudBlazor.Icons.Material.Filled.Schedule,
AssistantComponentType.LAYOUT_ITEM => MudBlazor.Icons.Material.Filled.DashboardCustomize,
AssistantComponentType.LAYOUT_GRID => MudBlazor.Icons.Material.Filled.GridView,
AssistantComponentType.LAYOUT_PAPER => MudBlazor.Icons.Material.Filled.Inbox,
AssistantComponentType.LAYOUT_STACK => MudBlazor.Icons.Material.Filled.Layers,
AssistantComponentType.LAYOUT_ACCORDION => MudBlazor.Icons.Material.Filled.CalendarViewDay,
AssistantComponentType.LAYOUT_ACCORDION_SECTION => MudBlazor.Icons.Material.Filled.HorizontalSplit,
AssistantComponentType.FORM => MudBlazor.Icons.Material.Filled.AccountTree,
_ => MudBlazor.Icons.Material.Filled.AccountTree,
};
}
}
@@ -6,31 +6,34 @@ public static class ILangExtensions
{
private static readonly ILogger<ILang> LOGGER = Program.LOGGER_FACTORY.CreateLogger<ILang>();
public static string GetText(this ILang lang, ILanguagePlugin plugin, string fallbackEN, string? typeNamespace = null, string? typeName = null)
extension(ILang lang)
{
var type = lang.GetType();
typeName ??= type.Name;
typeNamespace ??= type.Namespace!;
// When the type's name ends with `1 or `2, etc. (i.e., generic classes), remove it:
if(typeName.Contains('`'))
typeName = typeName[..typeName.IndexOf('`')];
var ns = $"{typeNamespace}::{typeName}".ToUpperInvariant().Replace(".", "::");
var key = $"root::{ns}::T{fallbackEN.ToFNV32()}";
if(plugin is NoPluginLanguage)
return fallbackEN;
if(plugin.TryGetText(key, out var text, logWarning: false))
public string GetText(ILanguagePlugin plugin, string fallbackEN, string? typeNamespace = null, string? typeName = null)
{
if(string.IsNullOrWhiteSpace(text))
var type = lang.GetType();
typeName ??= type.Name;
typeNamespace ??= type.Namespace!;
// When the type's name ends with `1 or `2, etc. (i.e., generic classes), remove it:
if(typeName.Contains('`'))
typeName = typeName[..typeName.IndexOf('`')];
var ns = $"{typeNamespace}::{typeName}".ToUpperInvariant().Replace(".", "::");
var key = $"root::{ns}::T{fallbackEN.ToFNV32()}";
if(plugin is NoPluginLanguage)
return fallbackEN;
if(plugin.TryGetText(key, out var text, logWarning: false))
{
if(string.IsNullOrWhiteSpace(text))
return fallbackEN;
return text;
}
return text;
}
LOGGER.LogDebug($"Missing translation key '{key}' for content '{fallbackEN}'.");
return fallbackEN;
LOGGER.LogDebug($"Missing translation key '{key}' for content '{fallbackEN}'.");
return fallbackEN;
}
}
}
@@ -2,11 +2,14 @@ namespace AIStudio.Tools.PluginSystem;
public static class InternalPluginExtensions
{
public static InternalPluginData MetaData(this InternalPlugin plugin) => plugin switch
extension(InternalPlugin plugin)
{
InternalPlugin.LANGUAGE_EN_US => new (PluginType.LANGUAGE, new("97dfb1ba-50c4-4440-8dfa-6575daf543c8"), "en-us"),
InternalPlugin.LANGUAGE_DE_DE => new(PluginType.LANGUAGE, new("43065dbc-78d0-45b7-92be-f14c2926e2dc"), "de-de"),
public InternalPluginData MetaData() => plugin switch
{
InternalPlugin.LANGUAGE_EN_US => new (PluginType.LANGUAGE, new("97dfb1ba-50c4-4440-8dfa-6575daf543c8"), "en-us"),
InternalPlugin.LANGUAGE_DE_DE => new(PluginType.LANGUAGE, new("43065dbc-78d0-45b7-92be-f14c2926e2dc"), "de-de"),
_ => new InternalPluginData(PluginType.NONE, Guid.Empty, "unknown")
};
_ => new InternalPluginData(PluginType.NONE, Guid.Empty, "unknown")
};
}
}
@@ -4,37 +4,40 @@ public static class PluginCategoryExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginCategoryExtensions).Namespace, nameof(PluginCategoryExtensions));
public static string GetName(this PluginCategory type) => type switch
extension(PluginCategory type)
{
PluginCategory.NONE => TB("None"),
PluginCategory.CORE => TB("AI Studio Core"),
public string GetName() => type switch
{
PluginCategory.NONE => TB("None"),
PluginCategory.CORE => TB("AI Studio Core"),
PluginCategory.BUSINESS => TB("Business"),
PluginCategory.INDUSTRY => TB("Industry"),
PluginCategory.UTILITY => TB("Utility"),
PluginCategory.SOFTWARE_DEVELOPMENT => TB("Software Development"),
PluginCategory.GAMING => TB("Gaming"),
PluginCategory.EDUCATION => TB("Education"),
PluginCategory.ENTERTAINMENT => TB("Entertainment"),
PluginCategory.SOCIAL => TB("Social"),
PluginCategory.SHOPPING => TB("Shopping"),
PluginCategory.TRAVEL => TB("Travel"),
PluginCategory.HEALTH => TB("Health"),
PluginCategory.FITNESS => TB("Fitness"),
PluginCategory.FOOD => TB("Food"),
PluginCategory.PARTY => TB("Party"),
PluginCategory.SPORTS => TB("Sports"),
PluginCategory.NEWS => TB("News"),
PluginCategory.WEATHER => TB("Weather"),
PluginCategory.MUSIC => TB("Music"),
PluginCategory.POLITICAL => TB("Political"),
PluginCategory.SCIENCE => TB("Science"),
PluginCategory.TECHNOLOGY => TB("Technology"),
PluginCategory.ART => TB("Art"),
PluginCategory.FICTION => TB("Fiction"),
PluginCategory.WRITING => TB("Writing"),
PluginCategory.CONTENT_CREATION => TB("Content Creation"),
PluginCategory.BUSINESS => TB("Business"),
PluginCategory.INDUSTRY => TB("Industry"),
PluginCategory.UTILITY => TB("Utility"),
PluginCategory.SOFTWARE_DEVELOPMENT => TB("Software Development"),
PluginCategory.GAMING => TB("Gaming"),
PluginCategory.EDUCATION => TB("Education"),
PluginCategory.ENTERTAINMENT => TB("Entertainment"),
PluginCategory.SOCIAL => TB("Social"),
PluginCategory.SHOPPING => TB("Shopping"),
PluginCategory.TRAVEL => TB("Travel"),
PluginCategory.HEALTH => TB("Health"),
PluginCategory.FITNESS => TB("Fitness"),
PluginCategory.FOOD => TB("Food"),
PluginCategory.PARTY => TB("Party"),
PluginCategory.SPORTS => TB("Sports"),
PluginCategory.NEWS => TB("News"),
PluginCategory.WEATHER => TB("Weather"),
PluginCategory.MUSIC => TB("Music"),
PluginCategory.POLITICAL => TB("Political"),
PluginCategory.SCIENCE => TB("Science"),
PluginCategory.TECHNOLOGY => TB("Technology"),
PluginCategory.ART => TB("Art"),
PluginCategory.FICTION => TB("Fiction"),
PluginCategory.WRITING => TB("Writing"),
PluginCategory.CONTENT_CREATION => TB("Content Creation"),
_ => TB("Unknown plugin category"),
};
_ => TB("Unknown plugin category"),
};
}
}
@@ -4,19 +4,22 @@ public static class PluginConfigurationObjectTypeExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginConfigurationObjectTypeExtensions).Namespace, nameof(PluginConfigurationObjectTypeExtensions));
/// <summary>
/// The name of a type of configuration object, as users read it, e.g., in a message.
/// </summary>
public static string GetName(this PluginConfigurationObjectType type) => type switch
extension(PluginConfigurationObjectType type)
{
PluginConfigurationObjectType.LLM_PROVIDER => TB("LLM Provider"),
PluginConfigurationObjectType.EMBEDDING_PROVIDER => TB("Embedding Provider"),
PluginConfigurationObjectType.TRANSCRIPTION_PROVIDER => TB("Transcription Provider"),
PluginConfigurationObjectType.PROFILE => TB("Profile"),
PluginConfigurationObjectType.CHAT_TEMPLATE => TB("Chat Template"),
PluginConfigurationObjectType.DATA_SOURCE => TB("Data Source"),
PluginConfigurationObjectType.DOCUMENT_ANALYSIS_POLICY => TB("Document Analysis Policy"),
/// <summary>
/// The name of a type of configuration object, as users read it, e.g., in a message.
/// </summary>
public string GetName() => type switch
{
PluginConfigurationObjectType.LLM_PROVIDER => TB("LLM Provider"),
PluginConfigurationObjectType.EMBEDDING_PROVIDER => TB("Embedding Provider"),
PluginConfigurationObjectType.TRANSCRIPTION_PROVIDER => TB("Transcription Provider"),
PluginConfigurationObjectType.PROFILE => TB("Profile"),
PluginConfigurationObjectType.CHAT_TEMPLATE => TB("Chat Template"),
PluginConfigurationObjectType.DATA_SOURCE => TB("Data Source"),
PluginConfigurationObjectType.DOCUMENT_ANALYSIS_POLICY => TB("Document Analysis Policy"),
_ => TB("Unknown configuration"),
};
_ => TB("Unknown configuration"),
};
}
}
@@ -4,24 +4,27 @@ public static class PluginTargetGroupExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginTargetGroupExtensions).Namespace, nameof(PluginTargetGroupExtensions));
public static string Name(this PluginTargetGroup group) => group switch
extension(PluginTargetGroup group)
{
PluginTargetGroup.NONE => TB("No target group"),
public string Name() => group switch
{
PluginTargetGroup.NONE => TB("No target group"),
PluginTargetGroup.EVERYONE => TB("Everyone"),
PluginTargetGroup.CHILDREN => TB("Children"),
PluginTargetGroup.TEENAGERS => TB("Teenagers"),
PluginTargetGroup.STUDENTS => TB("Students"),
PluginTargetGroup.ADULTS => TB("Adults"),
PluginTargetGroup.EVERYONE => TB("Everyone"),
PluginTargetGroup.CHILDREN => TB("Children"),
PluginTargetGroup.TEENAGERS => TB("Teenagers"),
PluginTargetGroup.STUDENTS => TB("Students"),
PluginTargetGroup.ADULTS => TB("Adults"),
PluginTargetGroup.INDUSTRIAL_WORKERS => TB("Industrial workers"),
PluginTargetGroup.OFFICE_WORKERS => TB("Office workers"),
PluginTargetGroup.BUSINESS_PROFESSIONALS => TB("Business professionals"),
PluginTargetGroup.SOFTWARE_DEVELOPERS => TB("Software developers"),
PluginTargetGroup.SCIENTISTS => TB("Scientists"),
PluginTargetGroup.TEACHERS => TB("Teachers"),
PluginTargetGroup.ARTISTS => TB("Artists"),
PluginTargetGroup.INDUSTRIAL_WORKERS => TB("Industrial workers"),
PluginTargetGroup.OFFICE_WORKERS => TB("Office workers"),
PluginTargetGroup.BUSINESS_PROFESSIONALS => TB("Business professionals"),
PluginTargetGroup.SOFTWARE_DEVELOPERS => TB("Software developers"),
PluginTargetGroup.SCIENTISTS => TB("Scientists"),
PluginTargetGroup.TEACHERS => TB("Teachers"),
PluginTargetGroup.ARTISTS => TB("Artists"),
_ => TB("Unknown target group"),
};
_ => TB("Unknown target group"),
};
}
}
@@ -4,25 +4,28 @@ public static class PluginTypeExtensions
{
private static string TB(string fallbackEN) => I18N.I.T(fallbackEN, typeof(PluginTypeExtensions).Namespace, nameof(PluginTypeExtensions));
public static string GetName(this PluginType type) => type switch
extension(PluginType type)
{
PluginType.LANGUAGE => TB("Language plugin"),
PluginType.ASSISTANT => TB("Assistant plugin"),
PluginType.CONFIGURATION => TB("Configuration plugin"),
PluginType.THEME => TB("Theme plugin"),
PluginType.MODEL => TB("Model plugin"),
public string GetName() => type switch
{
PluginType.LANGUAGE => TB("Language plugin"),
PluginType.ASSISTANT => TB("Assistant plugin"),
PluginType.CONFIGURATION => TB("Configuration plugin"),
PluginType.THEME => TB("Theme plugin"),
PluginType.MODEL => TB("Model plugin"),
_ => TB("Unknown plugin type"),
};
public static string GetDirectory(this PluginType type) => type switch
{
PluginType.LANGUAGE => "languages",
PluginType.ASSISTANT => "assistants",
PluginType.CONFIGURATION => "configurations",
PluginType.THEME => "themes",
PluginType.MODEL => "models",
_ => TB("Unknown plugin type"),
};
_ => "unknown",
};
public string GetDirectory() => type switch
{
PluginType.LANGUAGE => "languages",
PluginType.ASSISTANT => "assistants",
PluginType.CONFIGURATION => "configurations",
PluginType.THEME => "themes",
PluginType.MODEL => "models",
_ => "unknown",
};
}
}