add all resource keys to array in class;

This commit is contained in:
2018-07-24 15:02:40 +02:00
parent 1d75d8553b
commit bf36aaeac9
@@ -1,6 +1,7 @@
using System; using System;
using System.CodeDom; using System.CodeDom;
using System.CodeDom.Compiler; using System.CodeDom.Compiler;
using System.Collections.Generic;
using System.Globalization; using System.Globalization;
using System.IO; using System.IO;
using System.Reflection; using System.Reflection;
@@ -134,6 +135,11 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
targetClass.Members.Add(constructor); targetClass.Members.Add(constructor);
var resources = ResourceParser.Parse(); var resources = ResourceParser.Parse();
var idx = 0;
StringBuilder resourceKeysStringBuilder = new StringBuilder();
resourceKeysStringBuilder.Append("new string[] { ");
foreach (var item in resources) foreach (var item in resources)
{ {
if (string.IsNullOrEmpty(item.Name)) if (string.IsNullOrEmpty(item.Name))
@@ -148,27 +154,38 @@ namespace ChristianHelle.DeveloperTools.CodeGenerators.Resw.VSPackage.CustomTool
key = key.Replace(".", "/"); key = key.Replace(".", "/");
} }
var property = new CodeMemberProperty var property = new CodeMemberField
{ {
Name = name, Name = name,
Attributes = MemberAttributes.Public, Attributes = MemberAttributes.Public,
HasGet = true,
Type = new CodeTypeReference(typeof (string)) Type = new CodeTypeReference(typeof (string))
}; };
property.Comments.Add(new CodeCommentStatement("<summary>", true)); property.Name += " { get; private set; } //";
property.Comments.Add(new CodeCommentStatement("Localized resource similar to \"" + (item.Value ?? item.Name) + "\"", true));
property.Comments.Add(new CodeCommentStatement("</summary>", true)); resourceKeysStringBuilder.Append($"\"{name}\"");
property.GetStatements.Add( if (idx < resources.Count - 1)
new CodeMethodReturnStatement( {
new CodeMethodInvokeExpression( resourceKeysStringBuilder.Append(", ");
new CodeFieldReferenceExpression(null, "resourceLoader"), }
"GetString",
new CodePrimitiveExpression(key))));
targetClass.Members.Add(property); targetClass.Members.Add(property);
idx += 1;
} }
resourceKeysStringBuilder.Append(" }");
var keysField = new CodeMemberField()
{
Name = "ResourceKeys",
Type = new CodeTypeReference(typeof(string[])),
Attributes = MemberAttributes.Private | MemberAttributes.Final,
InitExpression = new CodeSnippetExpression(resourceKeysStringBuilder.ToString())
};
targetClass.Members.Add(keysField);
codeNamespace.Types.Add(targetClass); codeNamespace.Types.Add(targetClass);
compileUnit.Namespaces.Add(codeNamespace); compileUnit.Namespaces.Add(codeNamespace);