Esempio n. 1
0
        public CommandInfo BestMatchingAction(params string[] searchTerms)
        {
            if (searchTerms.Length > 0 && searchTerms.Any(_ => !_.IsNullOrEmpty()))
            {
                return(CommandsByName[StringExt.
                                      OrderStringsBySearchScore(CommandsByName.Keys, false, searchTerms)
                                      .First(_ => IsCommandAuthorized(CommandsByName[_]))]);
            }

            return(defaultInfo);
        }
Esempio n. 2
0
 private void FindByAliases(string[] searchTerms, List <CommandInfo> foundCommands)
 {
     if (foundCommands.Count < CommandFoundCountForAliases)
     {
         List <string> orderedAliases =
             StringExt.OrderStringsBySearchScore(WordAliases.Keys, false, searchTerms).ToList();
         if (orderedAliases.Any())
         {
             foreach (var name in StringExt
                      .OrderStringsBySearchScore(CommandsByName.Keys, false, WordAliases[orderedAliases.ElementAt(0)])
                      .ThenBy(_ => CommandsByName[_].CommandOrder))
             {
                 if (!foundCommands.Contains(CommandsByName[name]) &&
                     IsCommandAuthorized(CommandsByName[name]))
                 {
                     foundCommands.Add(CommandsByName[name]);
                 }
             }
         }
     }
 }
Esempio n. 3
0
        public IEnumerable <CommandInfo> ActionByMatch(params string[] searchTerms)
        {
            if (DebugLog)
            {
                Debug.Log("Searching for actions.. " + EditorApplication.timeSinceStartup);
            }

            if (searchTerms.Length > 0 && searchTerms.Any(_ => !_.IsNullOrEmpty()))
            {
                List <CommandInfo> foundCommands = new List <CommandInfo>(CommandsByName.Count);

                IEnumerable <string> firstSearch;

                //not dependent on the option right now (performance satisfying)

                /*    if (MonKeyInternalSettings.Instance.UseAdvancedFuzzySearch)
                 *  {*/
                firstSearch = CommandNames.Where(_ =>
                {
                    if (!_.ToLower().Contains(searchTerms[0]))
                    {
                        var x = StringExt.MatchResultSet(new List <string> {
                            _.ToLower()
                        }, searchTerms[0]);
                        return(x.Count > 0);
                    }

                    return(true);
                });

                firstSearch = CommandNames;

                firstSearch = StringExt.OrderStringsBySearchScore(firstSearch, true, searchTerms)
                              .ThenBy(_ => !CommandsByName[_].HasQuickName)
                              .ThenBy(_ => CommandsByName[_].CommandOrder);

                /*  }
                 * else
                 * {
                 *    firstSearch = StringExt.OrderStringsBySearchScore(CommandsByName.Keys, false, searchTerms)
                 *        .ThenBy(_ => !CommandsByName[_].HasQuickName)
                 *        .ThenBy(_ => CommandsByName[_].CommandOrder);
                 * }*/


                foreach (var name in firstSearch)
                {
                    if (!foundCommands.Contains(CommandsByName[name]) &&
                        IsCommandAuthorized(CommandsByName[name]))
                    {
                        foundCommands.Add(CommandsByName[name]);
                    }
                }

                if (DebugLog)
                {
                    Debug.Log("Search done! " + EditorApplication.timeSinceStartup);
                }

                FindByAliases(searchTerms, foundCommands);

                if (foundCommands.Count > 0)
                {
                    if (MonKeyInternalSettings.Instance.PutInvalidCommandAtEndOfSearch)
                    {
                        return(foundCommands.OrderByDescending(_ => !_.HasValidation ||
                                                               _.IsValid));
                    }

                    return(foundCommands.Take(MaxCommandShown));
                }
            }
            return(new CommandInfo[0]);
        }