Example #1
0
		public override void Add (JSONNode aItem)
		{
			var tmp = new JSONArray ();
			tmp.Add (aItem);
			Set (tmp);
		}
Example #2
0
		public override void Add (string aKey, JSONNode aItem)
		{
			var tmp = new JSONClass ();
			tmp.Add (aKey, aItem);
			Set (tmp);
		}
Example #3
0
 public JSONLazyCreator(JSONNode aNode)
 {
     m_Node = aNode;
     m_Key  = null;
 }
Example #4
0
		private void Set (JSONNode aVal)
		{
			if (m_Key == null) {
				m_Node.Add (aVal);
			} else {
				m_Node.Add (m_Key, aVal);
			}
			m_Node = null; // Be GC friendly.
		}
Example #5
0
		public virtual void Add (JSONNode aItem)
		{
			Add ("", aItem);
		}
Example #6
0
		public override JSONNode Remove (JSONNode aNode)
		{
			try {
				var item = m_Dict.Where (k => k.Value == aNode).First ();
				m_Dict.Remove (item.Key);
				return aNode;
			} catch {
				return null;
			}
		}
Example #7
0
 public override JSONNode Remove(JSONNode aNode)
 {
     m_List.Remove(aNode);
     return(aNode);
 }
Example #8
0
		public override void Add (string aKey, JSONNode aItem)
		{
			m_List.Add (aItem);
		}
Example #9
0
 public virtual void Add(string aKey, JSONNode aItem)
 {
 }
Example #10
0
 public override void Add(string aKey, JSONNode aItem)
 {
     m_List.Add(aItem);
 }
Example #11
0
        public static JSONNode Parse(string aJSON)
        {
            Stack <JSONNode> stack = new Stack <JSONNode> ();
            JSONNode         ctx   = null;
            int    i             = 0;
            string Token         = "";
            string TokenName     = "";
            bool   QuoteMode     = false;
            bool   TokenIsString = false;

            while (i < aJSON.Length)
            {
                switch (aJSON [i])
                {
                case '{':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                        break;
                    }
                    stack.Push(new JSONClass());
                    if (ctx != null)
                    {
                        TokenName = TokenName.Trim();
                        if (ctx is JSONArray)
                        {
                            ctx.Add(stack.Peek());
                        }
                        else if (TokenName != "")
                        {
                            ctx.Add(TokenName, stack.Peek());
                        }
                    }
                    TokenName = "";
                    Token     = "";
                    ctx       = stack.Peek();
                    break;

                case '[':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                        break;
                    }

                    stack.Push(new JSONArray());
                    if (ctx != null)
                    {
                        TokenName = TokenName.Trim();

                        if (ctx is JSONArray)
                        {
                            ctx.Add(stack.Peek());
                        }
                        else if (TokenName != "")
                        {
                            ctx.Add(TokenName, stack.Peek());
                        }
                    }
                    TokenName = "";
                    Token     = "";
                    ctx       = stack.Peek();
                    break;

                case '}':
                case ']':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                        break;
                    }
                    if (stack.Count == 0)
                    {
                        throw new Exception("JSON Parse: Too many closing brackets");
                    }

                    stack.Pop();
                    if (Token != "")
                    {
                        TokenName = TokenName.Trim();

                        /*
                         * if (ctx is JSONArray)
                         *      ctx.Add (Token);
                         * else if (TokenName != "")
                         *      ctx.Add (TokenName, Token);
                         */
                        AddElement(ctx, Token, TokenName, TokenIsString);
                        TokenIsString = false;
                    }
                    TokenName = "";
                    Token     = "";
                    if (stack.Count > 0)
                    {
                        ctx = stack.Peek();
                    }
                    break;

                case ':':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                        break;
                    }
                    TokenName     = Token;
                    Token         = "";
                    TokenIsString = false;
                    break;

                case '"':
                    QuoteMode    ^= true;
                    TokenIsString = QuoteMode == true ? true : TokenIsString;
                    break;

                case ',':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                        break;
                    }
                    if (Token != "")
                    {
                        /*
                         * if (ctx is JSONArray) {
                         *      ctx.Add (Token);
                         * } else if (TokenName != "") {
                         *      ctx.Add (TokenName, Token);
                         * }
                         */
                        AddElement(ctx, Token, TokenName, TokenIsString);
                        TokenIsString = false;
                    }
                    TokenName     = "";
                    Token         = "";
                    TokenIsString = false;
                    break;

                case '\r':
                case '\n':
                    break;

                case ' ':
                case '\t':
                    if (QuoteMode)
                    {
                        Token += aJSON [i];
                    }
                    break;

                case '\\':
                    ++i;
                    if (QuoteMode)
                    {
                        char C = aJSON [i];
                        switch (C)
                        {
                        case 't':
                            Token += '\t';
                            break;

                        case 'r':
                            Token += '\r';
                            break;

                        case 'n':
                            Token += '\n';
                            break;

                        case 'b':
                            Token += '\b';
                            break;

                        case 'f':
                            Token += '\f';
                            break;

                        case 'u':
                        {
                            string s = aJSON.Substring(i + 1, 4);
                            Token += (char)int.Parse(
                                s,
                                System.Globalization.NumberStyles.AllowHexSpecifier);
                            i += 4;
                            break;
                        }

                        default:
                            Token += C;
                            break;
                        }
                    }
                    break;

                default:
                    Token += aJSON [i];
                    break;
                }
                ++i;
            }
            if (QuoteMode)
            {
                throw new Exception("JSON Parse: Quotation marks seems to be messed up.");
            }
            return(ctx);
        }
