aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSean Hall <r.sean.hall@gmail.com>2019-01-19 20:40:43 -0600
committerSean Hall <r.sean.hall@gmail.com>2019-01-19 20:40:43 -0600
commit0c688dbd8a32342f117179ec3432b4237334dbcd (patch)
treebabb39000f32477e9dee672da907fcc47178fe07 /src
parent084093cc0ab26f34d86ca5f38b0d3612cf4bc80e (diff)
downloadwix-0c688dbd8a32342f117179ec3432b4237334dbcd.tar.gz
wix-0c688dbd8a32342f117179ec3432b4237334dbcd.tar.bz2
wix-0c688dbd8a32342f117179ec3432b4237334dbcd.zip
Use class name from xml for the generated class name.
Diffstat (limited to 'src')
-rw-r--r--src/MessagesToMessages/Program.cs40
1 files changed, 32 insertions, 8 deletions
diff --git a/src/MessagesToMessages/Program.cs b/src/MessagesToMessages/Program.cs
index 514c8a26..2d5a3777 100644
--- a/src/MessagesToMessages/Program.cs
+++ b/src/MessagesToMessages/Program.cs
@@ -1,4 +1,4 @@
1using System; 1using System;
2using System.Collections.Generic; 2using System.Collections.Generic;
3using System.IO; 3using System.IO;
4using System.Linq; 4using System.Linq;
@@ -40,9 +40,10 @@ namespace MessagesToMessages
40 40
41 foreach (var m in messages.GroupBy(m => m.Level)) 41 foreach (var m in messages.GroupBy(m => m.Level))
42 { 42 {
43 var result = GenerateCs(m.Key, m); 43 var className = m.First().ClassName;
44 var result = GenerateCs(className, m.Key, m);
44 45
45 var path = Path.Combine(args[1], m.Key + "Messages.cs"); 46 var path = Path.Combine(args[1], className + ".cs");
46 File.WriteAllText(path, result); 47 File.WriteAllText(path, result);
47 } 48 }
48 } 49 }
@@ -53,7 +54,28 @@ namespace MessagesToMessages
53 54
54 foreach (var xClass in doc.Root.Descendants(ClassDefinition)) 55 foreach (var xClass in doc.Root.Descendants(ClassDefinition))
55 { 56 {
56 var level = xClass.Attribute(Level).Value; 57 var name = xClass.Attribute(Name)?.Value;
58 var level = xClass.Attribute(Level)?.Value;
59
60 if (String.IsNullOrEmpty(name))
61 {
62 name = level + "Messages";
63 }
64 if (String.IsNullOrEmpty(level))
65 {
66 if (name.EndsWith("Errors", StringComparison.InvariantCultureIgnoreCase))
67 {
68 level = "Error";
69 }
70 else if (name.EndsWith("Verboses", StringComparison.InvariantCultureIgnoreCase))
71 {
72 level = "Verbose";
73 }
74 else if (name.EndsWith("Warnings", StringComparison.InvariantCultureIgnoreCase))
75 {
76 level = "Warning";
77 }
78 }
57 79
58 var unique = new HashSet<string>(); 80 var unique = new HashSet<string>();
59 var lastNumber = 0; 81 var lastNumber = 0;
@@ -81,7 +103,7 @@ namespace MessagesToMessages
81 103
82 var parameters = xInstance.Elements(ParameterDefinition).Select(ReadParameter).ToList(); 104 var parameters = xInstance.Elements(ParameterDefinition).Select(ReadParameter).ToList();
83 105
84 yield return new Message { Id = id, Level = level, Number = number, Parameters = parameters, SourceLineNumbers = sln, Value = value, Suffix = suffix == 0 ? String.Empty : suffix.ToString() }; 106 yield return new Message { Id = id, ClassName = name, Level = level, Number = number, Parameters = parameters, SourceLineNumbers = sln, Value = value, Suffix = suffix == 0 ? String.Empty : suffix.ToString() };
85 107
86 ++suffix; 108 ++suffix;
87 } 109 }
@@ -117,7 +139,7 @@ namespace MessagesToMessages
117 return new Parameter { Name = name, Type = type }; 139 return new Parameter { Name = name, Type = type };
118 } 140 }
119 141
120 private static string GenerateCs(string level, IEnumerable<Message> messages) 142 private static string GenerateCs(string className, string level, IEnumerable<Message> messages)
121 { 143 {
122 var header = String.Join(Environment.NewLine, 144 var header = String.Join(Environment.NewLine,
123 "// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.", 145 "// Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information.",
@@ -127,7 +149,7 @@ namespace MessagesToMessages
127 " using System;", 149 " using System;",
128 " using System.Resources;", 150 " using System.Resources;",
129 "", 151 "",
130 " public static class {0}Messages", 152 " public static class {0}",
131 " {"); 153 " {");
132 154
133 var messageFormat = String.Join(Environment.NewLine, 155 var messageFormat = String.Join(Environment.NewLine,
@@ -162,7 +184,7 @@ namespace MessagesToMessages
162 184
163 var sb = new StringBuilder(); 185 var sb = new StringBuilder();
164 186
165 sb.AppendLine(header.Replace("{0}", level)); 187 sb.AppendLine(header.Replace("{0}", className));
166 188
167 foreach (var message in messages.OrderBy(m => m.Id)) 189 foreach (var message in messages.OrderBy(m => m.Id))
168 { 190 {
@@ -215,6 +237,8 @@ namespace MessagesToMessages
215 237
216 public string Suffix { get; set; } 238 public string Suffix { get; set; }
217 239
240 public string ClassName { get; set; }
241
218 public string Level { get; set; } 242 public string Level { get; set; }
219 243
220 public int Number { get; set; } 244 public int Number { get; set; }