protected internal virtual GeneratorResults GenerateCodeCore(ITextDocument input, string className, string rootNamespace, string sourceFileName, CancellationToken?cancelToken) { className = (className ?? Host.DefaultClassName) ?? DefaultClassName; rootNamespace = (rootNamespace ?? Host.DefaultNamespace) ?? DefaultNamespace; // Run the parser RazorParser parser = CreateParser(); Debug.Assert(parser != null); ParserResults results = parser.Parse(input); // Generate code RazorCodeGenerator generator = CreateCodeGenerator(className, rootNamespace, sourceFileName); generator.DesignTimeMode = Host.DesignTimeMode; generator.Visit(results); // Post process code Host.PostProcessGeneratedCode(generator.Context); // Extract design-time mappings IDictionary <int, GeneratedCodeMapping> designTimeLineMappings = null; if (Host.DesignTimeMode) { designTimeLineMappings = generator.Context.CodeMappings; } // Collect results and return return(new GeneratorResults(results, generator.Context.CompileUnit, designTimeLineMappings)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { var minifier = MinifierFactory.GetMinifier(); var codeGenerator = CodeGeneratorFactory.GetCodeGenerator(this, incomingCodeGenerator, minifier); return(codeGenerator); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { return(new MvcCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { var codeGenerator = CodeGenerator ?? base.DecorateCodeGenerator(incomingCodeGenerator); codeGenerator.GenerateLinePragmas = EnableLinePragmas; return(codeGenerator); }
public void Must_create_visualbasiccodegenerator() { var language = new VisualBasicCodeLanguage(); var host = MockRepository.GenerateMock <RazorEngineHost>(); RazorCodeGenerator generator = language.CreateCodeGenerator("ClassName", "RootNamespace", "Template.vbhtml", host); Assert.That(generator, Is.InstanceOf <VisualBasicCodeGenerator>()); }
public void Must_honor_exception_parameter(bool throwExceptionOnParserError) { var language = new VisualBasicCodeLanguage(throwExceptionOnParserError); var host = MockRepository.GenerateMock <RazorEngineHost>(); RazorCodeGenerator generator = language.CreateCodeGenerator("ClassName", "RootNamespace", "Template.vbhtml", host); Assert.That(((VisualBasicCodeGenerator)generator).ThrowExceptionOnParserError, Is.EqualTo(throwExceptionOnParserError)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new SimpleCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, this)); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
/// <summary> /// Gets an instance of the code generator and is provided an opportunity to decorate or replace it /// </summary> /// <param name="incomingCodeGenerator">The code generator</param> /// <returns>Either the same code generator, after modifications, or a different code generator</returns> public virtual RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator == null) { throw new ArgumentNullException("incomingCodeGenerator"); } return(incomingCodeGenerator); }
public MinifierCSharpRazorCodeGenerator(RazorEngineHost codeGeneratorHost, RazorCodeGenerator incomingCodeGenerator, IMinifier minifier) : base(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, codeGeneratorHost) { SetBaseType("dynamic"); _minifier = minifier; }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator input) { if (!(input is CSharpRazorCodeGenerator)) { return(base.DecorateCodeGenerator(input)); } return(new MinifyingCSharpRazorCodeGenerator(input.ClassName, input.RootNamespaceName, input.SourceFileName, input.Host)); }
/// <summary> /// Generates the required code using the specified compile unit. /// </summary> /// <param name="codeDom">The code DOM provider.</param> /// <param name="codeGenerator">The code generator.</param> /// <param name="builder">The string builder used to write the code.</param> private static void GenerateCode(CodeDomProvider codeDom, RazorCodeGenerator codeGenerator, StringBuilder builder) { // removed so the output is compatible with standard WebViewPage // var statement = new CodeMethodInvokeExpression(new CodeThisReferenceExpression(), "Clear"); // codeGenerator.GeneratedExecuteMethod.Statements.Insert(0, new CodeExpressionStatement(statement)); using (var writer = new StringWriter(builder)) { codeDom.GenerateCodeFromCompileUnit(codeGenerator.GeneratedCode, writer, new CodeGeneratorOptions()); } }
public void DecorateCodeGeneratorReturnsIncomingCodeGenerator() { // Arrange RazorCodeGenerator expected = new CSharpRazorCodeGenerator("Foo", "Bar", "Baz", CreateHost()); // Act RazorCodeGenerator actual = CreateHost().DecorateCodeGenerator(expected); // Assert Assert.Same(expected, actual); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is RazorEngine.Compilation.CSharp.CSharpRazorCodeGenerator) { return(new RazorEngine.Compilation.CSharp.CSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new ViewComponentCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } if (incomingCodeGenerator is VBRazorCodeGenerator) { return(new VBRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
/// <summary> /// Decorates the code generator. /// </summary> /// <param name="incomingCodeGenerator">The incoming code generator.</param> /// <returns></returns> public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new CSharp.NancyCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } if (incomingCodeGenerator is VBRazorCodeGenerator) { return(new VisualBasic.NancyVisualBasicRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new OpenRastaCSharpRazorCodeGenerator(incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } if (incomingCodeGenerator is VBRazorCodeGenerator) { throw new InvalidOperationException("VB not supported yet."); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (!incomingCodeGenerator.Host.DesignTimeMode) { var generator = new MinifyHtmlCodeGenerator(_minifier); if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new MinifyHtmlCSharpCodeGenerator(generator, incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } if (incomingCodeGenerator is VBRazorCodeGenerator) { return(new MinifyHtmlVBCodeGenerator(generator, incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host)); } } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { var minifier = MinifierFactory.GetMinifier(); return(new HtmlOptimizerMvc4CSharpRazorCodeGenerator( incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host, minifier)); } return(base.DecorateCodeGenerator(incomingCodeGenerator)); }
public override RazorCodeGenerator DecorateCodeGenerator(RazorCodeGenerator incomingCodeGenerator) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new WhiteSpaceBusterMvcCSharpRazorCodeGenerator( incomingCodeGenerator.ClassName, incomingCodeGenerator.RootNamespaceName, incomingCodeGenerator.SourceFileName, incomingCodeGenerator.Host, _optimizer)); } else { // NB: On ne prend pas en charge les projets VB.NET. return(base.DecorateCodeGenerator(incomingCodeGenerator)); } }
public void CreateCodeGeneratorParserListenerReturnsNewCSharpCodeGeneratorParserListener() { // Arrange RazorCodeLanguage service = new VBRazorCodeLanguage(); // Act RazorEngineHost host = new RazorEngineHost(new VBRazorCodeLanguage()); RazorCodeGenerator generator = service.CreateCodeGenerator("Foo", "Bar", "Baz", host); // Assert Assert.IsNotNull(generator); Assert.IsInstanceOfType(generator, typeof(VBRazorCodeGenerator)); Assert.AreEqual("Foo", generator.ClassName); Assert.AreEqual("Bar", generator.RootNamespaceName); Assert.AreEqual("Baz", generator.SourceFileName); Assert.AreSame(host, generator.Host); }
public void CreateCodeGeneratorParserListenerReturnsNewCSharpCodeGeneratorParserListener() { // Arrange RazorCodeLanguage service = new CSharpRazorCodeLanguage(); // Act RazorEngineHost host = new RazorEngineHost(service); RazorCodeGenerator generator = service.CreateCodeGenerator("Foo", "Bar", "Baz", host); // Assert Assert.NotNull(generator); Assert.IsType <CSharpRazorCodeGenerator>(generator); Assert.Equal("Foo", generator.ClassName); Assert.Equal("Bar", generator.RootNamespaceName); Assert.Equal("Baz", generator.SourceFileName); Assert.Same(host, generator.Host); }
public void CreateCodeGeneratorMethodPassesCodeGeneratorThroughDecorateMethodOnHost() { // Arrange var mockHost = new Mock <RazorEngineHost>(new CSharpRazorCodeLanguage()) { CallBase = true }; RazorCodeGenerator expected = new Mock <RazorCodeGenerator>("Foo", "Bar", "Baz", mockHost.Object).Object; mockHost.Setup(h => h.DecorateCodeGenerator(It.IsAny <CSharpRazorCodeGenerator>())) .Returns(expected); RazorTemplateEngine engine = new RazorTemplateEngine(mockHost.Object); // Act RazorCodeGenerator actual = engine.CreateCodeGenerator("Foo", "Bar", "Baz"); // Assert Assert.Equal(expected, actual); }
protected internal virtual GeneratorResults GenerateCodeCore(ITextDocument input, string className, string rootNamespace, string sourceFileName, CancellationToken?cancelToken) { className = (className ?? Host.DefaultClassName) ?? DefaultClassName; rootNamespace = (rootNamespace ?? Host.DefaultNamespace) ?? DefaultNamespace; // Run the parser RazorParser parser = CreateParser(); Debug.Assert(parser != null); ParserResults results = parser.Parse(input); // Generate code RazorCodeGenerator generator = CreateCodeGenerator(className, rootNamespace, sourceFileName); generator.DesignTimeMode = Host.DesignTimeMode; generator.Visit(results); var builder = CreateCodeBuilder(generator.Context); var builderResult = builder.Build(); // Collect results and return return(new GeneratorResults(results, builderResult)); }
protected internal virtual GeneratorResults GenerateCodeCore(LookaheadTextReader input, string className, string rootNamespace, string sourceFileName, CancellationToken?cancelToken) { className = className ?? Host.DefaultClassName; rootNamespace = rootNamespace ?? Host.DefaultNamespace; // Set up the code generator RazorCodeGenerator generator = CreateCodeGenerator(className, rootNamespace, sourceFileName); generator.DesignTimeMode = Host.DesignTimeMode; // Setup the consumers SyntaxTreeBuilderVisitor treeBuilder = new SyntaxTreeBuilderVisitor() { CancelToken = cancelToken }; VisitorPair consumer = new VisitorPair(treeBuilder, generator); // Run the parser RazorParser parser = CreateParser(); Debug.Assert(parser != null); parser.Parse(input, consumer); // Post process code Host.PostProcessGeneratedCode(generator.GeneratedCode, generator.GeneratedNamespace, generator.GeneratedClass, generator.GeneratedExecuteMethod); // Extract design-time mappings IDictionary <int, GeneratedCodeMapping> designTimeLineMappings = null; if (Host.DesignTimeMode) { designTimeLineMappings = generator.CodeMappings; } // Collect results and return return(new GeneratorResults(treeBuilder.Results, generator.GeneratedCode, designTimeLineMappings)); }
protected override bool TryVisitSpecialSpan(Span span) { return(RazorCodeGenerator.TryVisit <ModelSpan>(span, new Action <ModelSpan>(this.VisitModelSpan))); }
public static RazorCodeGenerator GetCodeGenerator(MinifierRazorHost codeGeneratorHost, RazorCodeGenerator incomingCodeGenerator, IMinifier minifier) { if (incomingCodeGenerator is CSharpRazorCodeGenerator) { return(new MinifierCSharpRazorCodeGenerator(codeGeneratorHost, incomingCodeGenerator, minifier)); } return(codeGeneratorHost.DecorateCodeGenerator(incomingCodeGenerator)); }
internal static IRazorCodeGenerator Create(Microsoft.VisualStudio.Text.ITextBuffer buffer, Version razorVersion, string physicalPath, string virtualPath) { RazorCodeGenerator razorCodeGenerator = ServiceManager.GetService<RazorCodeGenerator>(buffer); if (razorCodeGenerator == null) { razorCodeGenerator = new RazorCodeGenerator(buffer, razorVersion, physicalPath, virtualPath); } return razorCodeGenerator; }