/// <summary> /// Attempts to evaluate if all conditions described by the given string are true. /// </summary> static public bool TryEvaluate(this IVariantResolver inResolver, object inContext, StringSlice inEvalData, IMethodCache inInvoker = null) { if (inEvalData.IsWhitespace) { return(true); } StringSlice.ISplitter splitter = QuoteAwareSplitter ?? (QuoteAwareSplitter = new StringUtils.ArgsList.Splitter(false)); VariantComparison comp; foreach (var group in inEvalData.EnumeratedSplit(splitter, StringSplitOptions.RemoveEmptyEntries)) { if (!VariantComparison.TryParse(group, out comp) || !comp.Evaluate(inResolver, inContext, inInvoker)) { return(false); } } return(true); }
/// <summary> /// Attempts to apply one or more modifications, described by the given string. /// </summary> static public bool TryModify(this IVariantResolver inResolver, object inContext, StringSlice inModifyData, IMethodCache inInvoker = null) { if (inModifyData.IsWhitespace) { return(true); } StringSlice.ISplitter splitter = QuoteAwareSplitter ?? (QuoteAwareSplitter = new StringUtils.ArgsList.Splitter(false)); bool bSuccess = true; VariantModification mod; foreach (var group in inModifyData.EnumeratedSplit(splitter, StringSplitOptions.RemoveEmptyEntries)) { if (!VariantModification.TryParse(group, out mod) || !mod.Execute(inResolver, inContext, inInvoker)) { bSuccess = false; } } return(bSuccess); }