コード例 #1
0
        private static void MoveAdverbBeforeVbPastPres(
            AdverbSentenceDecorator adverbSentenceDecorator)
        {
            int adverbPosition     = adverbSentenceDecorator.AdverbIndexPosition;
            int lastAdverbPosition = adverbSentenceDecorator.LastAdverbIndexPosition;

            int vbPastPresPosition =
                adverbSentenceDecorator.Texts.Take(adverbPosition).ToList().FindLastIndex(
                    text => text.IsVbPastPres);

            var adverbUnit = adverbSentenceDecorator.Texts.GetRange(
                adverbPosition, lastAdverbPosition - (adverbPosition - 1)).ToList();

            adverbSentenceDecorator.Texts.RemoveRange(
                adverbPosition, lastAdverbPosition - (adverbPosition - 1));

            adverbSentenceDecorator.Texts.InsertRange(
                vbPastPresPosition,
                adverbUnit);
        }
コード例 #2
0
        public Sentence ShuffleSentence(Sentence sentence)
        {
            if (!sentence.HasAdverb())
            {
                return(sentence);
            }

            var adverbSentenceDecorator =
                new AdverbSentenceDecorator(sentence);

            if (adverbSentenceDecorator.AdjectiveAfterAdv(adverbSentenceDecorator))
            {
                return(sentence);
            }

            if (adverbSentenceDecorator.VbPastPresBeforeAdv(adverbSentenceDecorator))
            {
                MoveAdverbBeforeVbPastPres(
                    adverbSentenceDecorator);
            }

            return(sentence);
        }