Пример #1
0
 /// <summary>
 /// To Prefix
 /// </summary>
 public static string ToPrefix(this IniFileCommentKind value)
 {
     return(value switch {
         IniFileCommentKind.Windows => ";",
         IniFileCommentKind.Unix => "#",
         _ => "",
     });
Пример #2
0
        /// <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;
        }
Пример #4
0
        /// <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);
        }
Пример #5
0
        /// <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);
        }
Пример #6
0
 /// <summary>
 /// Load From File
 /// </summary>
 public static NameValueDocument LoadFromFile(string fileName,
                                              StringComparer comparer,
                                              IniFileCommentKind commentKind) =>
 LoadFromFile(fileName, Encoding.UTF8, comparer, commentKind);