Ejemplo n.º 1
0
        private void EmitWriteExpression(WriteExpressionNode node)
        {
            LoadWriterToStack();
            EvaluateExpression(node.Expression);

            var valueType = node.Expression.ResultType;

            if (!writers.ContainsKey(valueType))
            {
                if (valueType.IsValueType)
                {
                    emitter.Box(valueType);
                }
                valueType = typeof(object);
            }

            if (node.HtmlEncode && CanHtmlEncodeType(valueType))
            {
                if (valueType == typeof(string))
                {
                    emitter.CallMethod(htmlEncodeMethod);
                }
                else
                {
                    emitter.CallMethod(htmlEncodeLateBoundMethod);
                }
            }
            else
            {
                CallWriteFor(valueType);
            }
        }
Ejemplo n.º 2
0
        private Expression HandleWriteExpression(WriteExpressionNode node)
        {
            bool escapeHtml;
            var  expression = ParseExpression(node.Expression, out escapeHtml);

            if (node.HtmlEncode && escapeHtml)
            {
                if (expression.Type == typeof(string))
                {
                    return(Expression.Call(encodeMethod, _writer, expression));
                }

                return(Expression.Call(encodeMethodObject, _writer, Expression.Convert(expression, typeof(object))));
            }

            if (expression.Type == typeof(string))
            {
                return(Expression.Call(writeMethod, _writer, expression));
            }

            if (expression.Type == typeof(void))
            {
                return(expression);
            }

            return(Expression.Call(writeMethodObject, _writer, Expression.Convert(expression, typeof(object))));
        }
Ejemplo n.º 3
0
            protected override JSchema VisitWriteExpressionNode(WriteExpressionNode writeExpressionNode)
            {
                var schema = base.VisitWriteExpressionNode(writeExpressionNode);

                if (schema == null)
                {
                    return(null);
                }

                schema.Type = JSchemaType.String;
                return(schema);
            }
            protected override IClientModel VisitWriteExpressionNode(WriteExpressionNode writeExpressionNode)
            {
                var result = this.VisitExpressionNode(writeExpressionNode.Expression);

                if (writeExpressionNode.HtmlEncode)
                {
                    _clientContext.WriteEncodeExpression(result);
                }
                else
                {
                    _clientContext.WriteExpression(result);
                }

                return(result);
            }
Ejemplo n.º 5
0
        private Expression HandleWriteExpression(WriteExpressionNode node)
        {
            var expression = ParseExpression(node.Expression);

            if (expression.Type != typeof(string))
            {
                var toStringMethod = expression.Type.GetMethod("ToString", new Type[0]);
                expression = Expression.Call(expression, toStringMethod);
            }
            if (node.HtmlEncode)
            {
                return(Expression.Call(encodeMethod, this.writer, expression));
            }

            return(Expression.Call(this.writer, writeMethod, expression));
        }
Ejemplo n.º 6
0
 protected virtual TResult VisitWriteExpressionNode(WriteExpressionNode writeExpressionNode)
 {
     return(VisitExpressionNode(writeExpressionNode.Expression));
 }