public IEnumerable <IRule> GetRule(string[] moduleNames, string[] ruleNames) { IEnumerable <IRule> results = null; IEnumerable <IExternalRule> externalRules = null; // Combines C# rules. IEnumerable <IRule> rules = ScriptRules.Union <IRule>(TokenRules) .Union <IRule>(DSCResourceRules); // Gets PowerShell Rules. if (moduleNames != null) { externalRules = GetExternalRule(moduleNames); rules = rules.Union <IRule>(externalRules); } if (ruleNames != null) { results = rules.Where <IRule>(item => ruleNames.Contains(item.GetName(), StringComparer.OrdinalIgnoreCase)); } else { results = rules; } return(results); }
public IEnumerable <IRule> GetRule(string[] moduleNames, string[] ruleNames) { IEnumerable <IRule> results = null; IEnumerable <IExternalRule> externalRules = null; // Combines C# rules. IEnumerable <IRule> rules = ScriptRules.Union <IRule>(TokenRules) .Union <IRule>(DSCResourceRules); // Gets PowerShell Rules. if (moduleNames != null) { externalRules = GetExternalRule(moduleNames); rules = rules.Union <IRule>(externalRules); } if (ruleNames != null) { //Check wild card input for -Name parameter and create regex match patterns List <Regex> regexList = new List <Regex>(); foreach (string ruleName in ruleNames) { Regex includeRegex = new Regex(String.Format("^{0}$", Regex.Escape(ruleName).Replace(@"\*", ".*")), RegexOptions.IgnoreCase); regexList.Add(includeRegex); } results = from rule in rules from regex in regexList where regex.IsMatch(rule.GetName()) select rule; } else { results = rules; } return(results); }