コード例 #1
0
        /// <summary>
        /// Constryctor
        /// </summary>
        /// <param name="fileName">Имя файла</param>
        public profile(string _fileName)
        {
            _Head           = new List <string>();
            _tail           = new List <string>();
            _beforeSegment  = new List <string>();
            _beforeSegmentL = new List <string>();
            _beforeSegmentR = new List <string>();
            _afterSegment   = new List <string>();
            _afterSegmentL  = new List <string>();
            _afterSegmentR  = new List <string>();
            _spoint         = new List <string>();

            _commands = new List <UserCommand>();

            FileName = _fileName;

            StreamReader fs = new StreamReader(FileName, Encoding.GetEncoding(1251));

            // Читаем строку из файла во временную переменную.
            string temp = fs.ReadLine();

            // Если достигнут конец файла, прерываем считывание.
            if (temp == null)
            {
                Name = @"Файл: " + FileName + " неверной структуры!";
                Text = "";
                return;
            }

            Name = temp.Replace("#", "");

            temp = fs.ReadLine();

            DivSymbol = temp.Replace("$", "").Trim();


            string strTT          = "UP"; // or DOWN
            string strCurPosition = "HEAD";

            string strRead = fs.ReadLine();

            while (strRead != null)
            {
                strRead = strRead.Trim().Replace("\t", "");

                if (strRead == "")
                {
                    strRead = fs.ReadLine();
                    continue;
                }

                if (strRead.StartsWith("@"))
                {
                    UserCommand uc = new UserCommand(strRead);

                    if (uc.Description != "")
                    {
                        _commands.Add(new UserCommand(uc));
                    }

                    strRead = fs.ReadLine();
                    continue;
                }

                //комментарии пропустим
                if (strRead.IndexOf(@"//", StringComparison.Ordinal) == 0)
                {
                    strRead = fs.ReadLine();
                    continue;
                }

                //если вложенные данные
                if (strRead == "LINES" || strRead == "POINTS" || strRead == "TOLEFT" || strRead == "TORIGHT" || strRead == "FROMLEFT" || strRead == "FROMRIGHT")
                {
                    strCurPosition = strRead;
                    Text          += strRead + Environment.NewLine;
                    strRead        = fs.ReadLine();

                    continue;
                }

                if (strRead == "{")
                {
                    strTT = "UP";

                    Text   += strRead + Environment.NewLine;
                    strRead = fs.ReadLine();
                    continue;
                }

                if (strRead == "}")
                {
                    strTT = "DOWN";

                    //а вот тут немного сложнее
                    if (strCurPosition == "LINES")
                    {
                        strCurPosition = "HEAD";
                    }

                    if (strCurPosition == "POINTS")
                    {
                        strCurPosition = "LINES";
                    }

                    if (strCurPosition == "TOLEFT")
                    {
                        strTT          = "UP";
                        strCurPosition = "LINES";
                    }

                    if (strCurPosition == "TORIGHT")
                    {
                        strTT          = "UP";
                        strCurPosition = "LINES";
                    }

                    if (strCurPosition == "FROMLEFT")
                    {
                        strCurPosition = "LINES";
                    }

                    if (strCurPosition == "FROMRIGHT")
                    {
                        strCurPosition = "LINES";
                    }


                    //strCurPosition = "";
                    Text   += strRead + Environment.NewLine;
                    strRead = fs.ReadLine();
                    continue;
                }

                Text += strRead + Environment.NewLine;


                if (strCurPosition == "HEAD" && strTT == "UP")
                {
                    _Head.Add(strRead);
                }

                if (strCurPosition == "LINES" && strTT == "UP")
                {
                    _beforeSegment.Add(strRead);
                }

                if (strCurPosition == "TOLEFT" && strTT == "UP")
                {
                    _beforeSegmentL.Add(strRead);
                }

                if (strCurPosition == "TORIGHT" && strTT == "UP")
                {
                    _beforeSegmentR.Add(strRead);
                }

                if (strCurPosition == "POINTS")
                {
                    _spoint.Add(strRead);
                }

                if (strCurPosition == "LINES" && strTT == "DOWN")
                {
                    _afterSegment.Add(strRead);
                }

                if (strCurPosition == "FROMLEFT" && strTT == "UP")
                {
                    _afterSegmentL.Add(strRead);
                }

                if (strCurPosition == "FROMRIGHT" && strTT == "UP")
                {
                    _afterSegmentR.Add(strRead);
                }

                if (strCurPosition == "HEAD" && strTT == "DOWN")
                {
                    _tail.Add(strRead);
                }

                strRead = fs.ReadLine();
            }
        }
コード例 #2
0
 public UserCommand(UserCommand uc)
 {
     _name        = uc.Name;
     _description = uc.Description;
     _value       = uc.Value;
 }