Example #1
0
        public void Add(string key, int line)
        {
            var section = Sections.First(x => x.IsCharacterCovered(key.First()));

            if (!section.IsMaxLength())
            {
                section.Add(key, line);
            }
            else
            {
                var midIndex = (CharacterSet.IndexOf(section.FirstRangeCharacter)
                                + CharacterSet.IndexOf(section.LastRangeCharacter))
                               / 2;

                var firstSection  = new Section(section.FirstRangeCharacter, CharacterSet[midIndex]);
                var secondSection = new Section(CharacterSet[midIndex + 1], section.LastRangeCharacter);

                for (var i = 0; i < section.Entries.Length; i++)
                {
                    if (section.Entries[i] == null)
                    {
                        break;
                    }

                    if (firstSection.IsCharacterCovered(section.Entries[i].Word.First()))
                    {
                        firstSection.AddEntry(section.Entries[i]);
                    }
                    else
                    {
                        secondSection.AddEntry(section.Entries[i]);
                    }
                }


                if (firstSection.IsCharacterCovered(key.First()))
                {
                    firstSection.Add(key, line);
                }
                else
                {
                    secondSection.Add(key, line);
                }

                Sections.Add(firstSection);
                Sections.Add(secondSection);

                Sections.Remove(section);
            }
        }
Example #2
0
 public void AddEntry(string name, string value)
 {
     // добавл. запись к текущей секции
     current_sec.AddEntry(name, value);
 }