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(); } } }
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; }