Skip to content

Commit 69ce00b

Browse files
committed
Update Target.cs
1 parent 765b163 commit 69ce00b

File tree

1 file changed

+31
-12
lines changed

1 file changed

+31
-12
lines changed

src/Verify/Target.cs

Lines changed: 31 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -3,40 +3,42 @@
33
public readonly struct Target
44
{
55
internal readonly StringBuilder? stringBuilderData;
6+
readonly object? objectData;
67
internal readonly Stream? streamData;
78
public string Extension { get; }
89
public string? Name { get; } = null;
910
public bool PerformConversion { get; } = true;
1011
public string NameOrTarget => Name ?? "target";
1112

12-
public StringBuilder StringBuilderData
13+
public Stream StreamData
1314
{
1415
get
1516
{
16-
if (stringBuilderData is null)
17+
if (streamData is null)
1718
{
18-
throw new("Use StreamData.");
19+
throw new("Use StringData or StringBuilderData.");
1920
}
2021

21-
return stringBuilderData;
22+
return streamData;
2223
}
2324
}
2425

25-
public Stream StreamData
26+
27+
public StringBuilder StringBuilderData
2628
{
2729
get
2830
{
29-
if (streamData is null)
31+
if (stringBuilderData is null)
3032
{
31-
throw new("Use StringData or StringBuilderData.");
33+
throw new("Use StreamData.");
3234
}
3335

34-
return streamData;
36+
return stringBuilderData;
3537
}
3638
}
37-
3839
public bool IsStream => streamData is not null;
39-
public bool IsString => stringBuilderData is not null;
40+
public bool IsString => stringBuilderData is not null || objectData is not null;
41+
public bool IsObject => objectData is not null;
4042

4143
internal bool TryGetStringBuilder([NotNullWhen(true)] out StringBuilder? value)
4244
{
@@ -50,6 +52,18 @@ internal bool TryGetStringBuilder([NotNullWhen(true)] out StringBuilder? value)
5052
return false;
5153
}
5254

55+
internal bool TryGetObject([NotNullWhen(true)] out object? value)
56+
{
57+
if (objectData is { } @object)
58+
{
59+
value = @object;
60+
return true;
61+
}
62+
63+
value = null;
64+
return false;
65+
}
66+
5367
[OverloadResolutionPriority(-1)]
5468
public Target(string extension, Stream data, string? name = null) :
5569
this(extension, data, name, true)
@@ -83,10 +97,16 @@ public Target(string extension, StringBuilder data, string? name = null)
8397

8498
Extension = extension;
8599
Name = FileNameCleaner.SanitizeFilePath(name);
86-
streamData = null;
87100
stringBuilderData = data;
88101
}
89102

103+
public Target(object data, string extension, string? name = null)
104+
{
105+
Extension = extension;
106+
Name = FileNameCleaner.SanitizeFilePath(name);
107+
objectData = data;
108+
}
109+
90110
static void ValidateExtension(string extension)
91111
{
92112
Guards.AgainstBadExtension(extension);
@@ -111,6 +131,5 @@ public Target(string extension, string data, string? name = null)
111131
Extension = extension;
112132
Name = FileNameCleaner.SanitizeFilePath(name);
113133
stringBuilderData = new(data);
114-
streamData = null;
115134
}
116135
}

0 commit comments

Comments
 (0)