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); }
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); } }
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); }
private void ReplaceMDUnitAfterMDBKWithReversedMDUnit( BKBySentenceDecorator bKBySentenceDecorator, List <Text> reversedMdUnit) { int firstModifierAfterMDBK = bKBySentenceDecorator.FirstModifierAfterMDBK; bKBySentenceDecorator.Texts.RemoveRange( firstModifierAfterMDBK, reversedMdUnit.Count); ModifierPositionHelper.InsertReversedMDUnitBeforePosition( bKBySentenceDecorator, reversedMdUnit, firstModifierAfterMDBK); }
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); }
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); }