Ejemplo n.º 1
0
        private void _processInserts()
        {
            const string openBracket = "(";
            const string closeBracket = ")";

            var openBracketCount = _textElements.Count(x => x == openBracket);
            var closedBracketCount = _textElements.Count(x => x == closeBracket);
            Debug.Assert(openBracketCount == closedBracketCount);
            Log.InfoFormat($"Обработка входящей строки предложения: значение до: '{InitialText}'");

            // обрабатываем простой случай, когда нет вложенных скобок
            while (_textElements.Any(x => x == openBracket))
            {
                var openBracketOrder = _textElements.IndexOf(openBracket);
                var closedBracketOrder = _textElements.IndexOf(closeBracket);
                Debug.Assert(closedBracketOrder > openBracketOrder);

                if (closedBracketOrder - openBracketOrder > 0)
                {
                    var insertText = string.Join(" ", _textElements.Skip(openBracketOrder + 1).Take(closedBracketOrder - openBracketOrder - 1));
                    Log.InfoFormat($"Обработка входящей строки предложения: найдена вставка '{insertText}'.");

                    SentenceIndexInfo.Info2 = IndexInfoInserts.InsertsPresented;

                    RemovedTextElementsInfo = new RemovedTextElementsInfo();
                    var removedTextElementInfo = new RemovedTextElementInfo()
                    {
                        Type = RemovedTextElementType.BeforeInsert,
                        ElementOrder = openBracketOrder,
                        ElementsCount = closedBracketOrder - openBracketOrder
                    };
                    RemovedTextElementsInfo.Add(removedTextElementInfo);

                    Log.InfoFormat($"Создан объект вставки для '{GetInsertText(removedTextElementInfo)}'.");

                    Log.InfoFormat($"Земена открывающей скобки '{_textElements[openBracketOrder - 1]} {_textElements[openBracketOrder]} {_textElements[openBracketOrder + 1]}' на запятую.");
                    _textElements[openBracketOrder] = ",";

                    _textElements.RemoveAt(closedBracketOrder);
                 }

                InitialText = string.Join(" ", _textElements);
                _readTextElements();
            }
            Log.InfoFormat($"Обработка входящей строки предложения: значение после: '{InitialText}'");
        }
 internal static List<SentenceElement> GetSentenceElements(RemovedTextElementInfo insert, Sentence sentence)
 {
     return sentence.Elements.Skip(insert.ElementOrder).Take(insert.ElementsCount).ToList();
 }
Ejemplo n.º 3
0
 public string GetInsertText(RemovedTextElementInfo insertInfo)
 {
     return string.Join(" ", _textElements.Skip(insertInfo.ElementOrder + 1).Take(insertInfo.ElementsCount));
 }
Ejemplo n.º 4
0
 public void AddInsert(Sentence sentence, RemovedTextElementInfo insert, List<int> insertsAreUps, SentenceElement upWordOutOfInsert, SentenceElement firstWord)
 {
     _items.Add(new Insert(sentence, insert, insertsAreUps, upWordOutOfInsert, firstWord));
 }