public static object DeleteIf(RubyContext /*!*/ context, BlockParam block, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; IDictionary variables = pal.GetEnvironmentVariables(); if (variables.Count > 0 && block == null) { throw RubyExceptions.NoBlockGiven(); } foreach (DictionaryEntry entry in variables) { MutableString key = FrozenString(context, entry.Key); MutableString value = FrozenString(context, entry.Value); object result; if (block.Yield(key, value, out result)) { return(result); } if (RubyOps.IsTrue(result)) { SetVariable(context, self, key, null); } } return(self); }
public static Hash /*!*/ ToHash(RubyContext /*!*/ context, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; Hash result = new Hash(context); foreach (DictionaryEntry entry in pal.GetEnvironmentVariables()) { result.Add(MutableString.Create(entry.Key.ToString()).Freeze(), MutableString.Create(entry.Value.ToString()).Freeze()); } return(result); }
public static object Shift(RubyContext /*!*/ context, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; IDictionary variables = pal.GetEnvironmentVariables(); if (variables.Count == 0) { return(null); } RubyArray result = new RubyArray(2); foreach (DictionaryEntry entry in pal.GetEnvironmentVariables()) { string key = entry.Key.ToString(); result.Add(MutableString.Create(key).Freeze()); result.Add(MutableString.Create(entry.Value.ToString()).Freeze()); pal.SetEnvironmentVariable(key, null); break; } return(result); }
public static RubyArray /*!*/ Keys(RubyContext /*!*/ context, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; IDictionary variables = pal.GetEnvironmentVariables(); RubyArray result = new RubyArray(variables.Count); foreach (DictionaryEntry entry in variables) { result.Add(MutableString.Create(entry.Key.ToString()).Freeze()); } return(result); }
public static MutableString Index(RubyContext /*!*/ context, object /*!*/ self, [DefaultProtocol, NotNull] MutableString /*!*/ value) { string strValue = value.ConvertToString(); PlatformAdaptationLayer pal = context.DomainManager.Platform; foreach (DictionaryEntry entry in pal.GetEnvironmentVariables()) { if (strValue.Equals(entry.Value)) { return(FrozenString(context, entry.Key)); } } return(null); }
public static object EachKey(RubyContext /*!*/ context, BlockParam block, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; IDictionary variables = pal.GetEnvironmentVariables(); if (variables.Count > 0 && block == null) { throw RubyExceptions.NoBlockGiven(); } foreach (DictionaryEntry entry in variables) { MutableString name = FrozenString(context, entry.Key); object result; if (block.Yield(name, out result)) { return(result); } } return(self); }
public static object EachValue(RubyContext /*!*/ context, BlockParam block, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; IDictionary variables = pal.GetEnvironmentVariables(); if (variables.Count > 0 && block == null) { throw RubyExceptions.NoBlockGiven(); } foreach (DictionaryEntry entry in variables) { MutableString value = MutableString.Create(entry.Value.ToString()).Freeze(); object result; if (block.Yield(value, out result)) { return(result); } } return(self); }
public static bool HasValue(RubyContext /*!*/ context, object /*!*/ self, object value) { // MRI doesn't use CastToString conversion here: var strValue = value as MutableString; if (value == null) { return(false); } var clrStrValue = strValue.ConvertToString(); PlatformAdaptationLayer pal = context.DomainManager.Platform; foreach (DictionaryEntry entry in pal.GetEnvironmentVariables()) { if (clrStrValue.Equals(entry.Value)) { return(true); } } return(false); }
public static object Each(RubyContext /*!*/ context, BlockParam block, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; var variables = pal.GetEnvironmentVariables(); if (variables.Count > 0 && block == null) { throw RubyExceptions.NoBlockGiven(); } foreach (var entry in variables) { RubyArray array = new RubyArray(2); array.Add(FrozenString(context, entry.Key)); array.Add(FrozenString(context, entry.Value)); object result; if (block.Yield(array, out result)) { return(result); } } return(self); }
public static int Length(RubyContext /*!*/ context, object /*!*/ self) { PlatformAdaptationLayer pal = context.DomainManager.Platform; return(pal.GetEnvironmentVariables().Count); }