Beispiel #1
0
        private void ShuffleMDUnitsAfterMDBKInDescendingOrder(
            List <Text> textsAfterBkByBeforeVbVbaPastPres,
            BKBySentenceDecorator bKBySentenceDecorator)
        {
            int MDBKPosition =
                bKBySentenceDecorator
                .GetMDBKPosition(textsAfterBkByBeforeVbVbaPastPres);

            var afterMDBK =
                textsAfterBkByBeforeVbVbaPastPres
                .Skip(MDBKPosition + 1)
                .ToList();

            MoveableUnit[] MDPositions =
                ModifierPositionHelper.GetMDUnitPositions(afterMDBK);

            Array.Reverse(MDPositions);

            List <Text> reversedMDUnit =
                MoveableUnitHelper.GetTextsFromMoveablePositionsList(
                    afterMDBK, MDPositions);

            ReplaceMDUnitAfterMDBKWithReversedMDUnit(
                bKBySentenceDecorator, reversedMDUnit);
        }
Beispiel #2
0
        private void ShuffleMDUnitsBeforeMDBKInDescendingOrder(
            List <Text> textsAfterBkByBeforeVbVbaPastPres,
            BKBySentenceDecorator bkBySentenceDecorator)
        {
            int MDBKPosition =
                bkBySentenceDecorator
                .GetMDBKPosition(textsAfterBkByBeforeVbVbaPastPres);

            var beforeMDBK =
                textsAfterBkByBeforeVbVbaPastPres.Take(MDBKPosition).ToList();

            MoveableUnit[] MDPositions =
                ModifierPositionHelper.GetMDUnitPositions(beforeMDBK);

            if (MDPositions.Any())
            {
                Array.Reverse(MDPositions);

                List <Text> reversedMDUnit =
                    MoveableUnitHelper.GetTextsFromMoveablePositionsList(
                        beforeMDBK, MDPositions);

                ReplaceMDUnitBeforeMDBKWithReversedMDUnit(
                    bkBySentenceDecorator, MDPositions, reversedMDUnit);
            }
        }
Beispiel #3
0
        private void SortModifiersAndMoveModifiersAndPastBeforeNN(Sentence sentence)
        {
            int firstModifierPosition =
                _prenNNPastSentenceDecorator.FirstModifierPosition;

            List <Text> modifiersUpToVBorBK = new List <Text>();

            // _prenNNPastSentenceDecorator.GetModifierUnitUpToVBorBK(firstModifierPosition);

            if (modifiersUpToVBorBK.Count > 1)
            {
                var positions = ModifierPositionHelper.GetMDUnitPositions(
                    modifiersUpToVBorBK);
                if (_prenNNPastSentenceDecorator.ReversableUnitsAreSortedAscending(
                        modifiersUpToVBorBK, text => text.IsModifier))
                {
                    SortReversableUnitInDescendingNumericOrderAndMoveBeforeNN(
                        modifiersUpToVBorBK,
                        firstModifierPosition,
                        _nnPosition,
                        positions);
                }

                MovePastBeforeNN(sentence, UnitTypes.MD_Modifier);
            }
        }
        public Sentence ShuffleSentence(Sentence sentence)
        {
            if (!sentence.HasModifier())
            {
                return(sentence);
            }

            _mdSentenceDecorator =
                new MdSentenceDecorator(sentence);

            List <Text> modifiersUpToVbPastPresOrBkp;

            int firstModifierPosition = _mdSentenceDecorator.FirstModifierPosition;

            if (_mdSentenceDecorator.HasMoreThanOneModifier())
            {
                modifiersUpToVbPastPresOrBkp =
                    _mdSentenceDecorator.GetModifierUnitUpToVbPastPresBkp(firstModifierPosition);

                if (modifiersUpToVbPastPresOrBkp.Count > 1)
                {
                    var mdPositions = ModifierPositionHelper.GetMDUnitPositions(
                        modifiersUpToVbPastPresOrBkp);

                    ReverseModifierUnit(modifiersUpToVbPastPresOrBkp, firstModifierPosition, mdPositions);

                    AddDeParticleToMDUnit(sentence, mdPositions);

                    UnderlineMdUnit(
                        firstModifierPosition,
                        _mdSentenceDecorator.Texts.Skip(firstModifierPosition).ToList().FindIndex(text => text.IsDe()));
                }
            }
            else  // one modifier unit
            {
                modifiersUpToVbPastPresOrBkp =
                    _mdSentenceDecorator.GetModifierUnitUpToVbPastPresBkp(firstModifierPosition);

                UnderlineMdUnit(firstModifierPosition,
                                modifiersUpToVbPastPresOrBkp.Count - 1);
            }

            var textsbeforeMdUnit =
                TextsBefore(firstModifierPosition).ToList();

            if (textsbeforeMdUnit.Any())
            {
                ApplySearchLeftRules(
                    sentence, textsbeforeMdUnit, firstModifierPosition, modifiersUpToVbPastPresOrBkp);
            }

            return(sentence);
        }
