Ejemplo n.º 1
0
        public CodeNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(NodeKind.Code, syntaxTreeNode, contentPart)
        {
            this.visitor     = visitor;
            this.viewProject = visitor.ViewProject;
            this.project     = viewProject.Project;

            Parse();
        }
Ejemplo n.º 2
0
        public HelperExpressionNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, NodeKind.HelperExpression, syntaxTreeNode, contentPart)
        {
            SyntaxTree                syntaxTree;
            CompilationUnitSyntax     syntaxRoot;
            MethodDeclarationSyntax   renderMethod;
            ExpressionStatementSyntax statement;
            ExpressionSyntax          expression;
            var builder = new StringBuilder();

            visitor.StartClass(builder);
            visitor.StartRender(builder);

            builder.AppendLineFormat("{0}{1};", " ".Repeat(8), contentPart);

            visitor.WrapRenderAndClass(builder);

            syntaxTree = CSharpSyntaxTree.ParseText(builder.ToString());
            syntaxRoot = (CompilationUnitSyntax)syntaxTree.GetRoot();

            renderMethod = syntaxRoot.GetRenderMethod();
            statement    = (ExpressionStatementSyntax)renderMethod.Body.Statements.Single();
            expression   = statement.Expression;

            if (expression is InvocationExpressionSyntax)
            {
                var invocationExpression = (InvocationExpressionSyntax)expression;

                if (invocationExpression.Expression is MemberAccessExpressionSyntax)
                {
                    var memberAccessExpression = (MemberAccessExpressionSyntax)invocationExpression.Expression;

                    this.Method = memberAccessExpression.Name.Identifier.Text;

                    if (this.Method == "Partial")
                    {
                        this.PartialView = visitor.CreatePartialView(this.Method, invocationExpression.ArgumentList.Arguments);
                    }
                }
                else
                {
                    DebugUtils.Break();
                }

                this.Arguments = invocationExpression.ArgumentList.Arguments;
            }
            else
            {
                DebugUtils.Break();
            }

            Parse();
        }
Ejemplo n.º 3
0
        public CodeExpressionNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, NodeKind.CodeExpression, syntaxTreeNode, contentPart)
        {
            Parse();

            if (contentPart.StartsWith("Model.Entity"))
            {
                this.IsModelExpression = true;

                if (contentPart.StartsWith("Model.Entity."))
                {
                    var modelProperty = contentPart.RemoveStart("Model.Entity.");

                    this.ModelProperty = modelProperty;
                }
            }
        }
Ejemplo n.º 4
0
 public ModelNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, NodeKind.Model, syntaxTreeNode, contentPart)
 {
     this.OnParent += ModelNode_OnParent;
 }
Ejemplo n.º 5
0
 public RenderNode(RazorParserVisitor visitor, NodeKind kind, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, kind, syntaxTreeNode, contentPart)
 {
 }
Ejemplo n.º 6
0
        public RenderNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, NodeKind.Render, syntaxTreeNode, contentPart)
        {
            var syntaxRoot = this.Parse();

            ParseStatements(syntaxTree, syntaxRoot, model);
        }
Ejemplo n.º 7
0
 public DirectiveNode(RazorParserVisitor visitor, SyntaxTreeNode syntaxTreeNode, string contentPart) : base(visitor, NodeKind.Directive, syntaxTreeNode, contentPart)
 {
     Parse();
 }