Skip to content

Commit 94508ce

Browse files
Slight cleanup
Signed-off-by: Gabriel Adrian Samfira <gsamfira@cloudbasesolutions.com>
1 parent fad2e76 commit 94508ce

3 files changed

Lines changed: 40 additions & 35 deletions

File tree

0 Bytes
Binary file not shown.

powershell-yaml.psm1

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -357,9 +357,7 @@ function ConvertFrom-Yaml {
357357
$d = ''
358358
}
359359
process {
360-
if ($Yaml -is [string]) {
361-
$d += $Yaml + "`n"
362-
}
360+
$d += $Yaml + "`n"
363361
}
364362

365363
end {
@@ -435,8 +433,7 @@ function ConvertTo-Yaml {
435433

436434
[Parameter(ParameterSetName = 'NoOptions')]
437435
[switch]$JsonCompatible,
438-
[switch]$UseFlowStyle,
439-
436+
440437
[switch]$KeepArray,
441438

442439
[switch]$Force
@@ -450,7 +447,7 @@ function ConvertTo-Yaml {
450447
}
451448
}
452449
end {
453-
if ($d -eq $null -or $d.Count -eq 0) {
450+
if ($null -eq $d -or $d.Count -eq 0) {
454451
return
455452
}
456453
if ($d.Count -eq 1 -and !($KeepArray)) {
@@ -465,11 +462,8 @@ function ConvertTo-Yaml {
465462
if ((Test-Path $OutFile) -and !$Force) {
466463
throw 'Target file already exists. Use -Force to overwrite.'
467464
}
468-
$wrt = New-Object 'System.IO.StreamWriter' $OutFile
469-
} else {
470-
$wrt = New-Object 'System.IO.StringWriter'
471465
}
472-
466+
473467
if ($PSCmdlet.ParameterSetName -eq 'NoOptions') {
474468
$Options = 0
475469
if ($JsonCompatible) {
@@ -478,18 +472,25 @@ function ConvertTo-Yaml {
478472
}
479473
}
480474

475+
if ($OutFile) {
476+
$wrt = New-Object 'System.IO.StreamWriter' $OutFile
477+
} else {
478+
$wrt = New-Object 'System.IO.StringWriter'
479+
}
480+
481481
try {
482482
$serializer = Get-Serializer $Options
483483
$serializer.Serialize($wrt, $norm)
484-
} catch {
485-
$_
484+
485+
if ($OutFile) {
486+
return
487+
} else {
488+
return $wrt.ToString()
489+
}
486490
} finally {
487-
$wrt.Close()
488-
}
489-
if ($OutFile) {
490-
return
491-
} else {
492-
return $wrt.ToString()
491+
if ($null -ne $wrt) {
492+
$wrt.Dispose()
493+
}
493494
}
494495
}
495496
}

src/PowerShellYamlSerializer.cs

Lines changed: 21 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerialize
7676
emitter.Emit(new MappingStart(AnchorName.Empty, TagName.Empty, true, mappingStyle));
7777
foreach (DictionaryEntry entry in hObj) {
7878
if(entry.Value == null) {
79-
if (this.omitNullValues == true) {
79+
if (this.omitNullValues) {
8080
continue;
8181
}
8282
serializer(entry.Key, entry.Key.GetType());
@@ -87,10 +87,12 @@ public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerialize
8787
var objType = entry.Value.GetType();
8888
var val = entry.Value;
8989
if (entry.Value is PSObject nestedObj) {
90-
var nestedType = nestedObj.BaseObject.GetType();
91-
if (nestedType != typeof(System.Management.Automation.PSCustomObject)) {
92-
objType = nestedObj.BaseObject.GetType();
93-
val = nestedObj.BaseObject;
90+
if (nestedObj.BaseObject != null) {
91+
var nestedType = nestedObj.BaseObject.GetType();
92+
if (nestedType != typeof(System.Management.Automation.PSCustomObject)) {
93+
objType = nestedObj.BaseObject.GetType();
94+
val = nestedObj.BaseObject;
95+
}
9496
}
9597
serializer(val, objType);
9698
} else {
@@ -132,7 +134,7 @@ public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerialize
132134
emitter.Emit(new MappingStart(AnchorName.Empty, TagName.Empty, true, mappingStyle));
133135
foreach (var prop in psObj.Properties) {
134136
if (prop.Value == null) {
135-
if (this.omitNullValues == true) {
137+
if (this.omitNullValues) {
136138
continue;
137139
}
138140
serializer(prop.Name, prop.Name.GetType());
@@ -142,10 +144,12 @@ public void WriteYaml(IEmitter emitter, object value, Type type, ObjectSerialize
142144
var objType = prop.Value.GetType();
143145
var val = prop.Value;
144146
if (prop.Value is PSObject nestedPsObj) {
145-
var nestedType = nestedPsObj.BaseObject.GetType();
146-
if (nestedType != typeof(System.Management.Automation.PSCustomObject)) {
147-
objType = nestedPsObj.BaseObject.GetType();
148-
val = nestedPsObj.BaseObject;
147+
if (nestedPsObj.BaseObject != null) {
148+
var nestedType = nestedPsObj.BaseObject.GetType();
149+
if (nestedType != typeof(System.Management.Automation.PSCustomObject)) {
150+
objType = nestedPsObj.BaseObject.GetType();
151+
val = nestedPsObj.BaseObject;
152+
}
149153
}
150154
}
151155
serializer(val, objType);
@@ -197,7 +201,7 @@ public override void Emit(MappingStartEventInfo eventInfo, IEmitter emitter) {
197201

198202
public override void Emit(SequenceStartEventInfo eventInfo, IEmitter emitter){
199203
eventInfo.Style = SequenceStyle.Flow;
200-
nextEmitter.Emit(eventInfo, emitter);
204+
base.Emit(eventInfo, emitter);
201205
}
202206
}
203207

@@ -206,19 +210,19 @@ public FlowStyleSequenceEmitter(IEventEmitter next): base(next) {}
206210

207211
public override void Emit(SequenceStartEventInfo eventInfo, IEmitter emitter){
208212
eventInfo.Style = SequenceStyle.Flow;
209-
nextEmitter.Emit(eventInfo, emitter);
213+
base.Emit(eventInfo, emitter);
210214
}
211215
}
212216

213-
class BuilderUtils {
217+
public class BuilderUtils {
214218
public static SerializerBuilder BuildSerializer(
215219
SerializerBuilder builder,
216220
bool omitNullValues = false,
217221
bool useFlowStyle = false,
218222
bool useSequenceFlowStyle = false,
219223
bool jsonCompatible = false) {
220224

221-
if (jsonCompatible == true) {
225+
if (jsonCompatible) {
222226
useFlowStyle = true;
223227
useSequenceFlowStyle = true;
224228
}
@@ -228,14 +232,14 @@ public static SerializerBuilder BuildSerializer(
228232
.WithTypeConverter(new BigIntegerTypeConverter())
229233
.WithTypeConverter(new IDictionaryTypeConverter(omitNullValues, useFlowStyle))
230234
.WithTypeConverter(new PSObjectTypeConverter(omitNullValues, useFlowStyle));
231-
if (omitNullValues == true) {
235+
if (omitNullValues) {
232236
builder = builder
233237
.WithEmissionPhaseObjectGraphVisitor(args => new NullValueGraphVisitor(args.InnerVisitor));
234238
}
235-
if (useFlowStyle == true) {
239+
if (useFlowStyle) {
236240
builder = builder.WithEventEmitter(next => new FlowStyleAllEmitter(next));
237241
}
238-
if (useSequenceFlowStyle == true) {
242+
if (useSequenceFlowStyle) {
239243
builder = builder.WithEventEmitter(next => new FlowStyleSequenceEmitter(next));
240244
}
241245

0 commit comments

Comments
 (0)