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); }
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); }
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); }
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); } }
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); } }