/// <summary> /// To Prefix /// </summary> public static string ToPrefix(this IniFileCommentKind value) { return(value switch { IniFileCommentKind.Windows => ";", IniFileCommentKind.Unix => "#", _ => "", });
/// <summary> /// Standard Constructor /// </summary> public NameValueDocument(StringComparer comparer, IniFileCommentKind commentKind) { Comparer = comparer ?? StringComparer.OrdinalIgnoreCase; CommentKind = commentKind; m_Records = new Dictionary <string, NameValueRecord>(comparer); }
/// <summary> /// Standard Constructor /// </summary> public IniDocument(StringComparer comparer, IniFileCommentKind commentKind) { if (null == comparer) { comparer = StringComparer.OrdinalIgnoreCase; } m_Sections = new Dictionary <string, IniDocumentSection>(comparer); CommentKind = commentKind; }
/// <summary> /// Load From File /// </summary> public static NameValueDocument LoadFromFile(string fileName, Encoding encoding, StringComparer comparer, IniFileCommentKind commentKind) { NameValueDocument result = Load(File.ReadAllLines(fileName, encoding), comparer, commentKind); result.FileEncoding = encoding; return(result); }
/// <summary> /// Load /// </summary> public static NameValueDocument Load(IEnumerable <string> lines, StringComparer comparer, IniFileCommentKind commentKind) { if (null == lines) { throw new ArgumentNullException(nameof(lines)); } NameValueDocument result = new NameValueDocument(comparer, commentKind); List <string> comments = new List <string>(); int index = 0; foreach (string line in lines.Select(x => x.Trim())) { index += 1; if (string.IsNullOrWhiteSpace(line)) { continue; } if (line.StartsWith(";") || line.StartsWith("#")) { comments.Add(line.Substring(1)); continue; } if (NameValueRecord.TryParse(line, out var record)) { record.Comments = string.Join(Environment.NewLine, comments); comments.Clear(); result.Add(record); } else { throw new FormatException($"Syntax error in line {index}"); } } return(result); }
/// <summary> /// Load From File /// </summary> public static NameValueDocument LoadFromFile(string fileName, StringComparer comparer, IniFileCommentKind commentKind) => LoadFromFile(fileName, Encoding.UTF8, comparer, commentKind);