Example #12
0
 public static JSONNode Parse(string aJSON)
 {
     return(JSONNode.Parse(aJSON));
 }
Example #13
0
 public JSONLazyCreator(JSONNode aNode, string aKey)
 {
     m_Node = aNode;
     m_Key  = aKey;
 }
Example #14
0
		static void AddElement (JSONNode ctx, string token, string tokenName, bool tokenIsString)
		{
			if (tokenIsString) {
				if (ctx is JSONArray)
					ctx.Add (token);
				else
					ctx.Add (tokenName, token); // assume dictionary/object
			} else {
				JSONData number = Numberize (token);
				if (ctx is JSONArray)
					ctx.Add (number);
				else
					ctx.Add (tokenName, number);
 
			}
		}
Example #15
0
 public virtual void Add(JSONNode aItem)
 {
     Add("", aItem);
 }
Example #16
0
		public virtual void Add (string aKey, JSONNode aItem)
		{
		}
Example #17
0
        /// <summary>
        /// Updte Visual Studio Code Launch file
        /// </summary>
        static void UpdateLaunchFile(int port)
        {
            //TODO Eventually all this JSON can be replaced with intragrated JSON

            // Create Default Config
            SimpleJSON.JSONClass defaultClass = new SimpleJSON.JSONClass();
            defaultClass ["name"]              = "Unity";
            defaultClass ["type"]              = "mono";
            defaultClass ["address"]           = "localhost";
            defaultClass ["port"].AsInt        = port;
            defaultClass ["sourceMaps"].AsBool = false;

            // Create Default Node
            SimpleJSON.JSONNode defaultNode = new SimpleJSON.JSONClass();
            defaultNode ["version"]             = "0.1.0";
            defaultNode ["configurations"] [-1] = defaultClass;

            if (!Directory.Exists(VSCode.LaunchFolder))
            {
                System.IO.Directory.CreateDirectory(VSCode.LaunchFolder);
            }

            if (!File.Exists(VSCode.LaunchPath))
            {
                File.WriteAllText(VSCode.LaunchPath, defaultNode.ToString());
            }
            else
            {
                string rawContent = File.ReadAllText(VSCode.LaunchPath);
                SimpleJSON.JSONNode existingNode = SimpleJSON.JSON.Parse(rawContent);

                bool found = false;

                if (existingNode != null && existingNode ["configurations"] != null)
                {
                    int index = 0;

                    foreach (SimpleJSON.JSONNode conf in existingNode["configurations"].AsArray)
                    {
                        if (conf ["name"].Value == "Unity")
                        {
                            found = true;
                            break;
                        }
                        index++;
                    }

                    if (found)
                    {
                        existingNode ["configurations"] [index] = defaultClass;
                    }
                }

                if (found)
                {
                    File.WriteAllText(VSCode.LaunchPath, existingNode.ToString());
                }
                else
                {
                    File.WriteAllText(VSCode.LaunchPath, defaultNode.ToString());
                }
            }
        }
Example #18
0
		public override JSONNode Remove (JSONNode aNode)
		{
			m_List.Remove (aNode);
			return aNode;
		}
Example #19
0
		public JSONLazyCreator (JSONNode aNode)
		{
			m_Node = aNode;
			m_Key = null;
		}
Example #20
0
		public override void Add (string aKey, JSONNode aItem)
		{
			if (!string.IsNullOrEmpty (aKey)) {
				if (m_Dict.ContainsKey (aKey))
					m_Dict [aKey] = aItem;
				else
					m_Dict.Add (aKey, aItem);
			} else
				m_Dict.Add (Guid.NewGuid ().ToString (), aItem);
		}
Example #21
0
		public JSONLazyCreator (JSONNode aNode, string aKey)
		{
			m_Node = aNode;
			m_Key = aKey;
		}
Example #22
0
		public virtual JSONNode Remove (JSONNode aNode)
		{
			return aNode;
		}
Example #23
0
 public virtual JSONNode Remove(JSONNode aNode)
 {
     return(aNode);
 }