Beispiel #1
0
        public Sentence ShuffleSentence(Sentence sentence)
        {
            if (!sentence.HasClauser())
            {
                return(sentence);
            }

            if (ClauserIsAlreadyAtBeginningOf(sentence))
            {
                return(sentence);
            }

            _clauserSentence = new ClauserSentenceDecorator(sentence);

            if (_clauserSentence.ClauserProceededByComma)
            {
                ShuffleClauserUnitAndBKP(
                    _clauserSentence, _clauserSentence.ClauserIndexPosition, sentence);
                return(sentence);
            }

            ShuffleClauserUnitAndRestOfSentence(
                _clauserSentence, sentence, _clauserSentence.ClauserIndexPosition);

            return(sentence);
        }
Beispiel #2
0
        private static void MoveClauserAndNBKPToAfterNulThat(
            Sentence sentence,
            int clauserPosition,
            IList <Text> clauserTexts,
            ClauserSentenceDecorator clauserSentenceDecorator)
        {
            sentence.Texts.RemoveRange(
                clauserPosition, clauserTexts.Count);

            int nulThatPosition =
                clauserSentenceDecorator.NulThatPosition;

            sentence.Texts.InsertRange(nulThatPosition + 1, clauserTexts);
        }
Beispiel #3
0
        private void MoveClauserUnitAndRestOfSentenceToAfterNulThat(
            int nulThatPosition,
            IList <Text> clauserTexts,
            Sentence sentence,
            ClauserSentenceDecorator clauserSentenceDecorator)
        {
            sentence.Texts.RemoveRange(
                clauserSentenceDecorator.ClauserIndexPosition, clauserTexts.Count);

            clauserTexts.Add(
                CreateUnitProceedingCommaText(
                    sentence.pe_para_no, clauserTexts));

            sentence.Texts.InsertRange(
                nulThatPosition + 1, clauserTexts);
        }
Beispiel #4
0
        private static void ShuffleClauserUnitAndBKP(
            ClauserSentenceDecorator clauserSentenceDecorator, int clauserPosition, Sentence sentence)
        {
            int nbkpPosition =
                clauserSentenceDecorator.GetIndexPositionOfFirstBKPAfterClauser(
                    clauserPosition);

            List <Text> clauserTexts =
                clauserSentenceDecorator.GetClauserUnit(clauserPosition, nbkpPosition);

            if (sentence.Texts.Take(clauserPosition).Any(
                    text => text.IsMdNulThat))
            {
                MoveClauserAndNBKPToAfterNulThat(
                    sentence, clauserPosition, clauserTexts, clauserSentenceDecorator);
            }
            else
            {
                MoveClauserAndNBKPToBeginningOfSentence(
                    sentence, clauserPosition, clauserTexts);
            }
        }
Beispiel #5
0
        private void ShuffleClauserUnitAndRestOfSentence(
            ClauserSentenceDecorator clauserSentenceDecorator, Sentence sentence, int clauserPosition)
        {
            int endOfSentencePosition = clauserSentenceDecorator.EndOfSentencePosition;

            List <Text> clauserTexts =
                clauserSentenceDecorator.GetClauserUnit(
                    clauserPosition, endOfSentencePosition);

            if (sentence.Texts.Take(clauserPosition).Any(
                    text => text.IsMdNulThat))
            {
                MoveClauserUnitAndRestOfSentenceToAfterNulThat(
                    clauserSentenceDecorator.NulThatPosition,
                    clauserTexts,
                    sentence,
                    clauserSentenceDecorator);
            }
            else
            {
                MoveClauserUnitAndRestOfSentenceToBeginningOfSentence(
                    sentence, clauserTexts, clauserPosition);
            }
        }