public override void ExplicitVisit(BooleanTernaryExpression node) { base.ExplicitVisit(node); ReplaceExpression(node, n => n.FirstExpression); ReplaceExpression(node, n => n.SecondExpression); ReplaceExpression(node, n => n.ThirdExpression); }
public void TestSimpleAnd() { var expr = new BooleanTernaryExpression(new Property(nameof(Condition))).FillInSecond(new Property("Then")).FillInThird(new Property("Else")); Condition = true; Assert.That(expr.Evaluate(new Reflection(this)), Is.EqualTo("then")); Condition = false; Assert.That(expr.Evaluate(new Reflection(this)), Is.EqualTo("else")); }
public override void ExplicitVisit(BooleanTernaryExpression node) { node.FirstExpression.Accept(this); if (node.TernaryExpressionType == BooleanTernaryExpressionType.Between) { _buffer.Append(" between "); } else if (node.TernaryExpressionType == BooleanTernaryExpressionType.NotBetween) { _buffer.Append(" not between "); } node.SecondExpression.Accept(this); _buffer.Append(" and "); node.ThirdExpression.Accept(this); }
public QsiExpressionNode VisitBooleanTernaryExpression(BooleanTernaryExpression booleanTernaryExpression) { var invoke = TreeHelper.Create <QsiInvokeExpressionNode>(n => { n.Member.SetValue(TreeHelper.CreateFunction(SqlServerKnownFunction.Ternary)); n.Parameters.Add(VisitScalarExpression(booleanTernaryExpression.FirstExpression)); n.Parameters.Add(VisitScalarExpression(booleanTernaryExpression.SecondExpression)); n.Parameters.Add(VisitScalarExpression(booleanTernaryExpression.ThirdExpression)); }); var operand = booleanTernaryExpression.TernaryExpressionType switch { BooleanTernaryExpressionType.Between => SqlServerKnownOperator.Between, BooleanTernaryExpressionType.NotBetween => SqlServerKnownOperator.NotBetween, _ => throw new InvalidOperationException() }; return(TreeHelper.CreateUnary(operand, invoke)); }
public override void Visit(BooleanTernaryExpression node) { this.action(node); }
public override void ExplicitVisit(BooleanTernaryExpression fragment) { _fragments.Add(fragment); }