summaryrefslogtreecommitdiff
path: root/src/TablesAndTuples/Program.cs
diff options
context:
space:
mode:
Diffstat (limited to 'src/TablesAndTuples/Program.cs')
-rw-r--r--src/TablesAndTuples/Program.cs130
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;
7using System.Xml.Linq; 7using System.Xml.Linq;
8using SimpleJson; 8using SimpleJson;
9 9
10namespace TablesAndTuples 10namespace 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;