Example #1
0
        /// <summary>
        /// Standard Constructor
        /// </summary>
        public NameValueRecord(NameValueDocument owner, string name, string value)
        {
            Name  = name ?? "";
            Value = value ?? "";

            if (owner != null)
            {
                owner.CoreAddRecord(this);
            }
        }
Example #2
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);
        }
Example #3
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);
        }