Exemplo n.º 1
0
        protected override SortedList <int, IReadOnlyList <ITile> > CreateSuggestionLists(int lowerBound, int upperBound, int maxListCount)
        {
            var maxListItemCount = Math.Max(1, Model.DisplayColumns / 2);

            Debug.Assert(Context[0] == StringTokens.StopToken);
            var isFirstWord     = true;
            var contextPosition = Context.Length - 1;

            while (isFirstWord && contextPosition != 0)
            {
                var token         = Context[contextPosition];
                var word          = _tokens[token];
                var splitPosition = word.IndexOf('\0');
                if (splitPosition != -1)
                {
                    word = word.Substring(0, splitPosition);
                }
                var capitalized = Environment.TryCapitalizeFirstWord(word);
                isFirstWord = capitalized == null;

                contextPosition--;
            }

            var list = SuggestedWordListsCreator.CreateSuggestionLists(this, _tokens, PersistantPredictor, Context, TokenFilter, isFirstWord, lowerBound, upperBound, maxListCount, maxListItemCount);

            return(list);
        }
        internal static SortedList <int, IReadOnlyList <ITile> > CreateSuggestionLists(WordVocabularySource source,
                                                                                       StringTokens tokens,
                                                                                       TokenPredictor tokenPredictor,
                                                                                       int[] context,
                                                                                       ITokenTileFilter filter,
                                                                                       bool isFirstWord,
                                                                                       int lowerBound,
                                                                                       int upperBound,
                                                                                       int maxListCount,
                                                                                       int maxListItemCount)
        {
            BreakOnProblemCase(tokens, context, "these", "are", "the", "voyages");

            var maker = tokenPredictor.CreatePredictionMaker(source, filter.IsTokenVisible, context);

            var creator = new SuggestedWordListsCreator(source, tokens, maker, filter.IsTokenVisible, isFirstWord, lowerBound, upperBound, maxListCount, maxListItemCount);
            var list    = creator.Run();

            return(list);
        }