Rubberduck.Parsing.Preprocessing.ConditionalCompilationIfExpression.Evaluate C# (CSharp) Method

Evaluate() public method

public Evaluate ( ) : IValue
return IValue
        public override IValue Evaluate()
        {
            StringBuilder builder = new StringBuilder();
            List<bool> conditions = new List<bool>();
            builder.Append(
                new LivelinessExpression(
                    new ConstantExpression(new BoolValue(false)),
                    _ifCondCode)
                    .Evaluate().AsString);

            var ifIsAlive = _ifCond.EvaluateCondition();
            conditions.Add(ifIsAlive);
            builder.Append(
                new LivelinessExpression(
                    new ConstantExpression(new BoolValue(ifIsAlive)),
                    _ifBlock)
                    .Evaluate().AsString);

            foreach (var elseIf in _elseIfCodeCondBlocks)
            {
                builder.Append(
                   new LivelinessExpression(
                       new ConstantExpression(new BoolValue(false)),
                       elseIf.Item1)
                       .Evaluate().AsString);
                var elseIfIsAlive = !ifIsAlive && elseIf.Item2.EvaluateCondition();
                conditions.Add(elseIfIsAlive);
                builder.Append(
                    new LivelinessExpression(
                        new ConstantExpression(new BoolValue(elseIfIsAlive)),
                        elseIf.Item3)
                        .Evaluate().AsString);
            }

            if (_elseCondCode != null)
            {
                builder.Append(
                   new LivelinessExpression(
                       new ConstantExpression(new BoolValue(false)),
                       _elseCondCode)
                       .Evaluate().AsString);
                var elseIsAlive = conditions.All(condition => !condition);
                builder.Append(
                    new LivelinessExpression(
                        new ConstantExpression(new BoolValue(elseIsAlive)),
                        _elseBlock)
                        .Evaluate().AsString);
            }
            builder.Append(
                  new LivelinessExpression(
                      new ConstantExpression(new BoolValue(false)),
                      _endIfCode)
                      .Evaluate().AsString);
            return new StringValue(builder.ToString());
        }
    }
ConditionalCompilationIfExpression