Files
ResourceString.Net.Contract/ResourceString.Net.Logic/Factories/CodeSnippetFactory.cs
2023-02-26 19:03:30 +01:00

80 lines
2.4 KiB
C#

using ResourceString.Net.Logic.DomainObjects.Resx;
using System;
using System.Collections.Generic;
using System.Linq;
namespace ResourceString.Net.Logic.Factories;
internal static class CodeSnippetFactory
{
public static IResourceString CreateResourceMangerMemberCodeSnippet(string typeName)
{
var formatString = Properties.Resources.ResourceManagerMemberTemplate;
return new FormattableResourceString(
formatString,
LiteralString.Factory(typeName)
);
}
public static IEnumerable<IResourceString> CreateMemberCodeSnippets(IEnumerable<Resource> resources)
{
return CreateMemberCodeSnippets(
resources,
Properties.Resources.DefaultPropertyName_ResourceManager
);
}
public static IEnumerable<IResourceString> CreateMemberCodeSnippets(
IEnumerable<Resource> resources,
IResourceString resourceManagerName
)
{
if (resources is null)
{
return Enumerable.Empty<IResourceString>();
}
var formatString = Properties.Resources.ResourceStringMembers;
return resources.Select(r => new FormattableResourceString(
formatString,
LiteralString.Factory(r.Name),
resourceManagerName
));
}
public static IResourceString CreateResourceClassCodeSnippet(
string namespaceString,
string resourceClassName,
IResourceString resourceManagerSnippet,
IEnumerable<IResourceString> memberSnippets
)
{
var formatString = Properties.Resources.ResourcesClassTemplate;
return new FormattableResourceString(
formatString,
LiteralString.Factory(namespaceString),
LiteralString.Factory(resourceClassName),
resourceManagerSnippet,
new JoinedResourceString(
LiteralString.Empty,
memberSnippets?.ToArray() ?? Array.Empty<IResourceString>()
)
);
}
public static IResourceString CreateResourceClassCodeSnippet(
string namespaceString,
string resourceClassName,
IResourceString resourceManagerSnippet,
IEnumerable<Resource> resources
)
{
return CreateResourceClassCodeSnippet(
namespaceString,
resourceClassName,
resourceManagerSnippet,
CreateMemberCodeSnippets(resources)
);
}
}