OSDN Git Service

Update copyright year
[radegast/radegast.git] / Radegast / Core / LSLKeywordParser.cs
index 4da007c..6232192 100644 (file)
-// \r
-// Radegast Metaverse Client\r
-// Copyright (c) 2009, Radegast Development Team\r
-// All rights reserved.\r
-// \r
-// Redistribution and use in source and binary forms, with or without\r
-// modification, are permitted provided that the following conditions are met:\r
-// \r
-//     * Redistributions of source code must retain the above copyright notice,\r
-//       this list of conditions and the following disclaimer.\r
-//     * Redistributions in binary form must reproduce the above copyright\r
-//       notice, this list of conditions and the following disclaimer in the\r
-//       documentation and/or other materials provided with the distribution.\r
-//     * Neither the name of the application "Radegast", nor the names of its\r
-//       contributors may be used to endorse or promote products derived from\r
-//       this software without specific prior written permission.\r
-// \r
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"\r
-// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE\r
-// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE\r
-// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE\r
-// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL\r
-// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR\r
-// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER\r
-// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,\r
-// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
-// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
-//\r
-// $Id$\r
-//\r
-using System;\r
-using System.Collections.Generic;\r
-using System.Linq;\r
-using System.Drawing;\r
-using System.Text;\r
-using System.Text.RegularExpressions;\r
-using OpenMetaverse;\r
-\r
-namespace Radegast\r
-{\r
-    struct LSLKeyWord\r
-    {\r
-        public string KeyWord;\r
-        public string ToolTip;\r
-        public Color Color;\r
-\r
-        public override string ToString()\r
-        {\r
-            return KeyWord;\r
-        }\r
-    }\r
-\r
-    class LSLKeywordParser\r
-    {\r
-        private static Dictionary<string, LSLKeyWord> keyWords;\r
-        \r
-        public static Dictionary<string, LSLKeyWord> KeyWords\r
-        {\r
-            get\r
-            {\r
-                if (keyWords != null)\r
-                    return keyWords;\r
-                else\r
-                {\r
-                    keyWords = Parse();\r
-                    return keyWords;\r
-                }\r
-            }\r
-        }\r
-\r
-        private static Regex sectionRegex = new Regex(@"\[(\w+)\s+([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\]", RegexOptions.Compiled);\r
-        private static Regex keyWordRegex = new Regex(@"^([^\s]+)(\s+(.*))?", RegexOptions.Compiled);\r
-\r
-        public static Dictionary<string, LSLKeyWord> Parse()\r
-        {\r
-            Dictionary<string, LSLKeyWord> ret = new Dictionary<string, LSLKeyWord>();\r
-            Color currentColor = Color.Black;\r
-\r
-            bool valid = false; \r
-            string section = string.Empty;\r
-\r
-            foreach (String line in Properties.Resources.lsl_keywords.Split('\n'))\r
-            {\r
-                Match m;\r
-\r
-                string l = line.Trim();\r
-                // Skip comments\r
-                if (l.StartsWith("#"))\r
-                {\r
-                    continue;\r
-                }\r
-\r
-                // Looking for line like [word 0, .3, .5]\r
-                if ((m = sectionRegex.Match(l)).Success)\r
-                {\r
-                    section = m.Groups[1].Value;\r
-                    if (section == "word")\r
-                    {\r
-                        valid = true;\r
-                        float r = float.Parse(m.Groups[2].Value, System.Globalization.CultureInfo.InvariantCulture);\r
-                        float g = float.Parse(m.Groups[3].Value, System.Globalization.CultureInfo.InvariantCulture);\r
-                        float b = float.Parse(m.Groups[4].Value, System.Globalization.CultureInfo.InvariantCulture);\r
-                        currentColor = Color.FromArgb((int)(r * 255), (int)(g * 255), (int)(b * 255));\r
-                    }\r
-                    else\r
-                    {\r
-                        valid = false;\r
-                    }\r
-                    continue;\r
-                }\r
-\r
-                if ((m = keyWordRegex.Match(l)).Success)\r
-                {\r
-                    LSLKeyWord kw = new LSLKeyWord();\r
-                    kw.KeyWord = m.Groups[1].Value;\r
-                    kw.ToolTip = m.Groups[3].Value.Replace(@"\n", "\n");\r
-                    kw.Color = currentColor;\r
-\r
-                    if (valid)\r
-                    {\r
-                        ret.Add(kw.KeyWord, kw);\r
-                    }\r
-                    continue;\r
-                }\r
-            }\r
-            return ret;\r
-        }\r
-    }\r
-}\r
+// 
+// Radegast Metaverse Client
+// Copyright (c) 2009-2014, Radegast Development Team
+// All rights reserved.
+// 
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are met:
+// 
+//     * Redistributions of source code must retain the above copyright notice,
+//       this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above copyright
+//       notice, this list of conditions and the following disclaimer in the
+//       documentation and/or other materials provided with the distribution.
+//     * Neither the name of the application "Radegast", nor the names of its
+//       contributors may be used to endorse or promote products derived from
+//       this software without specific prior written permission.
+// 
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+// AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+// IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+// DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
+// FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+// DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+// SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+// CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+// OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+//
+// $Id$
+//
+using System;
+using System.Collections.Generic;
+using System.Drawing;
+using System.Text.RegularExpressions;
+
+namespace Radegast
+{
+    public struct LSLKeyWord
+    {
+        public string KeyWord;
+        public string ToolTip;
+        public Color Color;
+
+        public override string ToString()
+        {
+            return KeyWord;
+        }
+    }
+
+    public class LSLKeywordParser
+    {
+        private static Dictionary<string, LSLKeyWord> keyWords;
+        
+        public static Dictionary<string, LSLKeyWord> KeyWords
+        {
+            get
+            {
+                if (keyWords != null)
+                    return keyWords;
+                else
+                {
+                    keyWords = Parse();
+                    return keyWords;
+                }
+            }
+        }
+
+        private static Regex sectionRegex = new Regex(@"\[(\w+)\s+([\d.]+)\s*,\s*([\d.]+)\s*,\s*([\d.]+)\s*\]", RegexOptions.Compiled);
+        private static Regex keyWordRegex = new Regex(@"^([^\s]+)(\s+(.*))?", RegexOptions.Compiled);
+
+        public static Dictionary<string, LSLKeyWord> Parse()
+        {
+            Dictionary<string, LSLKeyWord> ret = new Dictionary<string, LSLKeyWord>();
+            Color currentColor = Color.Black;
+
+            bool valid = false; 
+            string section = string.Empty;
+
+            foreach (String line in Properties.Resources.lsl_keywords.Split('\n'))
+            {
+                Match m;
+
+                string l = line.Trim();
+                // Skip comments
+                if (l.StartsWith("#"))
+                {
+                    continue;
+                }
+
+                // Looking for line like [word 0, .3, .5]
+                if ((m = sectionRegex.Match(l)).Success)
+                {
+                    section = m.Groups[1].Value;
+                    if (section == "word")
+                    {
+                        valid = true;
+                        float r = float.Parse(m.Groups[2].Value, System.Globalization.CultureInfo.InvariantCulture);
+                        float g = float.Parse(m.Groups[3].Value, System.Globalization.CultureInfo.InvariantCulture);
+                        float b = float.Parse(m.Groups[4].Value, System.Globalization.CultureInfo.InvariantCulture);
+                        currentColor = Color.FromArgb((int)(r * 255), (int)(g * 255), (int)(b * 255));
+                    }
+                    else
+                    {
+                        valid = false;
+                    }
+                    continue;
+                }
+
+                if ((m = keyWordRegex.Match(l)).Success)
+                {
+                    LSLKeyWord kw = new LSLKeyWord();
+                    kw.KeyWord = m.Groups[1].Value;
+                    kw.ToolTip = m.Groups[3].Value.Replace(@"\n", "\n");
+                    kw.Color = currentColor;
+
+                    if (valid)
+                    {
+                        ret.Add(kw.KeyWord, kw);
+                    }
+                    continue;
+                }
+            }
+            return ret;
+        }
+    }
+}