add all resource keys to array in class;
This commit is contained in:
@@ -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);
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user