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 CreateMemberCodeSnippets(IEnumerable resources) { return CreateMemberCodeSnippets( resources, Properties.Resources.DefaultPropertyName_ResourceManager ); } public static IEnumerable CreateMemberCodeSnippets( IEnumerable resources, IResourceString resourceManagerName ) { if (resources is null) { return Enumerable.Empty(); } 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 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() ) ); } public static IResourceString CreateResourceClassCodeSnippet( string namespaceString, string resourceClassName, IResourceString resourceManagerSnippet, IEnumerable resources ) { return CreateResourceClassCodeSnippet( namespaceString, resourceClassName, resourceManagerSnippet, CreateMemberCodeSnippets(resources) ); } }