public static bool TryParse(string rbacQuery, out RbacQuery.RbacQueryProcessor queryProcessor) { queryProcessor = null; bool flag = false; if (rbacQuery == null || rbacQuery.Length == 0) { return(false); } if (rbacQuery[0] == '!') { flag = true; rbacQuery = rbacQuery.Substring(1); } if (RbacQuery.ConditionalQueryProcessors.creators != null) { foreach (RbacQuery.ConditionalQueryProcessors.QueryProcesorCreator queryProcesorCreator in RbacQuery.ConditionalQueryProcessors.creators) { if (queryProcesorCreator(rbacQuery, out queryProcessor)) { if (flag) { queryProcessor = new RbacQuery.NotQueryProcessor(queryProcessor); } return(true); } } return(false); } return(false); }
public static bool TryParse(string rbacQuery, out RbacQuery.RbacQueryProcessor queryProcessor) { Match match = RbacQuery.CmdletQueryProcessor.regex.Match(rbacQuery); if (match.Success) { queryProcessor = new RbacQuery.CmdletQueryProcessor(match); return(true); } queryProcessor = null; return(false); }
static RbacQuery() { foreach (object obj in Enum.GetValues(typeof(RoleType))) { RoleType roleType = (RoleType)obj; RbacQuery.WellKnownQueryProcessors.Add(roleType.ToString(), new RbacQuery.RoleTypeQueryProcessor(roleType)); } List <string> list = new List <string>(RbacQuery.WellKnownQueryProcessors.Keys); foreach (string text in list) { RbacQuery.RbacQueryProcessor predicate = RbacQuery.WellKnownQueryProcessors[text]; RbacQuery.WellKnownQueryProcessors.Add("!" + text, new RbacQuery.NotQueryProcessor(predicate)); } }
public static void RegisterQueryProcessor(string role, RbacQuery.RbacQueryProcessor processor) { RbacQuery.WellKnownQueryProcessors.Add(role, processor); RbacQuery.WellKnownQueryProcessors.Add("!" + role, new RbacQuery.NotQueryProcessor(processor)); }
public NotQueryProcessor(RbacQuery.RbacQueryProcessor predicate) { this.Predicate = predicate; }