diff options
| author | Sean Hall <r.sean.hall@gmail.com> | 2019-01-19 20:40:43 -0600 |
|---|---|---|
| committer | Sean Hall <r.sean.hall@gmail.com> | 2019-01-19 20:40:43 -0600 |
| commit | 0c688dbd8a32342f117179ec3432b4237334dbcd (patch) | |
| tree | babb39000f32477e9dee672da907fcc47178fe07 /src | |
| parent | 084093cc0ab26f34d86ca5f38b0d3612cf4bc80e (diff) | |
| download | wix-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.cs | 40 |
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 @@ | |||
| 1 | using System; | 1 | using System; |
| 2 | using System.Collections.Generic; | 2 | using System.Collections.Generic; |
| 3 | using System.IO; | 3 | using System.IO; |
| 4 | using System.Linq; | 4 | using 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; } |
