public static IEnumerable ConvertFromYaml()

in src/PSRule/Pipeline/PipelineReciever.cs [98:146]


        public static IEnumerable<TargetObject> ConvertFromYaml(TargetObject targetObject, VisitTargetObject next)
        {
            // Only attempt to deserialize if the input is a string, file or URI
            if (!IsAcceptedType(targetObject))
                return new TargetObject[] { targetObject };

            var reader = ReadAsReader(targetObject, out var sourceInfo);
            var d = new DeserializerBuilder()
                .IgnoreUnmatchedProperties()
                .WithTypeConverter(new PSObjectYamlTypeConverter())
                .WithNodeDeserializer(
                    inner => new PSObjectYamlDeserializer(inner, sourceInfo),
                    s => s.InsteadOf<YamlConvertibleNodeDeserializer>())
                .Build();

            try
            {
                var parser = new YamlDotNet.Core.Parser(reader);
                var result = new List<TargetObject>();
                parser.TryConsume<StreamStart>(out _);
                while (parser.Current is DocumentStart)
                {
                    var item = d.Deserialize<PSObject[]>(parser);
                    if (item == null)
                        continue;

                    var items = VisitItems(item, sourceInfo, next);
                    if (items == null)
                        continue;

                    result.AddRange(items);
                }

                return result.Count == 0 ? EmptyArray : result.ToArray();
            }
            catch (Exception ex)
            {
                if (sourceInfo != null && !string.IsNullOrEmpty(sourceInfo.File))
                {
                    RunspaceContext.CurrentThread.Writer.ErrorReadFileFailed(sourceInfo.File, ex);
                    return EmptyArray;
                }
                throw;
            }
            finally
            {
                reader.Dispose();
            }
        }