public TemplateFactory CompileTemplateFactory(string className, ViewSourceCollection viewSourceList, Type baseType) { var hamlDocument = BuildHamlDocument(viewSourceList); string templateCode = _treeWalker.Walk(hamlDocument, className, baseType, _imports); var templateFactory = _templateFactoryCompiler.Compile(templateCode, className, _referencedAssemblyLocations); return templateFactory; }
public void BuildHamlDocument_UnnamedPartialReference_UsesFollowingPartial() { var rootViewSource = ViewSourceBuilder.Create("MainFile"); var rootDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodePartial(new HamlLine("", HamlRuleEnum.Partial, "", 0))); _treeParserMock.Setup(x => x.ParseViewSource(rootViewSource)) .Returns(rootDocument); var childViewSource = ViewSourceBuilder.Create("SubDocument", "SubDocument"); var childDocument = HamlDocumentBuilder.Create("SubDocument)", new HamlNodeTextContainer(0, "Child Test")); _treeParserMock.Setup(x => x.ParseViewSource(childViewSource)) .Returns(childDocument); var viewSourceList = new ViewSourceCollection { rootViewSource, childViewSource }; var result = _templateFactoryFactory.BuildHamlDocument(viewSourceList); Assert.That(result, Is.SameAs(rootDocument)); Assert.That(((HamlNodePartial)result.Children.First()).IsResolved, Is.True); Assert.That(result.Children.First().Children.First(), Is.SameAs(childDocument.Children.First())); }
public void BuildHamlDocument_UnknownPartial_UsesTemplateContentProvider() { const string partialName = "SubDocument"; var rootViewSource = ViewSourceBuilder.Create("MainFile"); var rootDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodePartial(new HamlLine(partialName, HamlRuleEnum.Partial, "", 0))); _treeParserMock.Setup(x => x.ParseViewSource(rootViewSource)) .Returns(rootDocument); var viewSourceList = new ViewSourceCollection { rootViewSource }; var childViewSource = ViewSourceBuilder.Create("SubDocument", partialName); var childDocument = HamlDocumentBuilder.Create("SubDocument)", new HamlNodeTextContainer(0, "Child Test")); _treeParserMock.Setup(x => x.ParseViewSource(childViewSource)) .Returns(childDocument); _templateContentProviderMock.Setup(x => x.GetViewSource(partialName)) .Returns(childViewSource); var result = _templateFactoryFactory.BuildHamlDocument(viewSourceList); _templateContentProviderMock.Verify(x => x.GetViewSource(partialName)); }
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { _contentProvider.SetRequestContext(controllerContext.RequestContext); viewPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, viewPath); if (_isMasterConfigured) { // masterPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, masterPath); // return (IView)_templateEngine.Compile(viewPath, masterPath, null, GetViewBaseType(controllerContext)).CreateInstance(); } //else //{ // if (string.IsNullOrEmpty(masterPath)) // { var viewSource = _contentProvider.GetViewSource(viewPath); var masterSource = _isMasterConfigured ? _contentProvider.GetViewSource(masterPath) : null; var viewSourceCollection = new ViewSourceCollection { viewSource, masterSource }; return((IView)_templateEngine.GetCompiledTemplate(viewSourceCollection, GetViewBaseType(controllerContext)). CreateTemplate()); // } // else // { // masterPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, masterPath); // return (IView)_templateEngine.Compile(viewPath, null, masterPath, GetViewBaseType(controllerContext)).CreateInstance(); // } //} }
public TemplateFactory CompileTemplateFactory(string className, ViewSourceCollection viewSourceList, Type baseType) { var hamlDocument = BuildHamlDocument(viewSourceList); string templateCode = _treeWalker.Walk(hamlDocument, className, baseType, _imports); var templateFactory = _templateFactoryCompiler.Compile(templateCode, className, _referencedAssemblyLocations); return(templateFactory); }
public void GetCompiledTemplate_BaseTemplateSpecified_UsesSpecifiedTemplateBaseType() { // Arrange var viewSourceCollection = new ViewSourceCollection { ViewSourceBuilder.Create() }; // Act _templateEngine.GetCompiledTemplate(viewSourceCollection, typeof(object)); // Assert _templateFactoryFactoryMock.Verify(x => x.CompileTemplateFactory(viewSourceCollection.GetClassName(), viewSourceCollection, typeof(object))); }
private ViewSource GetPartial(ViewSourceCollection viewSourceList, string partialName) { ViewSource viewSource = viewSourceList.GetByPartialName(partialName) ?? _contentProvider.GetViewSource(partialName); if (viewSource == null) { throw new PartialNotFoundException(partialName); } return(viewSource); }
public void GetCompiledTemplate_MultipleCalls_OnlyCompilesTemplateOnce() { // Arrange var viewSourceCollection = new ViewSourceCollection { ViewSourceBuilder.Create() }; // Act _templateEngine.GetCompiledTemplate(viewSourceCollection, typeof(DummyTemplate)); _templateEngine.GetCompiledTemplate(viewSourceCollection, typeof(DummyTemplate)); // Assert _templateFactoryFactoryMock.Verify(x => x.CompileTemplateFactory(viewSourceCollection.GetClassName(), viewSourceCollection, typeof(DummyTemplate)), Times.Once()); }
public void GetCompiledTemplate_NormalUse_CallsTemplateFactoryFactoryCompileTemplateFactory() { // Arrange var viewSourceCollection = new ViewSourceCollection { ViewSourceBuilder.Create() }; // Act _templateEngine.GetCompiledTemplate(viewSourceCollection, typeof(object)); // Assert _templateFactoryFactoryMock.Verify(x => x.CompileTemplateFactory(viewSourceCollection.GetClassName(), viewSourceCollection, It.IsAny <Type>())); }
public TemplateFactory GetCompiledTemplate(ViewSourceCollection viewSourceCollection, Type templateBaseType) { Invariant.ArgumentNotNull(viewSourceCollection, "viewSourceCollection"); Invariant.ArgumentNotNull(templateBaseType, "templateBaseType"); templateBaseType = ProxyExtracter.GetNonProxiedType(templateBaseType); var className = viewSourceCollection.GetClassName(); lock( _compiledTemplateCache ) { return _compiledTemplateCache.GetOrAdd(className, viewSourceCollection[0].TimeStamp, () => _templateFactoryFactory.CompileTemplateFactory(className, viewSourceCollection, templateBaseType)); } }
public TemplateFactory GetCompiledTemplate(ViewSourceCollection viewSourceCollection, Type templateBaseType) { Invariant.ArgumentNotNull(viewSourceCollection, "viewSourceCollection"); Invariant.ArgumentNotNull(templateBaseType, "templateBaseType"); templateBaseType = ProxyExtracter.GetNonProxiedType(templateBaseType); var className = viewSourceCollection.GetClassName(); lock ( _compiledTemplateCache ) { return(_compiledTemplateCache.GetOrAdd(className, viewSourceCollection[0].TimeStamp, () => _templateFactoryFactory.CompileTemplateFactory(className, viewSourceCollection, templateBaseType))); } }
public void BuildHamlDocument_NoPartials_ReturnsSameDocument() { var viewSource = ViewSourceBuilder.Create("Test"); var hamlDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodeTextContainer(new HamlSourceFileMetrics(0, 0, 0, 0), "Test")); _viewSourceParserMock.Setup(x => x.Parse(viewSource)) .Returns(hamlDocument); var viewSourceCollection = new ViewSourceCollection {viewSource}; var result = _templateFactoryFactory.BuildHamlDocument(viewSourceCollection); Assert.That(result, Is.SameAs(hamlDocument)); Assert.That(result.Children.First(), Is.SameAs(hamlDocument.Children.First())); }
public void BuildHamlDocument_NoPartials_ReturnsSameDocument() { var viewSource = ViewSourceBuilder.Create("Test"); var hamlDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodeTextContainer(0, "Test")); _treeParserMock.Setup(x => x.ParseViewSource(viewSource)) .Returns(hamlDocument); var viewSourceCollection = new ViewSourceCollection { viewSource }; var result = _templateFactoryFactory.BuildHamlDocument(viewSourceCollection); Assert.That(result, Is.SameAs(hamlDocument)); Assert.That(result.Children.First(), Is.SameAs(hamlDocument.Children.First())); }
public HamlDocument BuildHamlDocument(ViewSourceCollection viewSourceList) { _hamlDocumentCache.Clear(); var hamlDocument = HamlDocumentCacheGetOrAdd(viewSourceList.First().FileName, () => _treeParser.ParseViewSource(viewSourceList.First())); var masterPage = GetMasterPage(); hamlDocument = ApplyMasterPage(hamlDocument, masterPage); HamlNodePartial partial; while ((partial = hamlDocument.GetNextUnresolvedPartial()) != null) { ViewSource viewSource = GetPartial(viewSourceList, partial.Content); var partialDocument = HamlDocumentCacheGetOrAdd(viewSource.FileName, () => _treeParser.ParseViewSource(viewSource)); partial.SetDocument(partialDocument); } return hamlDocument; }
public void PartialsIntegrationTest() { // Arrange const string template1Content = "This is a test\n_File2"; const string template2Content = "Of a partial"; var viewSourceList = new ViewSourceCollection { ViewSourceBuilder.Create(template1Content), ViewSourceBuilder.Create(template2Content, "File2") }; // Act var templateFactory = _templateFactoryFactory.CompileTemplateFactory(viewSourceList.GetClassName(), viewSourceList); Template template = templateFactory.CreateTemplate(); var textWriter = new StringWriter(); template.Render(textWriter); // Assert Assert.AreEqual("This is a test\nOf a partial", textWriter.ToString()); }
public HamlDocument BuildHamlDocument(ViewSourceCollection viewSourceList) { _hamlDocumentCache.Clear(); var hamlDocument = HamlDocumentCacheGetOrAdd(viewSourceList.First().FileName, () => _treeParser.ParseViewSource(viewSourceList.First())); var masterPage = GetMasterPage(); hamlDocument = ApplyMasterPage(hamlDocument, masterPage); HamlNodePartial partial; while ((partial = hamlDocument.GetNextUnresolvedPartial()) != null) { ViewSource viewSource = GetPartial(viewSourceList, partial.Content); var partialDocument = HamlDocumentCacheGetOrAdd(viewSource.FileName, () => _treeParser.ParseViewSource(viewSource)); partial.SetDocument(partialDocument); } return(hamlDocument); }
public void BuildHamlDocument_PartialReference_CombinesTwoDocuments() { var rootViewSource = ViewSourceBuilder.Create("MainFile"); var rootDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodeTextContainer(new HamlSourceFileMetrics(0, 0, 0, 0), "Test"), new HamlNodePartial(new HamlLine("SubDocument", HamlRuleEnum.Partial, indent: ""))); _viewSourceParserMock.Setup(x => x.Parse(rootViewSource)) .Returns(rootDocument); var childViewSource = ViewSourceBuilder.Create("SubDocument", "SubDocument"); var childDocument = HamlDocumentBuilder.Create("SubDocument)", new HamlNodeTextContainer(new HamlSourceFileMetrics(0, 0, 0, 0), "Child Test")); _viewSourceParserMock.Setup(x => x.Parse(childViewSource)) .Returns(childDocument); var viewSourceList = new ViewSourceCollection { rootViewSource, childViewSource }; var result = _templateFactoryFactory.BuildHamlDocument(viewSourceList); Assert.That(result, Is.SameAs(rootDocument)); Assert.That(((HamlNodePartial)result.Children.ToList()[1]).IsResolved, Is.True); Assert.That(result.Children.ToList()[1].Children.First(), Is.SameAs(childDocument.Children.First())); }
public void BuildHamlDocument_UnknownPartial_UsesTemplateContentProvider() { const string partialName = "SubDocument"; var rootViewSource = ViewSourceBuilder.Create("MainFile"); var rootDocument = HamlDocumentBuilder.Create("MainFile", new HamlNodePartial(new HamlLine(partialName, HamlRuleEnum.Partial, indent: ""))); _viewSourceParserMock.Setup(x => x.Parse(rootViewSource)) .Returns(rootDocument); var viewSourceList = new ViewSourceCollection { rootViewSource }; var childViewSource = ViewSourceBuilder.Create("SubDocument", partialName); var childDocument = HamlDocumentBuilder.Create("SubDocument)", new HamlNodeTextContainer(new HamlSourceFileMetrics(0, 0, 0, 0), "Child Test")); _viewSourceParserMock.Setup(x => x.Parse(childViewSource)) .Returns(childDocument); _templateContentProviderMock.Setup(x => x.GetViewSource(partialName)) .Returns(childViewSource); var result = _templateFactoryFactory.BuildHamlDocument(viewSourceList); _templateContentProviderMock.Verify(x => x.GetViewSource(partialName)); }
public TemplateFactory CompileTemplateFactory(string className, ViewSourceCollection viewSourceList) { return(CompileTemplateFactory(className, viewSourceList, typeof(TemplateBase.Template))); }
public void GetCompiledTemplate_NormalUse_CallsTemplateFactoryFactoryCompileTemplateFactory() { // Arrange var viewSourceCollection = new ViewSourceCollection { ViewSourceBuilder.Create() }; // Act _templateEngine.GetCompiledTemplate(viewSourceCollection, typeof(object)); // Assert _templateFactoryFactoryMock.Verify(x => x.CompileTemplateFactory(viewSourceCollection.GetClassName(), viewSourceCollection, It.IsAny<Type>())); }
public string GetTemplateSource(ViewSource viewSource, Type templateBaseType) { var viewSourceCollection = new ViewSourceCollection { viewSource }; var className = viewSourceCollection.GetClassName(); return _templateFactoryFactory.GetTemplateSource(className, viewSourceCollection, templateBaseType); }
private ViewSource GetPartial(ViewSourceCollection viewSourceList, string partialName) { ViewSource viewSource = viewSourceList.GetByPartialName(partialName) ?? _contentProvider.GetViewSource(partialName); if (viewSource == null) throw new PartialNotFoundException(partialName); return viewSource; }
protected override IView CreateView(ControllerContext controllerContext, string viewPath, string masterPath) { _contentProvider.SetRequestContext(controllerContext.RequestContext); viewPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, viewPath); if (_isMasterConfigured) { // masterPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, masterPath); // return (IView)_templateEngine.Compile(viewPath, masterPath, null, GetViewBaseType(controllerContext)).CreateInstance(); } //else //{ // if (string.IsNullOrEmpty(masterPath)) // { var viewSource = _contentProvider.GetViewSource(viewPath); var masterSource = _isMasterConfigured ? _contentProvider.GetViewSource(masterPath) : null; var viewSourceCollection = new ViewSourceCollection { viewSource, masterSource }; return (IView)_templateEngine.GetCompiledTemplate(viewSourceCollection, GetViewBaseType(controllerContext)). CreateTemplate(); // } // else // { // masterPath = VirtualPathToPhysicalPath(controllerContext.RequestContext, masterPath); // return (IView)_templateEngine.Compile(viewPath, null, masterPath, GetViewBaseType(controllerContext)).CreateInstance(); // } //} }
public TemplateFactory CompileTemplateFactory(string className, ViewSourceCollection viewSourceList) { return CompileTemplateFactory(className, viewSourceList, typeof(TemplateBase.Template)); }