public Node Normalized() { if (IsDictionary) { var node = new Node(_type); foreach (var kv in AsDictionary.OrderBy(kv => kv.Key)) { node.AsDictionary.Add(kv.Key, kv.Value.Normalized()); } return(node); } else if (IsList) { var node = new Node(_type); foreach (var child in AsList.OrderBy(n => n.AsString)) { node.AsList.Add(child.Normalized()); } return(node); } else { return(Node.From(AsString)); } }
public void AddSetting(string name, string value) { if (AsList.Count(x => x.Key == name) == 0) { List.Add(new KeyValuePair <string, string>(name, value)); } else { for (var index = 0; index < List.Count; index++) { var keyValuePair = (KeyValuePair <string, string>)List[index]; if (keyValuePair.Key == name) { this.List.RemoveAt(index); List.Add(new KeyValuePair <string, string>(name, value)); } } } Save(); }
public void breakDownString(string nasty, kParse parseAs) { string part = string.Empty; int pos = 0; int bracecount = 0; while (pos < nasty.Length) { if (nasty[pos] == '(') { bracecount++; } if (nasty[pos] == ')') { bracecount--; } if (nasty[pos] == ',' && bracecount == 0) { switch (parseAs) { case kParse.kSelect: { string participle = string.Empty; string astext = string.Empty; if (breakAs(part, ref participle, ref astext)) { SelectList.Add(participle.Trim()); AsList.Add(astext.Trim()); } else { part = part.Trim(); if (part.Length > 0) { SelectList.Add(part.Trim()); AsList.Add(string.Empty); } } } break; case kParse.kFrom: { FromList.Add(part.Trim()); } break; case kParse.kOrderby: { OrderbyList.Add(part.Trim()); } break; } part = string.Empty; pos++; } else { part += nasty[pos].ToString(); pos++; if (pos == nasty.Length) { switch (parseAs) { case kParse.kSelect: { string participle = string.Empty; string astext = string.Empty; if (breakAs(part, ref participle, ref astext)) { SelectList.Add(participle.Trim()); AsList.Add(astext.Trim()); } else { part = part.Trim(); if (part.Length > 0) { SelectList.Add(part.Trim()); AsList.Add(string.Empty); } } } break; case kParse.kFrom: FromList.Add(part.Trim()); break; case kParse.kOrderby: OrderbyList.Add(part.Trim()); break; } } } } }