Beispiel #1
0
            public void _Init()
            {
                if (_isInitializated)
                {
                    return;
                }
                //
                var           strings        = File.ReadAllLines(_owner.FileName);
                bool          isInsideMethod = false;
                byte          tabs           = 0;
                var           variables      = new Dictionary <Glance.FieldsAccessType, List <string> >();
                List <string> constructors   = new List <string>();

                string constructorBody        = "";
                string currentMethodSignature = null;
                Region currentRegion          = Region.Undefined;

                Glance.FieldsAccessType currentAcessType = Glance.FieldsAccessType.Public;

                foreach (var i in strings)
                {
                    var str = i.Trim();
                    if (str == "")
                    {
                        continue;
                    }
                    if (str.Length > 2)
                    {
                        if (str.Substring(0, 2) == "//")
                        {
                            continue;
                        }
                    }
                    if (str.Contains(Glance.NameSetting.ScriptVariablesRegionName))
                    {
                        currentRegion    = Region.Variables;
                        currentAcessType = Glance.FieldsAccessType.Public;
                        continue;
                    }
                    if (str.Contains(Glance.NameSetting.ScriptMethodsRegionName))
                    {
                        currentRegion    = Region.Methods;
                        currentAcessType = Glance.FieldsAccessType.Public;
                        continue;
                    }

                    if (str.Contains(Glance.NameSetting.ScriptConstructorsRegionName))
                    {
                        currentRegion = Region.Constructor;
                        continue;
                    }
                    if (str.Contains(Glance.NameSetting.ScriptConstructorBodyRegionName))
                    {
                        currentRegion = Region.ConstructorBody;
                        continue;
                    }

                    if (currentRegion == Region.Variables)
                    {
                        if (str.Contains("public:"))
                        {
                            currentAcessType = Glance.FieldsAccessType.Public;
                            continue;
                        }
                        if (str.Contains("private:"))
                        {
                            currentAcessType = Glance.FieldsAccessType.Private;
                            continue;
                        }
                        var tmp = new List <string>();
                        tmp.Add(str.Replace(";", ""));
                        variables.gAddOrMerge(currentAcessType, tmp);
                    }
                    if (currentRegion == Region.Constructor)
                    {
                        constructors.AddRange(str.Split(',').gForEach(x => x.Trim()));                        //add Trimmed array
                    }
                    if (currentRegion == Region.ConstructorBody)
                    {
                        constructorBody += str;
                    }

                    if (currentRegion == Region.Methods)
                    {
                        if (!isInsideMethod)
                        {
                            //if we are not inside of method, then we are at signature of this method
                            if (Glance.getLastChar(str) != '{')
                            {
                                throw new Exception("'{' not at the end of line with method signature, signature is: " + str);
                            }
                            if (str.Contains("public:"))
                            {
                                currentAcessType = Glance.FieldsAccessType.Public;
                                continue;
                            }
                            if (str.Contains("private:"))
                            {
                                currentAcessType = Glance.FieldsAccessType.Private;
                                continue;
                            }
                            currentMethodSignature = str.Substring(0, str.Length - 1);                            //cut '{'
                            ++tabs;
                            isInsideMethod = true;
                            if (MethodsImplementations.ContainsKey(currentMethodSignature))
                            {
                                MethodsImplementations[currentMethodSignature] += "";
                            }
                            else
                            {
                                MethodsImplementations.Add(currentMethodSignature, "");
                            }
                            continue;
                        }
                        if (isInsideMethod)
                        {
                            if (str.Contains("{"))
                            {
                                ++tabs;
                            }
                            if (str.Contains("}"))
                            {
                                --tabs;
                            }
                            if (tabs == 0)
                            {
                                isInsideMethod = false;
                                continue;
                            }
                            if (MethodsImplementations.ContainsKey(currentMethodSignature))
                            {
                                MethodsImplementations[currentMethodSignature] += str + '\n';
                            }
                            else
                            {
                                MethodsImplementations.Add(currentMethodSignature, str + '\n');
                            }
                        }
                    }
                }                //foreach
                Constructors    = constructors;
                ConstructorBody = constructorBody;
                Variables       = variables;
                OnUpdate        = MethodsImplementations[Glance.NameSetting.ScriptOnUpdateSignature];
                OnStart         = MethodsImplementations[Glance.NameSetting.ScriptOnStartSignature];

                MethodsImplementations.Remove(Glance.NameSetting.ScriptOnStartSignature);
                MethodsImplementations.Remove(Glance.NameSetting.ScriptOnUpdateSignature);
                if (MethodsImplementations.ContainsKey(""))
                {
                    MethodsImplementations.Remove("");
                }

                MethodsDeclarations.Add(Glance.FieldsAccessType.Public, MethodsImplementations.Keys.ToList());

                _isInitializated = true;
            } //_Init()
Beispiel #2
0
 internal static List <string> gGetByKeyOrDefault(this Dictionary <Glance.FieldsAccessType, List <string> > dic, Glance.FieldsAccessType t)
 {
     if (dic.ContainsKey(t))
     {
         return(dic[t]);
     }
     else
     {
         return(new List <string>());
     }
 }