public void TestCommandSingleHash() { var expect = new NovaDictionary(new Dictionary <object, object> { { "hello", "world" } }); var real = CompileAndExecute("def func(h) { return h; }; func('hello' => 'world');"); Assert.That(real, Is.EqualTo(expect)); }
private dynamic ConvertElements(NovaDictionary res) { List <dynamic> keysToRemove = new List <object>(); keysToRemove.AddRange(res.Keys.OfType <NovaString>()); keysToRemove.ForEach(o => { string s = o; var val = res[o]; res.Remove(o); res[s] = val; }); keysToRemove.Clear(); keysToRemove.AddRange( res.Keys.Where( key => res[key] is NovaString || res[key] is NovaNumber || res[key] is NovaArray || res[key] is NovaDictionary)); keysToRemove.ForEach(o => { if (res[o] is NovaString) { string s = res[o]; res[o] = s; } else if (res[o] is NovaNumber) { res[o] = NovaNumber.Convert(res[o]); } else if (res[o] is NovaArray) { res[o] = ConvertElements((NovaArray)res[o]); } else if (res[o] is NovaDictionary) { res[o] = ConvertElements((NovaDictionary)res[o]); } }); return(res); }