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;
 }
Exemple #2
0
        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()));
        }
Exemple #3
0
        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));
        }
Exemple #4
0
        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();
            //    }
            //}
        }
Exemple #5
0
        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)));
        }
Exemple #7
0
        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());
        }
Exemple #9
0
        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>()));
        }
Exemple #10
0
        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)));
        }
Exemple #11
0
        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());
        }
Exemple #12
0
        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));
            }
        }
Exemple #13
0
        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()));
        }
Exemple #15
0
        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());
        }
Exemple #18
0
        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());
        }
Exemple #19
0
        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));
        }
Exemple #22
0
 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>()));
        }
Exemple #24
0
 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;
        }
Exemple #26
0
        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));
 }