/// <summary> /// Parses a string containing valid ini data /// </summary> /// <param name="iniDataString"> /// String with data /// </param> /// <returns> /// An <see cref="IniData"/> instance with the data contained in /// the <paramref name="iniDataString"/> correctly parsed an structured. /// </returns> /// <exception cref="ParsingException"> /// Thrown if the data could not be parsed /// </exception> public IniData Parse(string iniDataString) { IniData iniData = new IniData(); iniData.Configuration = this.Configuration.Clone(); if (string.IsNullOrEmpty(iniDataString)) { return iniData; } _currentCommentListTemp.Clear(); _currentSectionNameTemp = null; try { var lines = iniDataString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries); foreach (var line in lines) { ProcessLine(line, iniData); } // Orphan comments, assing to last section if (_currentCommentListTemp.Count > 0) { iniData.Sections.GetSectionData(_currentSectionNameTemp).TrailingComments .AddRange(_currentCommentListTemp); _currentCommentListTemp.Clear(); } } catch { if (Configuration.ThrowExceptionsOnError) throw; return null; } return (IniData)iniData.Clone(); }
/// <summary> /// Parses a string containing valid ini data /// </summary> /// <param name="iniDataString"> /// String with data /// </param> /// <returns> /// An <see cref="IniData"/> instance with the data contained in /// the <paramref name="iniDataString"/> correctly parsed an structured. /// </returns> /// <exception cref="ParsingException"> /// Thrown if the data could not be parsed /// </exception> public IniData Parse(string iniDataString) { IniData iniData = new IniData(); iniData.Configuration = this.Configuration.Clone(); if (string.IsNullOrEmpty(iniDataString)) { return iniData; } _currentCommentListTemp.Clear(); _currentSectionNameTemp = null; try { foreach (var line in iniDataString.Split(Environment.NewLine.ToCharArray(), StringSplitOptions.RemoveEmptyEntries)) ProcessLine(line, iniData); } catch { if (Configuration.ThrowExceptionsOnError) throw; return null; } return (IniData)iniData.Clone(); }