예제 #1
0
        MatchPriority GetMatchPriority(Completion completion)
        {
            var filterText = completion.TryGetFilterText();

            Debug.Assert(!(filterText is null));
            if (filterText is null)
            {
                return(MatchPriority.Other);
            }

            if (filterText.Equals(searchText, StringComparison.CurrentCulture))
            {
                return(MatchPriority.Full);
            }

            bool matchedAcronym = !(acronymMatchIndexes is null) && AcronymSearchHelpers.TryUpdateAcronymIndexes(acronymMatchIndexes, searchText, filterText);

            if (matchedAcronym && CountUpperCaseLetters(filterText) == acronymMatchIndexes !.Length)
            {
                return(MatchPriority.FullAcronym);
            }

            if (filterText.Equals(searchText, StringComparison.CurrentCultureIgnoreCase))
            {
                return(MatchPriority.FullIgnoringCase);
            }

            int index = filterText.IndexOf(searchText, StringComparison.CurrentCulture);

            if (index == 0)
            {
                return(MatchPriority.Start);
            }

            if (matchedAcronym && acronymMatchIndexes ![0] == 0)
예제 #2
0
        public bool IsMatch(Completion completion)
        {
            var completionText = completion.TryGetFilterText();

            if (completionText == null)
            {
                return(false);
            }

            if (completionText.IndexOf(searchText, stringComparison) >= 0)
            {
                return(true);
            }
            if (acronymMatchIndexes != null && TryUpdateAcronymIndexes(completionText))
            {
                return(true);
            }

            return(false);
        }