public ExpEvalResultType Next(string input, out ActionLink actionLink)
        {
            actionLink = null;
            var res = ExpEvalResultType.Empty;

            if (SkipEvaluation)
            {
                actionLink = GetDefaultLink();
                if (actionLink != null)
                {
                    res = ExpEvalResultType.Skipped;
                }
                return(res);
            }

            if (Options == null || Options.Count == 0)
            {
                return(res);
            }

            var searchResult = Options.FirstOrDefault(item => item.Item.Value.Equals(input, StringComparison.InvariantCultureIgnoreCase));

            if (searchResult?.Link != null)
            {
                res        = ExpEvalResultType.True;
                actionLink = searchResult.Link;
            }
            else
            {
                res = ExpEvalResultType.Invalid;
            }
            return(res);
        }
예제 #2
0
        public ExpEvalResultType Next(string input, out ActionLink actionLink)
        {
            actionLink = null;
            ExpEvalResultType res = ExpEvalResultType.Empty;

            if (SkipEvaluation)
            {
                actionLink = GetDefaultLink();
                if (actionLink != null)
                {
                    res = ExpEvalResultType.Skipped;
                }
                return(res);
            }

            res = Evaluate(input);
            switch (res)
            {
            case ExpEvalResultType.False:
                actionLink = FallbackAction;
                break;

            case ExpEvalResultType.True:
                actionLink = ForwardAction;
                break;

            default:
                break;
            }
            if (actionLink == null)
            {
                res = ExpEvalResultType.Empty;
            }
            return(res);
        }