public IEnumerable <string> GetAllActionMethods()
        {
            PopulateLookupTables(_rubyEngine.MethodNames(ControllerClass));

            var result = new List <string>();

            result.AddRange(AliasedMethods.Map(method => method.Key));
            result.AddRange(NonAliasedMethods);
            return(result);
        }
        private void PopulateLookupTables(IEnumerable <string> methodNames)
        {
            var methodAliases = (Hash)_rubyEngine.CallMethod(ControllerClass, "name_selectors");

            AliasedMethods    = methodAliases.Map(pair => KeyValuePairFor(pair));
            NonAliasedMethods =
                clr3::System.Linq.Enumerable.Where(methodNames,
                                                   method =>
                                                   AliasedMethods.DoesNotContain(
                                                       pair => String.Equals(pair.Key, method.Underscore(), StringComparison.OrdinalIgnoreCase) || String.Equals(pair.Key, method.Pascalize(), StringComparison.OrdinalIgnoreCase)
                                                       )
                                                   );
        }
 private List <string> GetMatchingAliasedMethods(ControllerContext controllerContext, string actionName)
 {
     return(new List <string>(AliasedMethods.Where(pair => pair.Value.IsValidForAction(controllerContext, actionName)).Map(pair => pair.Key)));
 }