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