public void Set <T>(string Key, T Value) { if (StringExtensions.Contains(Key, '.')) { jsObject Current = this; int Open = 0, Close = Key.Find('.'); while (Current != null && Open != -1 && Close != -1) { var Sub = Key.Substring(Open, Close - Open); if (Close == Key.Length) { if (Value == null) { Current.Remove(Sub); } else { Current.AssignValue <T>(Sub, Value); } return; } var Next = Current.SearchForItem <jsObject>(Sub); if (Next == null) { Next = new jsObject(); Current.AssignValue(Sub, Next); } Current = Next; Open = Close + 1; Close = Key.Find('.', Open); if (Close == -1) { Close = Key.Length; } } } if (Value == null) { this.Remove(Key); } else { this.AssignValue(Key, Value); } }
public void Set <T>(string[] Keys, T Value) { jsObject Current = this; for (int i = 0; i < Keys.Length; i++) { var Sub = Keys[i]; if ((Keys.Length - i) == 1) { if (Sub.Contains('.')) { Current.Set(Sub, Value); } else { Current.AssignValue <T>(Sub, Value); } break; } var Next = Current.Get <jsObject>(Sub); if (Next == null) { Next = new jsObject(); if (Sub.Contains('.')) { Current.Set(Sub, Next); } else { Current.AssignValue <jsObject>(Sub, Next); } } Current = Next; } }