EqDoc

                Never    
C#
       
	/// <summary>
	/// 
	/// </summary>
	public class EqDoc
	{
		/// <summary>
		/// Имя
		/// </summary>
		string _name = null;

		/// <summary>
		/// Значение.
		/// </summary>
		string _val = null;

		ArrayList childrenList = new ArrayList();
		SortedList children = new SortedList();
		
		public EqDoc()
		{
		}

		public EqDoc(string name, string val)
		{
			_name = name;
			_val = val;
		}

		public EqDoc(string filename)
		{
			this.filename = filename;
			read1(filename);
		}

		public XmlDoc xmlData;
		public string sData;
		string filename;


		
		
		
		public XmlDoc read(string name)
		{
			string text = IO.getFile(filename);

			sData = Format.stripComments(text);

			ArrayList blocks = Format.parseEqBlocks(sData);

			xmlData = new XmlDoc();
			XmlNode root = xmlData.insertNode("/", name);

			for(int i=0; i<blocks.Count; i++)
			{
				string[] block = (string[])blocks[i];
				if (block[0]=="") continue;
				string res=block[0];
				xmlData.insertNode("/*", Format.replaceSymbols(res), Format.replaceSymbols(block[1]));
			}
				
			return xmlData;
		}
		public EqDoc read1(string filename)
		{
			//Кривовато, но пока покатит... И пока не и разу не сбоила...
			
			string text = IO.getFile(filename);
			while (text==null) 
			{
				Console.WriteLine("Can't Read Settings File " + filename);
				System.Threading.Thread.Sleep(1000);
				text = IO.getFile(filename);
			}

			string sData = Format.stripComments(text);

			ArrayList sblocks = Format.parseSquareBlocks1(sData);

			bool first;
			first = true;

			foreach(string[] sblock in sblocks)
			{
				EqDoc block =  new EqDoc(sblock[0], "");
				
				ArrayList lines = Format.parseEqLines(sblock[1]);

				foreach(string[] line in lines)
				{
					string entryName = (string)line[0];
					EqDoc entry= new EqDoc(entryName, (string)line[1]);
					if(first)
						this.addChild(entry);
					else
						block.addChild(entry);
				}
				
				if(!first)
					addChild(block);

				first = false;

			}
			return this;
		}

		/// <summary>
		/// Возвращает имя
		/// </summary>
		public string name
		{
			get
			{
				return _name;
			}
		}

		/// <summary>
		/// Возвращает значение как string
		/// </summary>
		public string s
		{
			get
			{
				try
				{
					if (this == null) return "";
					return _val;
				} 
				catch (Exception)
				{
					return "";
				}
			}
		}
		/// <summary>
		/// Возвращает значение как int
		/// </summary>
		public int i
		{
			get
			{
				return System.Convert.ToInt32(_val);
			}
		}

		/// <summary>
		/// Возвращает значение как float
		/// </summary>
		public double f
		{
			get
			{
				if (_val.IndexOf(",")>=0 && CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator==".")
					_val=_val.Replace(",",".");
				else if (_val.IndexOf(".")>=0 && CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator==",")
					_val=_val.Replace(".",",");
				return System.Convert.ToDouble(_val);
			}
		}
		public float f_1
		{
			get
			{
				if (_val.IndexOf(",")>=0 && CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator==".")
					_val=_val.Replace(",",".");
				else if (_val.IndexOf(".")>=0 && CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator==",")
					_val=_val.Replace(".",",");
				return (float)System.Convert.ToDouble(_val);
			}
		}

		/// <summary>
		/// Возвращает значение как float
		/// </summary>
		public bool b
		{
			get
			{
				return System.Convert.ToBoolean(_val);
			}
		}
  
		/// <summary>
		/// Добавление подэлемента
		/// </summary>

		public void addChild(EqDoc child)
		{
			string childName = child.name;
			
			if(!children.Contains(childName))
				children[childName] = new ArrayList();
			
			((ArrayList)children[childName]).Add(child);
			childrenList.Add(child);
		}

		/// <summary>
		/// Возвращает блок по имени
		/// </summary>
		public ArrayList block(string name)
		{
			return (ArrayList)children[name];
		}

		/// <summary>
		/// Возвращает элемент по имени
		/// </summary>
		public EqDoc this[string entryName]
		{
			get
			{
				try
				{
					return (EqDoc)(((ArrayList)children[entryName])[0]);
				} 
				catch (Exception)
				{
					Console.WriteLine("Warning option not found "+entryName);
					return null;
				}
			}
		}

		/// <summary>
		/// Возвращает элемент по имени и порядковому номеру
		/// </summary>

		public EqDoc this[string entryName, int num]
		{
			get
			{
				return (EqDoc)(((ArrayList)children[entryName])[num]);
			}
		}
	

	}

Raw Text