public void AppendBody()

in src/Epam.GraphQL/Diagnostics/Internals/ObjectConfigurationContextBase.cs [23:98]


        public void AppendBody(StringBuilder stringBuilder, IEnumerable<IConfigurationContext> choosenItems, int indent)
        {
            var indicies = new List<int>();
            var choosenItemList = choosenItems.ToList();

            if (choosenItemList.Count == 0)
            {
                indicies.AddRange(Enumerable.Range(0, Children.Count));
            }
            else
            {
                for (var i = 0; i < Children.Count; i++)
                {
                    var index = choosenItemList.FindIndex(choosenItem => ReferenceEquals(choosenItem, Children[i]) || Children[i].Contains(choosenItem));

                    if (index >= 0)
                    {
                        if (i > 0)
                        {
                            indicies.Add(i - 1);
                        }

                        indicies.Add(i);

                        if (i < Children.Count - 1)
                        {
                            indicies.Add(i + 1);
                        }
                    }
                }

                indicies = indicies
                    .Distinct()
                    .OrderBy(index => index)
                    .ToList();
            }

            var nextIndex = 0;

            foreach (var index in indicies)
            {
                if (index != nextIndex)
                {
                    stringBuilder.Append(' ', 4 * indent);
                    stringBuilder.AppendLine("// ...");
                    stringBuilder.AppendLine();
                }

                if (nextIndex > 0)
                {
                    stringBuilder.AppendLine();
                }

                var child = Children[index];
                child.Append(stringBuilder, choosenItems, indent);

                if (choosenItems.Contains(child))
                {
                    stringBuilder.Append(" // <-----");
                }

                stringBuilder.AppendLine();
                nextIndex = index + 1;
            }

            if (nextIndex != Children.Count)
            {
                if (indicies.Count > 0)
                {
                    stringBuilder.AppendLine();
                }

                stringBuilder.Append(' ', 4 * indent);
                stringBuilder.AppendLine("// ...");
            }
        }