|
5 | 5 | using Microsoft.Maui.Controls.Xaml; |
6 | 6 |
|
7 | 7 | namespace Microsoft.Maui.Controls.SourceGen; |
8 | | - |
9 | 8 | record ProjectItem(AdditionalText AdditionalText, AnalyzerConfigOptions Options) |
10 | 9 | { |
11 | 10 | public string Configuration |
12 | | - => Options.TryGetValue("build_metadata.additionalfiles.Configuration", out var configuration) |
13 | | - ? configuration |
14 | | - : "Debug"; |
| 11 | + => Options.GetValueOrDefault("build_metadata.additionalfiles.Configuration", "Debug"); |
15 | 12 |
|
16 | 13 | public bool EnableLineInfo |
17 | 14 | { |
18 | 15 | get |
19 | 16 | { |
20 | | - var enableLineInfo = true; |
21 | | - if (Options.TryGetValue("build_property.MauiXamlLineInfo", out var lineInfo) && string.Compare(lineInfo, "disable", StringComparison.OrdinalIgnoreCase) == 0) |
22 | | - enableLineInfo = false; |
23 | | - if (Options.TryGetValue("build_metadata.additionalfiles.LineInfo", out lineInfo) && string.Compare(lineInfo, "enable", StringComparison.OrdinalIgnoreCase) == 0) |
24 | | - enableLineInfo = true; |
25 | | - if (Options.TryGetValue("build_metadata.additionalfiles.LineInfo", out lineInfo) && string.Compare(lineInfo, "disable", StringComparison.OrdinalIgnoreCase) == 0) |
26 | | - enableLineInfo = false; |
27 | | - return enableLineInfo; |
| 17 | + if (Options.IsEnabled("build_metadata.additionalfiles.LineInfo")) |
| 18 | + return true; |
| 19 | + if (Options.IsDisabled("build_metadata.additionalfiles.LineInfo")) |
| 20 | + return false; |
| 21 | + return !Options.IsDisabled("build_property.MauiXamlLineInfo"); |
28 | 22 | } |
29 | 23 | } |
| 24 | + |
30 | 25 | public bool EnableDiagnostics |
31 | 26 | { |
32 | 27 | get |
33 | 28 | { |
34 | | - bool enableDiagnostics = false; |
35 | | - if (Options.TryGetValue("build_property.EnableMauiXamlDiagnostics", out var enDiag) && string.Compare(enDiag, "true", StringComparison.OrdinalIgnoreCase) == 0) |
36 | | - enableDiagnostics = true; |
37 | | - if (Options.TryGetValue("build_metadata.additionalfiles.EnableDiagnostics", out enDiag) && string.Compare(enDiag, "true", StringComparison.OrdinalIgnoreCase) == 0) |
38 | | - enableDiagnostics = true; |
39 | | - if (Options.TryGetValue("build_metadata.additionalfiles.EnableDiagnostics", out enDiag) && string.Compare(enDiag, "false", StringComparison.OrdinalIgnoreCase) == 0) |
40 | | - enableDiagnostics = false; |
41 | | - return enableDiagnostics; |
| 29 | + if (Options.IsTrue("build_metadata.additionalfiles.EnableDiagnostics")) |
| 30 | + return true; |
| 31 | + if (Options.IsFalse("build_metadata.additionalfiles.EnableDiagnostics")) |
| 32 | + return false; |
| 33 | + return Options.IsTrue("build_property.EnableMauiXamlDiagnostics"); |
42 | 34 | } |
43 | 35 | } |
44 | 36 |
|
45 | 37 | public string Kind |
46 | | - => Options.TryGetValue("build_metadata.additionalfiles.GenKind", out var kind) |
47 | | - ? kind |
48 | | - : "None"; |
| 38 | + => Options.GetValueOrDefault("build_metadata.additionalfiles.GenKind", "None"); |
49 | 39 |
|
50 | 40 | public XamlInflator Inflator |
51 | 41 | { |
52 | 42 | get |
53 | 43 | { |
54 | | - var xamlinflator = 0; |
55 | | - if (Options.TryGetValue("build_metadata.additionalfiles.Inflator", out var inflator) && !string.IsNullOrEmpty(inflator)) |
| 44 | + var xamlinflator = 0; |
| 45 | + var parts = Options.GetValueOrDefault("build_metadata.additionalfiles.Inflator", "").Split(','); |
| 46 | + for (int i = 0; i < parts.Length; i++) |
56 | 47 | { |
57 | | - var parts = inflator!.Split(','); |
58 | | - for (int i = 0; i < parts.Length; i++) |
59 | | - { |
60 | | - var trimmed = parts[i].Trim(); |
61 | | - if (Enum.TryParse<XamlInflator>(trimmed, true, out var xinfl)) |
62 | | - xamlinflator |= (int)xinfl; |
63 | | - } |
| 48 | + var trimmed = parts[i].Trim(); |
| 49 | + if (Enum.TryParse<XamlInflator>(trimmed, true, out var xinfl)) |
| 50 | + xamlinflator |= (int)xinfl; |
64 | 51 | } |
65 | 52 | return (XamlInflator)xamlinflator; |
66 | 53 | } |
67 | 54 | } |
68 | 55 |
|
69 | 56 | public string? ManifestResourceName |
70 | | - => Options.TryGetValue("build_metadata.additionalfiles.ManifestResourceName", out var manifestResourceName) |
71 | | - ? manifestResourceName |
72 | | - : null; |
| 57 | + => Options.GetValueOrNull("build_metadata.additionalfiles.ManifestResourceName"); |
73 | 58 |
|
74 | 59 | public string NoWarn |
75 | | - { |
76 | | - get |
77 | | - { |
78 | | - string noWarn = ""; |
79 | | - if (Options.TryGetValue("build_property.MauiXamlNoWarn", out var noWarnValue)) |
80 | | - noWarn = noWarnValue; |
81 | | - if (Options.TryGetValue("build_metadata.additionalfiles.NoWarn", out noWarnValue)) |
82 | | - noWarn = noWarnValue; |
83 | | - return noWarn; |
84 | | - } |
85 | | - } |
| 60 | + => Options.GetValueOrNull("build_metadata.additionalfiles.NoWarn") ?? Options.GetValueOrNull("build_property.MauiXamlNoWarn") ?? ""; |
86 | 61 |
|
87 | 62 | public string? RelativePath |
88 | | - => Options.TryGetValue("build_metadata.additionalfiles.RelativePath", out var relativePath) |
89 | | - ? relativePath |
90 | | - : null; |
| 63 | + => Options.GetValueOrNull("build_metadata.additionalfiles.RelativePath"); |
91 | 64 |
|
92 | 65 | public string? TargetFramework |
93 | | - => Options.TryGetValue("build_metadata.additionalfiles.targetFramework", out var targetFramework) |
94 | | - ? targetFramework |
95 | | - : null; |
| 66 | + => Options.GetValueOrNull("build_metadata.additionalfiles.targetFramework"); |
96 | 67 |
|
97 | 68 | public string? TargetPath |
98 | | - => Options.TryGetValue("build_metadata.additionalfiles.TargetPath", out var targetPath) && !string.IsNullOrEmpty(targetPath) |
99 | | - ? targetPath |
100 | | - : AdditionalText.Path; |
| 69 | + => Options.GetValueOrDefault("build_metadata.additionalfiles.TargetPath", AdditionalText.Path); |
101 | 70 | } |
0 commit comments