public static Hash /*!*/ CreateSubclass(ConversionStorage <IList> /*!*/ toAry, RubyClass /*!*/ self, [NotNull] IList /*!*/ list) { Hash result = Hash.CreateInstance(self); var toArySite = toAry.GetSite(TryConvertToArrayAction.Make(toAry.Context)); foreach (object item in list) { IList pair = toArySite.Target(toArySite, item); if (pair != null && pair.Count >= 1 && pair.Count <= 2) { RubyUtils.SetHashElement(self.Context, result, pair[0], (pair.Count == 2) ? pair[1] : null); } } return(result); }
public static Hash /*!*/ CreateSubclass(ConversionStorage <IDictionary <object, object> > /*!*/ toHash, ConversionStorage <IList> /*!*/ toAry, RubyClass /*!*/ self, object listOrHash) { var toHashSite = toHash.GetSite(TryConvertToHashAction.Make(toHash.Context)); var hash = toHashSite.Target(toHashSite, listOrHash); if (hash != null) { return(CreateSubclass(self, hash)); } var toArySite = toAry.GetSite(TryConvertToArrayAction.Make(toAry.Context)); var array = toArySite.Target(toArySite, listOrHash); if (array != null) { return(CreateSubclass(toAry, self, array)); } throw RubyExceptions.CreateArgumentError("odd number of arguments for Hash"); }
public static IList TryCastToArray(ConversionStorage <IList> /*!*/ arrayTryCast, object obj) { var site = arrayTryCast.GetSite(TryConvertToArrayAction.Make(arrayTryCast.Context)); return(site.Target(site, obj)); }
public static IList TryConvert(ConversionStorage <IList> /*!*/ toAry, RubyClass /*!*/ self, object obj) { var site = toAry.GetSite(TryConvertToArrayAction.Make(toAry.Context)); return(site.Target(site, obj)); }