diff options
Diffstat (limited to 'src/TablesAndTuples/Program.cs')
-rw-r--r-- | src/TablesAndTuples/Program.cs | 56 |
1 files changed, 40 insertions, 16 deletions
diff --git a/src/TablesAndTuples/Program.cs b/src/TablesAndTuples/Program.cs index 400d58fa..99b15a8c 100644 --- a/src/TablesAndTuples/Program.cs +++ b/src/TablesAndTuples/Program.cs | |||
@@ -65,6 +65,10 @@ namespace TablesAndTuples | |||
65 | 65 | ||
66 | foreach (var tableDefinition in tableDefinitions) | 66 | foreach (var tableDefinition in tableDefinitions) |
67 | { | 67 | { |
68 | if (tableDefinition.Tupleless) | ||
69 | { | ||
70 | continue; | ||
71 | } | ||
68 | var tupleType = tableDefinition.TupleDefinitionName; | 72 | var tupleType = tableDefinition.TupleDefinitionName; |
69 | 73 | ||
70 | var fields = new JsonArray(); | 74 | var fields = new JsonArray(); |
@@ -199,9 +203,10 @@ namespace TablesAndTuples | |||
199 | " },"); | 203 | " },"); |
200 | var unrealDef = | 204 | var unrealDef = |
201 | " unreal: true,"; | 205 | " unreal: true,"; |
206 | var tupleNameDef = | ||
207 | " tupleDefinitionName: {1}TupleDefinitions.{2}.Name,"; | ||
202 | var endTableDef = String.Join(Environment.NewLine, | 208 | var endTableDef = String.Join(Environment.NewLine, |
203 | " tupleDefinitionName: {1}TupleDefinitions.{2}.Name,", | 209 | " tupleIdIsPrimaryKey: {1}", |
204 | " tupleIdIsPrimaryKey: {3}", | ||
205 | " );", | 210 | " );", |
206 | ""); | 211 | ""); |
207 | var startAllTablesDef = String.Join(Environment.NewLine, | 212 | var startAllTablesDef = String.Join(Environment.NewLine, |
@@ -247,7 +252,7 @@ namespace TablesAndTuples | |||
247 | } | 252 | } |
248 | if (!String.IsNullOrEmpty(columnDefinition.Description)) | 253 | if (!String.IsNullOrEmpty(columnDefinition.Description)) |
249 | { | 254 | { |
250 | sb.AppendFormat(", description: \"{0}\"", columnDefinition.Description); | 255 | sb.AppendFormat(", description: \"{0}\"", columnDefinition.Description.Replace("\\", "\\\\").Replace("\"", "\\\"")); |
251 | } | 256 | } |
252 | if (columnDefinition.ModularizeType.HasValue && columnDefinition.ModularizeType.Value != ColumnModularizeType.None) | 257 | if (columnDefinition.ModularizeType.HasValue && columnDefinition.ModularizeType.Value != ColumnModularizeType.None) |
253 | { | 258 | { |
@@ -272,7 +277,11 @@ namespace TablesAndTuples | |||
272 | { | 277 | { |
273 | sb.AppendLine(unrealDef); | 278 | sb.AppendLine(unrealDef); |
274 | } | 279 | } |
275 | sb.AppendLine(endTableDef.Replace("{1}", prefix).Replace("{2}", tableDefinition.TupleDefinitionName).Replace("{3}", tableDefinition.TupleIdIsPrimaryKey.ToString().ToLower())); | 280 | if (!tableDefinition.Tupleless) |
281 | { | ||
282 | sb.AppendLine(tupleNameDef.Replace("{1}", prefix).Replace("{2}", tableDefinition.TupleDefinitionName)); | ||
283 | } | ||
284 | sb.AppendLine(endTableDef.Replace("{1}", tableDefinition.TupleIdIsPrimaryKey.ToString().ToLower())); | ||
276 | } | 285 | } |
277 | sb.AppendLine(startAllTablesDef); | 286 | sb.AppendLine(startAllTablesDef); |
278 | foreach (var tableDefinition in tableDefinitions) | 287 | foreach (var tableDefinition in tableDefinitions) |
@@ -290,19 +299,21 @@ namespace TablesAndTuples | |||
290 | var ns = prefix ?? "Data"; | 299 | var ns = prefix ?? "Data"; |
291 | var toString = String.IsNullOrEmpty(prefix) ? null : ".ToString()"; | 300 | var toString = String.IsNullOrEmpty(prefix) ? null : ".ToString()"; |
292 | 301 | ||
293 | var startTupleDef = String.Join(Environment.NewLine, | 302 | var startFileDef = String.Join(Environment.NewLine, |
294 | "// 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.", | 303 | "// 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.", |
295 | "", | 304 | "", |
296 | "namespace WixToolset.{2}", | 305 | "namespace WixToolset.{2}", |
297 | "{", | 306 | "{"); |
298 | " using WixToolset.Data;", | 307 | var usingDataDef = |
308 | " using WixToolset.Data;"; | ||
309 | var startTupleDef = String.Join(Environment.NewLine, | ||
299 | " using WixToolset.{2}.Tuples;", | 310 | " using WixToolset.{2}.Tuples;", |
300 | "", | 311 | "", |
301 | " public static partial class {3}TupleDefinitions", | 312 | " public static partial class {3}TupleDefinitions", |
302 | " {", | 313 | " {", |
303 | " public static readonly IntermediateTupleDefinition {1} = new IntermediateTupleDefinition(", | 314 | " public static readonly IntermediateTupleDefinition {1} = new IntermediateTupleDefinition(", |
304 | " {3}TupleDefinitionType.{1}{4},", | 315 | " {3}TupleDefinitionType.{1}{4},", |
305 | " new[]", | 316 | " new{5}[]", |
306 | " {"); | 317 | " {"); |
307 | var fieldDef = | 318 | var fieldDef = |
308 | " new IntermediateFieldDefinition(nameof({1}TupleFields.{2}), IntermediateFieldType.{3}),"; | 319 | " new IntermediateFieldDefinition(nameof({1}TupleFields.{2}), IntermediateFieldType.{3}),"; |
@@ -313,9 +324,8 @@ namespace TablesAndTuples | |||
313 | "}", | 324 | "}", |
314 | "", | 325 | "", |
315 | "namespace WixToolset.{2}.Tuples", | 326 | "namespace WixToolset.{2}.Tuples", |
316 | "{", | 327 | "{"); |
317 | " using WixToolset.Data;", | 328 | var startEnumDef = String.Join(Environment.NewLine, |
318 | "", | ||
319 | " public enum {1}TupleFields", | 329 | " public enum {1}TupleFields", |
320 | " {"); | 330 | " {"); |
321 | var fieldEnum = | 331 | var fieldEnum = |
@@ -338,7 +348,7 @@ namespace TablesAndTuples | |||
338 | "", | 348 | "", |
339 | " public {4} {2}", | 349 | " public {4} {2}", |
340 | " {", | 350 | " {", |
341 | " get => this.Fields[(int){1}TupleFields.{2}].{5};", | 351 | " get => {6}this.Fields[(int){1}TupleFields.{2}]{5};", |
342 | " set => this.Set((int){1}TupleFields.{2}, value);", | 352 | " set => this.Set((int){1}TupleFields.{2}, value);", |
343 | " }"); | 353 | " }"); |
344 | var endTuple = String.Join(Environment.NewLine, | 354 | var endTuple = String.Join(Environment.NewLine, |
@@ -347,20 +357,34 @@ namespace TablesAndTuples | |||
347 | 357 | ||
348 | var sb = new StringBuilder(); | 358 | var sb = new StringBuilder(); |
349 | 359 | ||
350 | sb.AppendLine(startTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix).Replace("{4}", toString)); | 360 | sb.AppendLine(startFileDef.Replace("{2}", ns)); |
361 | if (ns != "Data") | ||
362 | { | ||
363 | sb.AppendLine(usingDataDef); | ||
364 | } | ||
365 | sb.AppendLine(startTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix).Replace("{4}", toString).Replace("{5}", tupleFields.Any() ? null : " IntermediateFieldDefinition")); | ||
351 | foreach (var field in tupleFields) | 366 | foreach (var field in tupleFields) |
352 | { | 367 | { |
353 | sb.AppendLine(fieldDef.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", field.AsFunction)); | 368 | sb.AppendLine(fieldDef.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type)); |
354 | } | 369 | } |
355 | sb.AppendLine(endTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 370 | sb.AppendLine(endTupleDef.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); |
371 | if (ns != "Data") | ||
372 | { | ||
373 | sb.AppendLine(usingDataDef); | ||
374 | sb.AppendLine(); | ||
375 | } | ||
376 | sb.AppendLine(startEnumDef.Replace("{1}", tupleName)); | ||
356 | foreach (var field in tupleFields) | 377 | foreach (var field in tupleFields) |
357 | { | 378 | { |
358 | sb.AppendLine(fieldEnum.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", field.AsFunction)); | 379 | sb.AppendLine(fieldEnum.Replace("{1}", tupleName).Replace("{2}", field.Name)); |
359 | } | 380 | } |
360 | sb.AppendLine(startTuple.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); | 381 | sb.AppendLine(startTuple.Replace("{1}", tupleName).Replace("{2}", ns).Replace("{3}", prefix)); |
361 | foreach (var field in tupleFields) | 382 | foreach (var field in tupleFields) |
362 | { | 383 | { |
363 | sb.AppendLine(fieldProp.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", field.AsFunction)); | 384 | var useCast = ns == "Data" && field.AsFunction != "AsPath()"; |
385 | var cast = useCast ? $"({field.ClrType})" : null; | ||
386 | var asFunction = useCast ? null : $".{field.AsFunction}"; | ||
387 | sb.AppendLine(fieldProp.Replace("{1}", tupleName).Replace("{2}", field.Name).Replace("{3}", field.Type).Replace("{4}", field.ClrType).Replace("{5}", asFunction).Replace("{6}", cast)); | ||
364 | } | 388 | } |
365 | sb.Append(endTuple); | 389 | sb.Append(endTuple); |
366 | 390 | ||