private static ChunkTree ParseViewFile( RazorTemplateEngine engine, IFileInfo fileInfo, string viewImportsPath) { using (var stream = fileInfo.CreateReadStream()) { using (var streamReader = new StreamReader(stream)) { var parseResults = engine.ParseTemplate(streamReader, viewImportsPath); var className = ParserHelpers.SanitizeClassName(fileInfo.Name); var language = engine.Host.CodeLanguage; var chunkGenerator = language.CreateChunkGenerator( className, engine.Host.DefaultNamespace, viewImportsPath, engine.Host); chunkGenerator.Visit(parseResults); // Rewrite the location of inherited chunks so they point to the global import file. var chunkTree = chunkGenerator.Context.ChunkTreeBuilder.ChunkTree; foreach (var chunk in chunkTree.Chunks) { chunk.Start = new SourceLocation( viewImportsPath, chunk.Start.AbsoluteIndex, chunk.Start.LineIndex, chunk.Start.CharacterIndex); } return chunkTree; } } }
private static CodeTree ParseViewFile(RazorTemplateEngine engine, IFileInfo fileInfo, string viewStartPath) { using (var stream = fileInfo.CreateReadStream()) { using (var streamReader = new StreamReader(stream)) { var parseResults = engine.ParseTemplate(streamReader, viewStartPath); var className = ParserHelpers.SanitizeClassName(fileInfo.Name); var language = engine.Host.CodeLanguage; var codeGenerator = language.CreateCodeGenerator(className, engine.Host.DefaultNamespace, viewStartPath, engine.Host); codeGenerator.Visit(parseResults); return codeGenerator.Context.CodeTreeBuilder.CodeTree; } } }