public static void Puts(BinaryOpStorage /*!*/ writeStorage, ConversionStorage <MutableString> /*!*/ tosConversion, ConversionStorage <IList> /*!*/ tryToAry, object self, [NotNull] object /*!*/ val) { IList list = Protocols.TryCastToArray(tryToAry, val); if (list != null) { IEnumerable recEnum = IListOps.EnumerateRecursively(tryToAry, list, (_) => MutableString.CreateAscii("[...]")); foreach (object item in recEnum ?? list) { Puts(writeStorage, self, ToPrintedString(tosConversion, item)); } } else { Puts(writeStorage, self, ToPrintedString(tosConversion, val)); } }
public void IListOps_EnumerateRecursively1() { var a = new RubyArray(); var b = new RubyArray(); b.Add(new RubyArray { new RubyArray { b } }); a.Add(b); var result = IListOps.EnumerateRecursively(new Runtime.ConversionStorage <System.Collections.IList>(Context), a, -1, list => { Assert(list == b); return(123); }).ToArray(); Assert(result.Length == 1 && (int)result[0] == 123); }