Skip to content

Commit 353db45

Browse files
use helpers instead of TryGetValue
1 parent 1cf84f5 commit 353db45

File tree

2 files changed

+49
-55
lines changed

2 files changed

+49
-55
lines changed
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
using System;
2+
using Microsoft.CodeAnalysis.Diagnostics;
3+
4+
namespace Microsoft.Maui.Controls.SourceGen;
5+
6+
public static class AnalyzerConfigOptionsExtensions
7+
{
8+
public static bool IsEnabled(this AnalyzerConfigOptions options, string key)
9+
=> options.TryGetValue(key, out var value) && string.Compare(value, "enable", StringComparison.OrdinalIgnoreCase) == 0;
10+
11+
public static bool IsDisabled(this AnalyzerConfigOptions options, string key)
12+
=> options.TryGetValue(key, out var value) && string.Compare(value, "disable", StringComparison.OrdinalIgnoreCase) == 0;
13+
14+
public static bool IsTrue(this AnalyzerConfigOptions options, string key)
15+
=> options.TryGetValue(key, out var value) && string.Compare(value, "true", StringComparison.OrdinalIgnoreCase) == 0;
16+
17+
public static bool IsFalse(this AnalyzerConfigOptions options, string key)
18+
=> options.TryGetValue(key, out var value) && string.Compare(value, "false", StringComparison.OrdinalIgnoreCase) == 0;
19+
20+
public static string GetValueOrDefault(this AnalyzerConfigOptions options, string key, string defaultValue)
21+
=> options.TryGetValue(key, out var value) ? value : defaultValue;
22+
23+
public static string? GetValueOrNull(this AnalyzerConfigOptions options, string key)
24+
=> options.TryGetValue(key, out var value) ? value : null;
25+
}

src/Controls/src/SourceGen/ProjectItem.cs

Lines changed: 24 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -5,97 +5,66 @@
55
using Microsoft.Maui.Controls.Xaml;
66

77
namespace Microsoft.Maui.Controls.SourceGen;
8-
98
record ProjectItem(AdditionalText AdditionalText, AnalyzerConfigOptions Options)
109
{
1110
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");
1512

1613
public bool EnableLineInfo
1714
{
1815
get
1916
{
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");
2822
}
2923
}
24+
3025
public bool EnableDiagnostics
3126
{
3227
get
3328
{
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");
4234
}
4335
}
4436

4537
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");
4939

5040
public XamlInflator Inflator
5141
{
5242
get
5343
{
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++)
5647
{
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;
6451
}
6552
return (XamlInflator)xamlinflator;
6653
}
6754
}
6855

6956
public string? ManifestResourceName
70-
=> Options.TryGetValue("build_metadata.additionalfiles.ManifestResourceName", out var manifestResourceName)
71-
? manifestResourceName
72-
: null;
57+
=> Options.GetValueOrNull("build_metadata.additionalfiles.ManifestResourceName");
7358

7459
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") ?? "";
8661

8762
public string? RelativePath
88-
=> Options.TryGetValue("build_metadata.additionalfiles.RelativePath", out var relativePath)
89-
? relativePath
90-
: null;
63+
=> Options.GetValueOrNull("build_metadata.additionalfiles.RelativePath");
9164

9265
public string? TargetFramework
93-
=> Options.TryGetValue("build_metadata.additionalfiles.targetFramework", out var targetFramework)
94-
? targetFramework
95-
: null;
66+
=> Options.GetValueOrNull("build_metadata.additionalfiles.targetFramework");
9667

9768
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);
10170
}

0 commit comments

Comments
 (0)