예제 #1
0
파일: Program.cs 프로젝트: Toocanzs/OWLib
        public static void FixClass(string file)
        {
            List <InstanceCode> instances = new List <InstanceCode>();
            uint bracketLevel             = 0;

            string previousLine = "";
            uint   lineIndex    = 0;

            string[] lines = File.ReadAllLines(file);

            foreach (string line in lines)
            {
                string realLine = line.TrimStart(' ');
                if (realLine.Contains("{"))
                {
                    bracketLevel++;
                }
                if (realLine.Contains("}"))
                {
                    bracketLevel--;
                }

                if (InstanceCode.Check(previousLine))
                {
                    InstanceCode instance = new InstanceCode(bracketLevel)
                    {
                        StartLine = lineIndex
                    };
                    instance.Feed(previousLine);
                    instances.Add(instance);
                }

                foreach (InstanceCode instance in instances)
                {
                    if (bracketLevel < instance.IndentLevel && !instance.IsDone)
                    {
                        instance.IsDone  = true;
                        instance.EndLine = lineIndex - 1;
                        continue;
                    }

                    if (bracketLevel >= instance.IndentLevel)
                    {
                        instance.Feed(line);
                    }
                }

                previousLine = realLine;
                lineIndex++;
            }

            if (instances.Count == 0)
            {
                return;
            }

            StringBuilder output = new StringBuilder();

            foreach (InstanceCode instance in instances)
            {
                instance.ParseFedLines();
                instance.UpdateFields(FieldNames);
            }

            lineIndex = 0;
            foreach (string line in lines)
            {
                bool writeNormal = true;

                foreach (InstanceCode instance in instances)
                {
                    if (instance.StartLine < lineIndex && instance.EndLine >= lineIndex)
                    {
                        writeNormal = false;
                    }

                    if (lineIndex == instance.StartLine + 1)
                    {
                        instance.Write(output);
                    }
                }

                if (writeNormal)
                {
                    output.AppendLine(line);
                }

                lineIndex++;
            }

            Console.Out.WriteLine(output);
            string outTest = OutputDirectory + file.Replace(InputDirectory, "");

            WriteStringToFile(output.ToString(), outTest);
        }
예제 #2
0
 public override int GetHashCode()
 {
     return(ClassGroupCode.GetHashCode()
            ^ ClassCode.GetHashCode()
            ^ InstanceCode.GetHashCode());
 }