示例#1
0
 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));
     }
 }
示例#2
0
 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();
 }
示例#3
0
        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;
                        }
                    }
                }
            }
        }