diff options
Diffstat (limited to 'src/TablesAndTuples/Program.cs')
-rw-r--r-- | src/TablesAndTuples/Program.cs | 130 |
1 files changed, 65 insertions, 65 deletions
diff --git a/src/TablesAndTuples/Program.cs b/src/TablesAndTuples/Program.cs index 83766930..634acf9d 100644 --- a/src/TablesAndTuples/Program.cs +++ b/src/TablesAndTuples/Program.cs | |||
@@ -7,7 +7,7 @@ using System.Text.RegularExpressions; | |||
7 | using System.Xml.Linq; | 7 | using System.Xml.Linq; |
8 | using SimpleJson; | 8 | using SimpleJson; |
9 | 9 | ||
10 | namespace TablesAndTuples | 10 | namespace TablesAndSymbols |
11 | { | 11 | { |
12 | class Program | 12 | class Program |
13 | { | 13 | { |
@@ -65,11 +65,11 @@ namespace TablesAndTuples | |||
65 | 65 | ||
66 | foreach (var tableDefinition in tableDefinitions) | 66 | foreach (var tableDefinition in tableDefinitions) |
67 | { | 67 | { |
68 | if (tableDefinition.Tupleless) | 68 | if (tableDefinition.Symbolless) |
69 | { | 69 | { |
70 | continue; | 70 | continue; |
71 | } | 71 | } |
72 | var tupleType = tableDefinition.TupleDefinitionName; | 72 | var symbolType = tableDefinition.SymbolDefinitionName; |
73 | 73 | ||
74 | var fields = new JsonArray(); | 74 | var fields = new JsonArray(); |
75 | var firstField = true; | 75 | var firstField = true; |
@@ -79,7 +79,7 @@ namespace TablesAndTuples | |||
79 | if (firstField) | 79 | if (firstField) |
80 | { | 80 | { |
81 | firstField = false; | 81 | firstField = false; |
82 | if (tableDefinition.TupleIdIsPrimaryKey) | 82 | if (tableDefinition.SymbolIdIsPrimaryKey) |
83 | { | 83 | { |
84 | continue; | 84 | continue; |
85 | } | 85 | } |
@@ -121,12 +121,12 @@ namespace TablesAndTuples | |||
121 | 121 | ||
122 | var obj = new JsonObject | 122 | var obj = new JsonObject |
123 | { | 123 | { |
124 | { tupleType, fields } | 124 | { symbolType, fields } |
125 | }; | 125 | }; |
126 | array.Add(obj); | 126 | array.Add(obj); |
127 | } | 127 | } |
128 | 128 | ||
129 | array.Sort(CompareTupleDefinitions); | 129 | array.Sort(CompareSymbolDefinitions); |
130 | 130 | ||
131 | var strat = new PocoJsonSerializerStrategy(); | 131 | var strat = new PocoJsonSerializerStrategy(); |
132 | var json = SimpleJson.SimpleJson.SerializeObject(array, strat); | 132 | var json = SimpleJson.SimpleJson.SerializeObject(array, strat); |
@@ -147,28 +147,28 @@ namespace TablesAndTuples | |||
147 | private static void ReadJsonWriteCs(string inputPath, string outputFolder, string prefix) | 147 | private static void ReadJsonWriteCs(string inputPath, string outputFolder, string prefix) |
148 | { | 148 | { |
149 | var json = File.ReadAllText(inputPath); | 149 | var json = File.ReadAllText(inputPath); |
150 | var tuples = SimpleJson.SimpleJson.DeserializeObject(json) as JsonArray; | 150 | var symbols = SimpleJson.SimpleJson.DeserializeObject(json) as JsonArray; |
151 | 151 | ||
152 | var tupleNames = new List<string>(); | 152 | var symbolNames = new List<string>(); |
153 | 153 | ||
154 | foreach (var tupleDefinition in tuples.Cast<JsonObject>()) | 154 | foreach (var symbolDefinition in symbols.Cast<JsonObject>()) |
155 | { | 155 | { |
156 | var tupleName = tupleDefinition.Keys.Single(); | 156 | var symbolName = symbolDefinition.Keys.Single(); |
157 | var fields = tupleDefinition.Values.Single() as JsonArray; | 157 | var fields = symbolDefinition.Values.Single() as JsonArray; |
158 | 158 | ||
159 | var list = GetFields(fields).ToList(); | 159 | var list = GetFields(fields).ToList(); |
160 | 160 | ||
161 | tupleNames.Add(tupleName); | 161 | symbolNames.Add(symbolName); |
162 | 162 | ||
163 | var text = GenerateTupleFileText(prefix, tupleName, list); | 163 | var text = GenerateSymbolFileText(prefix, symbolName, list); |
164 | 164 | ||
165 | var pathTuple = Path.Combine(outputFolder, tupleName + "Tuple.cs"); | 165 | var pathSymbol = Path.Combine(outputFolder, symbolName + "Symbol.cs"); |
166 | Console.WriteLine("Writing: {0}", pathTuple); | 166 | Console.WriteLine("Writing: {0}", pathSymbol); |
167 | File.WriteAllText(pathTuple, text); | 167 | File.WriteAllText(pathSymbol, text); |
168 | } | 168 | } |
169 | 169 | ||
170 | var content = TupleNamesFileContent(prefix, tupleNames); | 170 | var content = SymbolNamesFileContent(prefix, symbolNames); |
171 | var pathNames = Path.Combine(outputFolder, String.Concat(prefix, "TupleDefinitions.cs")); | 171 | var pathNames = Path.Combine(outputFolder, String.Concat(prefix, "SymbolDefinitions.cs")); |
172 | Console.WriteLine("Writing: {0}", pathNames); | 172 | Console.WriteLine("Writing: {0}", pathNames); |
173 | File.WriteAllText(pathNames, content); | 173 | File.WriteAllText(pathNames, content); |
174 | } | 174 | } |
@@ -215,7 +215,7 @@ namespace TablesAndTuples | |||
215 | var unrealDef = | 215 | var unrealDef = |
216 | " unreal: true,"; | 216 | " unreal: true,"; |
217 | var endTableDef = String.Join(Environment.NewLine, | 217 | var endTableDef = String.Join(Environment.NewLine, |
218 | " tupleIdIsPrimaryKey: {1}", | 218 | " symbolIdIsPrimaryKey: {1}", |
219 | " );", | 219 | " );", |
220 | ""); | 220 | ""); |
221 | var startAllTablesDef = String.Join(Environment.NewLine, | 221 | var startAllTablesDef = String.Join(Environment.NewLine, |
@@ -234,8 +234,8 @@ namespace TablesAndTuples | |||
234 | sb.AppendLine(startClassDef.Replace("{1}", ns).Replace("{2}", prefix)); | 234 | sb.AppendLine(startClassDef.Replace("{1}", ns).Replace("{2}", prefix)); |
235 | foreach (var tableDefinition in tableDefinitions) | 235 | foreach (var tableDefinition in tableDefinitions) |
236 | { | 236 | { |
237 | var tupleDefinition = tableDefinition.Tupleless ? "null" : $"{prefix}TupleDefinitions.{tableDefinition.TupleDefinitionName}"; | 237 | var symbolDefinition = tableDefinition.Symbolless ? "null" : $"{prefix}SymbolDefinitions.{tableDefinition.SymbolDefinitionName}"; |
238 | sb.AppendLine(startTableDef.Replace("{1}", tableDefinition.VariableName).Replace("{2}", tableDefinition.Name).Replace("{3}", tupleDefinition)); | 238 | sb.AppendLine(startTableDef.Replace("{1}", tableDefinition.VariableName).Replace("{2}", tableDefinition.Name).Replace("{3}", symbolDefinition)); |
239 | foreach (var columnDefinition in tableDefinition.Columns) | 239 | foreach (var columnDefinition in tableDefinition.Columns) |
240 | { | 240 | { |
241 | sb.Append(columnDef.Replace("{1}", columnDefinition.Name).Replace("{2}", columnDefinition.Type.ToString()).Replace("{3}", columnDefinition.Length.ToString()) | 241 | sb.Append(columnDef.Replace("{1}", columnDefinition.Name).Replace("{2}", columnDefinition.Type.ToString()).Replace("{3}", columnDefinition.Length.ToString()) |
@@ -287,7 +287,7 @@ namespace TablesAndTuples | |||
287 | { | 287 | { |
288 | sb.AppendLine(unrealDef); | 288 | sb.AppendLine(unrealDef); |
289 | } | 289 | } |
290 | sb.AppendLine(endTableDef.Replace("{1}", tableDefinition.TupleIdIsPrimaryKey.ToString().ToLower())); | 290 | sb.AppendLine(endTableDef.Replace("{1}", tableDefinition.SymbolIdIsPrimaryKey.ToString().ToLower())); |
291 | } | 291 | } |
292 | sb.AppendLine(startAllTablesDef); | 292 | sb.AppendLine(startAllTablesDef); |
293 | foreach (var tableDefinition in tableDefinitions) | 293 | foreach (var tableDefinition in tableDefinitions) |
@@ -300,7 +300,7 @@ namespace TablesAndTuples | |||
300 | return sb.ToString(); | 300 | return sb.ToString(); |
301 | } | 301 | } |
302 | 302 | ||
303 | private static string GenerateTupleFileText(string prefix, string tupleName, List<(string Name, string Type, string ClrType, string AsFunction)> tupleFields) | 303 | private static string GenerateSymbolFileText(string prefix, string symbolName, List<(string Name, string Type, string ClrType, string AsFunction)> symbolFields) |
304 | { | 304 | { |
305 | var ns = prefix ?? "Data"; | 305 | var ns = prefix ?? "Data"; |
306 | var toString = String.IsNullOrEmpty(prefix) ? null : ".ToString()"; | 306 | var toString = String.IsNullOrEmpty(prefix) ? null : ".ToString()"; |
@@ -312,52 +312,52 @@ namespace TablesAndTuples | |||
312 | "{"); | 312 | "{"); |
313 | var usingDataDef = | 313 | var usingDataDef = |
314 | " using WixToolset.Data;"; | 314 | " using WixToolset.Data;"; |
315 | var startTupleDef = String.Join(Environment.NewLine, | 315 | var startSymbolDef = String.Join(Environment.NewLine, |
316 | " using WixToolset.{2}.Tuples;", | 316 | " using WixToolset.{2}.Symbols;", |
317 | "", | 317 | "", |
318 | " public static partial class {3}TupleDefinitions", | 318 | " public static partial class {3}SymbolDefinitions", |
319 | " {", | 319 | " {", |
320 | " public static readonly IntermediateTupleDefinition {1} = new IntermediateTupleDefinition(", | 320 | " public static readonly IntermediateSymbolDefinition {1} = new IntermediateSymbolDefinition(", |
321 | " {3}TupleDefinitionType.{1}{4},", | 321 | " {3}SymbolDefinitionType.{1}{4},", |
322 | " new{5}[]", | 322 | " new{5}[]", |
323 | " {"); | 323 | " {"); |
324 | var fieldDef = | 324 | var fieldDef = |
325 | " new IntermediateFieldDefinition(nameof({1}TupleFields.{2}), IntermediateFieldType.{3}),"; | 325 | " new IntermediateFieldDefinition(nameof({1}SymbolFields.{2}), IntermediateFieldType.{3}),"; |
326 | var endTupleDef = String.Join(Environment.NewLine, | 326 | var endSymbolDef = String.Join(Environment.NewLine, |
327 | " },", | 327 | " },", |
328 | " typeof({1}Tuple));", | 328 | " typeof({1}Symbol));", |
329 | " }", | 329 | " }", |
330 | "}", | 330 | "}", |
331 | "", | 331 | "", |
332 | "namespace WixToolset.{2}.Tuples", | 332 | "namespace WixToolset.{2}.Symbols", |
333 | "{"); | 333 | "{"); |
334 | var startEnumDef = String.Join(Environment.NewLine, | 334 | var startEnumDef = String.Join(Environment.NewLine, |
335 | " public enum {1}TupleFields", | 335 | " public enum {1}SymbolFields", |
336 | " {"); | 336 | " {"); |
337 | var fieldEnum = | 337 | var fieldEnum = |
338 | " {2},"; | 338 | " {2},"; |
339 | var startTuple = String.Join(Environment.NewLine, | 339 | var startSymbol = String.Join(Environment.NewLine, |
340 | " }", | 340 | " }", |
341 | "", | 341 | "", |
342 | " public class {1}Tuple : IntermediateTuple", | 342 | " public class {1}Symbol : IntermediateSymbol", |
343 | " {", | 343 | " {", |
344 | " public {1}Tuple() : base({3}TupleDefinitions.{1}, null, null)", | 344 | " public {1}Symbol() : base({3}SymbolDefinitions.{1}, null, null)", |
345 | " {", | 345 | " {", |
346 | " }", | 346 | " }", |
347 | "", | 347 | "", |
348 | " public {1}Tuple(SourceLineNumber sourceLineNumber, Identifier id = null) : base({3}TupleDefinitions.{1}, sourceLineNumber, id)", | 348 | " public {1}Symbol(SourceLineNumber sourceLineNumber, Identifier id = null) : base({3}SymbolDefinitions.{1}, sourceLineNumber, id)", |
349 | " {", | 349 | " {", |
350 | " }", | 350 | " }", |
351 | "", | 351 | "", |
352 | " public IntermediateField this[{1}TupleFields index] => this.Fields[(int)index];"); | 352 | " public IntermediateField this[{1}SymbolFields index] => this.Fields[(int)index];"); |
353 | var fieldProp = String.Join(Environment.NewLine, | 353 | var fieldProp = String.Join(Environment.NewLine, |
354 | "", | 354 | "", |
355 | " public {4} {2}", | 355 | " public {4} {2}", |
356 | " {", | 356 | " {", |
357 | " get => {6}this.Fields[(int){1}TupleFields.{2}]{5};", | 357 | " get => {6}this.Fields[(int){1}SymbolFields.{2}]{5};", |
358 | " set => this.Set((int){1}TupleFields.{2}, value);", | 358 | " set => this.Set((int){1}SymbolFields.{2}, value);", |
359 | " }"); | 359 | " }"); |
360 | var endTuple = String.Join(Environment.NewLine, | 360 | var endSymbol = String.Join(Environment.NewLine, |
361 | " }", | 361 | " }", |
362 | "}"); | 362 | "}"); |
363 | 363 | ||
@@ -368,36 +368,36 @@ namespace TablesAndTuples | |||
368 | { | 368 | { |
369 | sb.AppendLine(usingDataDef); | 369 | sb.AppendLine(usingDataDef); |
370 | } | 370 | } |
371 | sb.AppendLine(startTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix).Replace("{4}", toString).Replace("{5}", tupleFields.Any() ? null : " IntermediateFieldDefinition")); | 371 | sb.AppendLine(startSymbolDef.Replace("{1}", symbolName).Replace("{2}", ns).Replace("{3}", prefix).Replace("{4}", toString).Replace("{5}", symbolFields.Any() ? null : " IntermediateFieldDefinition")); |
372 | foreach (var field in tupleFields) | 372 | foreach (var field in symbolFields) |
373 | { | 373 | { |
374 | sb.AppendLine(fieldDef.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type)); | 374 | sb.AppendLine(fieldDef.Replace("{1}", symbolName).Replace("{2}", field.Name).Replace("{3}", field.Type)); |
375 | } | 375 | } |
376 | sb.AppendLine(endTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 376 | sb.AppendLine(endSymbolDef.Replace("{1}", symbolName).Replace("{2}", ns).Replace("{3}", prefix)); |
377 | if (ns != "Data") | 377 | if (ns != "Data") |
378 | { | 378 | { |
379 | sb.AppendLine(usingDataDef); | 379 | sb.AppendLine(usingDataDef); |
380 | sb.AppendLine(); | 380 | sb.AppendLine(); |
381 | } | 381 | } |
382 | sb.AppendLine(startEnumDef.Replace("{1}", tupleName)); | 382 | sb.AppendLine(startEnumDef.Replace("{1}", symbolName)); |
383 | foreach (var field in tupleFields) | 383 | foreach (var field in symbolFields) |
384 | { | 384 | { |
385 | sb.AppendLine(fieldEnum.Replace("{1}", tupleName).Replace("{2}", field.Name)); | 385 | sb.AppendLine(fieldEnum.Replace("{1}", symbolName).Replace("{2}", field.Name)); |
386 | } | 386 | } |
387 | sb.AppendLine(startTuple.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 387 | sb.AppendLine(startSymbol.Replace("{1}", symbolName).Replace("{2}", ns).Replace("{3}", prefix)); |
388 | foreach (var field in tupleFields) | 388 | foreach (var field in symbolFields) |
389 | { | 389 | { |
390 | var useCast = ns == "Data" && field.AsFunction != "AsPath()"; | 390 | var useCast = ns == "Data" && field.AsFunction != "AsPath()"; |
391 | var cast = useCast ? $"({field.ClrType})" : null; | 391 | var cast = useCast ? $"({field.ClrType})" : null; |
392 | var asFunction = useCast ? null : $".{field.AsFunction}"; | 392 | var asFunction = useCast ? null : $".{field.AsFunction}"; |
393 | sb.AppendLine(fieldProp.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", asFunction).Replace("{6}", cast)); | 393 | sb.AppendLine(fieldProp.Replace("{1}", symbolName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", asFunction).Replace("{6}", cast)); |
394 | } | 394 | } |
395 | sb.Append(endTuple); | 395 | sb.Append(endSymbol); |
396 | 396 | ||
397 | return sb.ToString(); | 397 | return sb.ToString(); |
398 | } | 398 | } |
399 | 399 | ||
400 | private static string TupleNamesFileContent(string prefix, List<string> tupleNames) | 400 | private static string SymbolNamesFileContent(string prefix, List<string> symbolNames) |
401 | { | 401 | { |
402 | var ns = prefix ?? "Data"; | 402 | var ns = prefix ?? "Data"; |
403 | 403 | ||
@@ -409,20 +409,20 @@ namespace TablesAndTuples | |||
409 | " using System;", | 409 | " using System;", |
410 | " using WixToolset.Data;", | 410 | " using WixToolset.Data;", |
411 | "", | 411 | "", |
412 | " public enum {3}TupleDefinitionType", | 412 | " public enum {3}SymbolDefinitionType", |
413 | " {"); | 413 | " {"); |
414 | var namesFormat = | 414 | var namesFormat = |
415 | " {1},"; | 415 | " {1},"; |
416 | var midpoint = String.Join(Environment.NewLine, | 416 | var midpoint = String.Join(Environment.NewLine, |
417 | " }", | 417 | " }", |
418 | "", | 418 | "", |
419 | " public static partial class {3}TupleDefinitions", | 419 | " public static partial class {3}SymbolDefinitions", |
420 | " {", | 420 | " {", |
421 | " public static readonly Version Version = new Version(\"4.0.0\");", | 421 | " public static readonly Version Version = new Version(\"4.0.0\");", |
422 | "", | 422 | "", |
423 | " public static IntermediateTupleDefinition ByName(string name)", | 423 | " public static IntermediateSymbolDefinition ByName(string name)", |
424 | " {", | 424 | " {", |
425 | " if (!Enum.TryParse(name, out {3}TupleDefinitionType type))", | 425 | " if (!Enum.TryParse(name, out {3}SymbolDefinitionType type))", |
426 | " {", | 426 | " {", |
427 | " return null;", | 427 | " return null;", |
428 | " }", | 428 | " }", |
@@ -430,14 +430,14 @@ namespace TablesAndTuples | |||
430 | " return ByType(type);", | 430 | " return ByType(type);", |
431 | " }", | 431 | " }", |
432 | "", | 432 | "", |
433 | " public static IntermediateTupleDefinition ByType({3}TupleDefinitionType type)", | 433 | " public static IntermediateSymbolDefinition ByType({3}SymbolDefinitionType type)", |
434 | " {", | 434 | " {", |
435 | " switch (type)", | 435 | " switch (type)", |
436 | " {"); | 436 | " {"); |
437 | 437 | ||
438 | var caseFormat = String.Join(Environment.NewLine, | 438 | var caseFormat = String.Join(Environment.NewLine, |
439 | " case {3}TupleDefinitionType.{1}:", | 439 | " case {3}SymbolDefinitionType.{1}:", |
440 | " return {3}TupleDefinitions.{1};", | 440 | " return {3}SymbolDefinitions.{1};", |
441 | ""); | 441 | ""); |
442 | 442 | ||
443 | var footer = String.Join(Environment.NewLine, | 443 | var footer = String.Join(Environment.NewLine, |
@@ -451,14 +451,14 @@ namespace TablesAndTuples | |||
451 | var sb = new StringBuilder(); | 451 | var sb = new StringBuilder(); |
452 | 452 | ||
453 | sb.AppendLine(header.Replace("{2}", ns).Replace("{3}", prefix)); | 453 | sb.AppendLine(header.Replace("{2}", ns).Replace("{3}", prefix)); |
454 | foreach (var tupleName in tupleNames) | 454 | foreach (var symbolName in symbolNames) |
455 | { | 455 | { |
456 | sb.AppendLine(namesFormat.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 456 | sb.AppendLine(namesFormat.Replace("{1}", symbolName).Replace("{2}", ns).Replace("{3}", prefix)); |
457 | } | 457 | } |
458 | sb.AppendLine(midpoint.Replace("{2}", ns).Replace("{3}", prefix)); | 458 | sb.AppendLine(midpoint.Replace("{2}", ns).Replace("{3}", prefix)); |
459 | foreach (var tupleName in tupleNames) | 459 | foreach (var symbolName in symbolNames) |
460 | { | 460 | { |
461 | sb.AppendLine(caseFormat.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 461 | sb.AppendLine(caseFormat.Replace("{1}", symbolName).Replace("{2}", ns).Replace("{3}", prefix)); |
462 | } | 462 | } |
463 | sb.AppendLine(footer); | 463 | sb.AppendLine(footer); |
464 | 464 | ||
@@ -514,7 +514,7 @@ namespace TablesAndTuples | |||
514 | throw new ArgumentException(fieldType); | 514 | throw new ArgumentException(fieldType); |
515 | } | 515 | } |
516 | 516 | ||
517 | private static int CompareTupleDefinitions(object x, object y) | 517 | private static int CompareSymbolDefinitions(object x, object y) |
518 | { | 518 | { |
519 | var first = (JsonObject)x; | 519 | var first = (JsonObject)x; |
520 | var second = (JsonObject)y; | 520 | var second = (JsonObject)y; |