public data Parse(string iniDataString) { data iniData = Configuration.CaseInsensitive ? new non_sense_data() : new data(); iniData.Configuration = this.Configuration.Clone(); if (string.IsNullOrEmpty(iniDataString)) { return(iniData); } _errorExceptions.Clear(); _currentCommentListTemp.Clear(); _currentSectionNameTemp = null; try { var lines = iniDataString.Split(new[] { "\n", "\r\n" }, StringSplitOptions.None); for (int lineNumber = 0; lineNumber < lines.Length; lineNumber++) { var line = lines[lineNumber]; if (line.Trim() == String.Empty) { continue; } try { ProcessLine(line, iniData); } catch (Exception ex) { var errorEx = new ParsingException(ex.Message, lineNumber + 1, line, ex); if (Configuration.ThrowExceptionsOnError) { throw errorEx; } else { _errorExceptions.Add(errorEx); } } } if (_currentCommentListTemp.Count > 0) { if (iniData.Sections.Count > 0) { iniData.Sections.GetSectionData(_currentSectionNameTemp).TrailingComments .AddRange(_currentCommentListTemp); } else if (iniData.Global.Count > 0) { iniData.Global.GetLast().Comments .AddRange(_currentCommentListTemp); } _currentCommentListTemp.Clear(); } } catch (Exception ex) { _errorExceptions.Add(ex); if (Configuration.ThrowExceptionsOnError) { throw; } } if (HasError) { return(null); } return((data)iniData.Clone()); }