Пример #1
0
        /// <summary>
        /// Extracts comma-separated string arguments from the StringArgument.
        /// </summary>
        public TempList8 <StringSlice> ExtractStringArgs()
        {
            TempList8 <StringSlice> args = default(TempList8 <StringSlice>);

            StringArgument.Split(s_CommaSplitter ?? (s_CommaSplitter = new StringUtils.ArgsList.Splitter()), StringSplitOptions.None, ref args);
            return(args);
        }
Пример #2
0
        /// <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);
        }
Пример #3
0
        /// <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);
        }
Пример #4
0
 internal SplitResources()
 {
     LockObj  = new object();
     ArgList  = new List <StringSlice>(8);
     Splitter = new StringUtils.ArgsList.Splitter(true);
 }