Пример #1
0
 public IniSection this[string sectionName]
 {
     get
     {
         var sect = GetSection(sectionName);
         if (sect != null)
         {
             return(sect);
         }
         IniSectionStart start;
         if (Sections.Count > 0)
         {
             var prev = Sections[Sections.Count - 1].SectionStart;
             start = prev.CreateNew(sectionName);
         }
         else
         {
             start = IniSectionStart.FromName(sectionName);
         }
         if (IniSettings.SeparateSection)
         {
             Elements.Add(new IniBlankLine(1));
         }
         Elements.Add(start);
         sect = new IniSection(this, start);
         Sections.Add(sect);
         return(sect);
     }
 }
Пример #2
0
        public static Ini FromElements(IEnumerable <IniElement> elemes)
        {
            var ret = new Ini();

            ret.Elements.AddRange(elemes);
            if (ret.Elements.Count > 0)
            {
                IniSection section = null;

                if (ret.Elements[ret.Elements.Count - 1] is IniBlankLine)
                {
                    ret.Elements.RemoveAt(ret.Elements.Count - 1);
                }
                foreach (var element in ret.Elements)
                {
                    var el = element;
                    if (el is IniSectionStart)
                    {
                        section = new IniSection(ret, (IniSectionStart)el);
                        ret.Sections.Add(section);
                    }
                    else if (section != null)
                    {
                        section.Elements.Add(el);
                    }
                    else if (ret.Sections.Exists(a => a.Name == ""))
                    {
                        ret.Sections[0].Elements.Add(el);
                    }
                    else if (el is IniValue)
                    {
                        section = new IniSection(ret, IniSectionStart.FromName(""));
                        section.Elements.Add(el);
                        ret.Sections.Add(section);
                    }
                }
            }
            return(ret);
        }