Exemple #1
0
        public IActionResult Index()
        {
            EquationParameters equationParameters = new EquationParameters()
            {
                Number1  = 1,
                Number2  = 2,
                Operator = System.Linq.Expressions.ExpressionType.Add
            };

            ViewBag.SupportedOperators = SupportedOperators.GetSupportedOperatorsAsListItems();

            return(View(equationParameters));
        }
Exemple #2
0
        public IActionResult Index([FromForm] EquationParameters equationParameters)
        {
            ViewBag.EquationResult = equationParameters.Operator switch
            {
                ExpressionType.Add => Add(equationParameters.Number1, equationParameters.Number2),
                ExpressionType.Subtract => Subtract(equationParameters.Number1, equationParameters.Number2),
                ExpressionType.Multiply => Multiply(equationParameters.Number1, equationParameters.Number2),
                ExpressionType.Divide => Divide(equationParameters.Number1, equationParameters.Number2),
                _ => throw new NotSupportedException()
            };

            ViewBag.SupportedOperators = SupportedOperators.GetSupportedOperatorsAsListItems();

            return(View(equationParameters));
        }
Exemple #3
0
            public override void VisitBinaryOperatorExpression(BinaryOperatorExpression binaryOperatorExpression)
            {
                var expression = binaryOperatorExpression;

                base.VisitBinaryOperatorExpression(expression);
                if (!SupportedOperators.Contains(expression.Operator))
                {
                    return;
                }
                var parentExpression = expression.Parent as BinaryOperatorExpression;

                if (parentExpression != null && parentExpression.Operator == expression.Operator)
                {
                    //handle only parent sequence
                    return;
                }
                var expressions = GetExpressions(binaryOperatorExpression, expression);

                for (var i = 0; i < expressions.Count - 1; i++)
                {
                    for (var j = i + 1; j < expressions.Count; j++)
                    {
                        var expressionLeft  = expressions[i];
                        var expressionRight = expressions[j];
                        if (!expressionLeft.IsMatch(expressionRight))
                        {
                            continue;
                        }
                        var action = new CodeAction(ctx.TranslateString("Remove redundant expression"),
                                                    script => RemoveRedundantExpression(script, expressionRight),
                                                    expressionRight);

                        AddDiagnosticAnalyzer(
                            new CodeIssue(expressionRight,
                                          ctx.TranslateString(string.Format("The expression '{0}' is identical in the left branch", expressionRight)),
                                          action
                                          )
                        {
                            IssueMarker = IssueMarker.GrayOut
                        }
                            );
                    }
                }
            }
        public RuleParameterModel(RuleParameter param)
            : this()
        {
            Name          = param.Name;
            DisplayName   = param.Name;
            ValueType     = param.ValueType.FullName;
            IsNumberValue = param.ValueType.IsNumericType();

            foreach (var @operator in param.SupportedOperators)
            {
                SupportedOperators.Add(new ComparisonOperatorModel(@operator));
            }

            if (param.ValueSource != null)
            {
                Values = param.ValueSource.GetValues(param).Select(x => new SelectListItem
                {
                    Text  = x.Key,
                    Value = x.Value
                })
                         .ToList();
            }
        }
Exemple #5
0
 public static bool IsOperator(string name) => SupportedOperators.ContainsKey(name);