/// <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(); } }
public UserCommand(UserCommand uc) { _name = uc.Name; _description = uc.Description; _value = uc.Value; }