Beispiel #5
0
        private void ReplaceMDUnitAfterMDBKWithReversedMDUnit(
            BKBySentenceDecorator bKBySentenceDecorator,
            List <Text> reversedMdUnit)
        {
            int firstModifierAfterMDBK =
                bKBySentenceDecorator.FirstModifierAfterMDBK;

            bKBySentenceDecorator.Texts.RemoveRange(
                firstModifierAfterMDBK, reversedMdUnit.Count);

            ModifierPositionHelper.InsertReversedMDUnitBeforePosition(
                bKBySentenceDecorator, reversedMdUnit, firstModifierAfterMDBK);
        }
Beispiel #6
0
        private static void ReplaceMDUnitBeforeMDBKWithReversedMDUnit(
            BKBySentenceDecorator bkBySentenceDecorator,
            MoveableUnit[] MDPositions,
            List <Text> reversedMDUnit)
        {
            int firstModifierIndexAfterBKBy =
                bkBySentenceDecorator.FirstModifierIndexAfterBKBy;

            ModifierPositionHelper.RemoveCurrentMDUnit(
                bkBySentenceDecorator, MDPositions, firstModifierIndexAfterBKBy);

            ModifierPositionHelper.InsertReversedMDUnitBeforePosition(
                bkBySentenceDecorator, reversedMDUnit, firstModifierIndexAfterBKBy);
        }
        private void SortModifiersInDescendingNumericOrder(
            List <Text> modifiers,
            int firstModifierPosition,
            MoveableUnit[] mdPositions)
        {
            ModifierPositionHelper.RemoveCurrentMDUnit(
                _mdSentenceDecorator,
                mdPositions,
                firstModifierPosition);

            Array.Reverse(mdPositions);

            List <Text> reversedMdUnit =
                MoveableUnitHelper.GetTextsFromMoveablePositionsList(
                    modifiers, mdPositions);

            ModifierPositionHelper.InsertReversedMDUnitBeforePosition(
                _mdSentenceDecorator,
                reversedMdUnit,
                firstModifierPosition);
        }
Beispiel #8
0
        private void SortReversableUnitInDescendingNumericOrderAndMoveBeforeNN(
            List <Text> modifiersUpToVBorBK,
            int firstModifierPosition,
            int newPosition,
            MoveableUnit[] mdPositions)
        {
            ModifierPositionHelper.RemoveCurrentMDUnit(
                _prenNNPastSentenceDecorator,
                mdPositions,
                firstModifierPosition);

            Array.Reverse(mdPositions);

            List <Text> reversedMDUnit =
                MoveableUnitHelper.GetTextsFromMoveablePositionsList(
                    modifiersUpToVBorBK, mdPositions);

            ModifierPositionHelper.InsertReversedMDUnitBeforePosition(
                _prenNNPastSentenceDecorator,
                reversedMDUnit,
                newPosition);
        }