internal Dictionary <string, object> Flatten() { Dictionary <string, object> toUpdate = new Dictionary <string, object>(); if (IsLeaf) { toUpdate.Add("value", ((ChangeSetLeaf)this).Value); } else { ChangesetBranch branch = (ChangesetBranch)this; foreach (var item in branch.childs.Keys) { var key = "/" + item; var child = branch[item]; if (child.IsLeaf) { toUpdate[key] = ((ChangeSetLeaf)child).Value; } else { foreach (var childItem in child.Flatten()) { toUpdate[key + childItem.Key] = childItem.Value; } } } } return(toUpdate); }
internal static ChangeSet FromFlatDictionary(Dictionary <string, object> data) { ChangesetBranch branch = new ChangesetBranch(new Dictionary <string, ChangeSet>()); foreach (var item in data) { branch.addPathedValue(item.Key, item.Value); } return(branch); }
internal static ChangeSet FromFlatJToken(JToken token) { ChangesetBranch branch = new ChangesetBranch(new Dictionary <string, ChangeSet>()); foreach (var item in token.Children <JProperty>()) { branch.addPathedValue(item.Name, ((JValue)item.Value).Value); } return(branch); }