Beispiel #1
0
        public RazorParserVisitor(StreamReader reader, string viewRelativePath, ViewProject viewProject)
        {
            this.ViewProject = viewProject;
            this.CodeNodes   = new LinkedList <CodeNode>();

            this.viewRelativePath = viewRelativePath;
            nodeStack             = new Stack <BaseNode>();

            reader.Rewind();

            using (reader.MarkForReset())
            {
                content = reader.ReadToEnd();

                if (content.HasBOM())
                {
                    content = content.RemoveBOM();
                }
            }
        }
Beispiel #2
0
        public View(string viewRelativePath, ViewProject viewProject)
        {
            var viewFile      = Path.Combine(viewProject.ViewsPath, viewRelativePath.BackSlashes()) + ".cshtml";
            var viewName      = Path.GetFileNameWithoutExtension(viewFile);
            var viewReader    = System.IO.File.OpenText(Path.Combine(viewFile));
            var host          = new RazorEngineHost(new CSharpRazorCodeLanguage());
            var engine        = new RazorTemplateEngine(host);
            var parserResults = engine.ParseTemplate(viewReader);
            var document      = parserResults.Document;
            var visitor       = new RazorParserVisitor(viewReader, viewRelativePath, viewProject);

            this.Name               = viewName;
            this.viewProject        = viewProject;
            this.File               = viewFile;
            this.ViewDataDictionary = new Dictionary <string, object>();

            visitor.OnPartialView += Visitor_OnPartialView;

            document.Accept(visitor);

            this.SemanticTree = visitor.RootNode;
        }