Exemple #1
0
        public void SerializeKey()
        {
            this.Key = "";

            if (this.keyChain.Count <= 0)
            {
                return;
            }

            for (int i = 0; i < this.keyChain.Count; i++)
            {
                DefinerKey key = this.keyChain[i];
                if (key.Index >= 0)
                {
                    this.Key += "[" + key.Index.ToString() + "]";
                }
                else if (!string.IsNullOrEmpty(key.HashKey))
                {
                    this.Key += "[\"" + key.HashKey + "\"]";
                }
                else
                {
                    if (i == 0)
                    {
                        this.Key += key.Key;
                    }
                    else
                    {
                        this.Key += "." + key.Key;
                    }
                }
            }
        }
Exemple #2
0
        public void ParseKey(bool force = false)
        {
            if (keyParsed && !force)
            {
                return;
            }

            keyChain.Clear();

            if (string.IsNullOrEmpty(this.Key))
            {
                return;
            }

            StringBuilder sb         = new StringBuilder(10);
            bool          parseIndex = false;
            bool          parseHash  = false;

            for (int i = 0; i < this.Key.Length; i++)
            {
                char c = this.Key[i];
                if (c.Equals('.'))
                {
                    string key = sb.ToString();
                    if (!string.IsNullOrEmpty(key))
                    {
                        DefinerKey k = new DefinerKey(key);
                        keyChain.Add(k);
                    }
                    sb.Remove(0, sb.Length);
                }
                else if (c.Equals('['))
                {
                    string key = sb.ToString();
                    if (!string.IsNullOrEmpty(key))
                    {
                        DefinerKey k = new DefinerKey(key);
                        keyChain.Add(k);
                    }
                    sb.Remove(0, sb.Length);
                    parseIndex = true;
                }
                else if (c.Equals('"') && parseIndex && !parseHash)
                {
                    sb.Remove(0, sb.Length);
                    parseIndex = false;
                    parseHash  = true;
                }
                else if (c.Equals('"') && !parseIndex && parseHash)
                {
                    string key = sb.ToString();
                    if (!string.IsNullOrEmpty(key))
                    {
                        DefinerKey k = new DefinerKey(null, -1, key);
                        keyChain.Add(k);
                    }
                    sb.Remove(0, sb.Length);
                    parseIndex = true;
                    parseHash  = false;
                }
                else if (c.Equals(']') && parseIndex)
                {
                    int    index = 0;
                    string key   = sb.ToString();
                    if (Int32.TryParse(key, out index))
                    {
                        DefinerKey k = new DefinerKey(null, index, null);
                        keyChain.Add(k);
                    }
                    sb.Remove(0, sb.Length);
                    parseIndex = false;
                }
                else
                {
                    sb.Append(c);
                }
            }
            if (sb.Length > 0 && !parseIndex)
            {
                DefinerKey k = new DefinerKey(sb.ToString());
                keyChain.Add(k);
                sb.Remove(0, sb.Length);
            }
            keyParsed = true;
        }
Exemple #3
0
 public void AddKeyChain(DefinerKey k)
 {
     this.keyChain.Add(k);
 }