Beispiel #1
0
        public void CompositeLoader_DoesntAddNulls()
        {
            var composite = new CompositeLoader();

            composite.AddLoaders(new StringLoader(), null);
            Assert.Single(composite.Loaders);
        }
        /// <inheritdoc/>
        public string Render(string template, object view, IDictionary <string, string> partials, RenderSettings settings)
        {
            var loadedTemplate = RendererSettings.TemplateLoader.Load(template);

            if (loadedTemplate == null)
            {
                throw new UnknownTemplateException("No template was found with the name '" + template + "'");
            }

            var document = RendererSettings.Parser.Parse(loadedTemplate, RendererSettings.DefaultTags, pipeline: RendererSettings.ParserPipeline);

            var textwriter = new StringWriter();

            var renderer = new StringRender(textwriter, RendererSettings.RendererPipeline, RendererSettings.MaxRecursionDepth);

            var partialsLoader = RendererSettings.PartialTemplateLoader;

            if (partials != null && partials.Keys.Count > 0)
            {
                partialsLoader = new CompositeLoader(new DictionaryLoader(partials), RendererSettings.PartialTemplateLoader);
            }

            renderer.Render(document, new Context(view, RendererSettings, partialsLoader, settings ?? RendererSettings.RenderSettings));

            renderer.Writer.Flush();
            return(((StringWriter)renderer.Writer).ToString());
        }
Beispiel #3
0
        public void CompositeLoader_DoesntAddNulls()
        {
            var composite = new CompositeLoader();

            composite.AddLoaders(new StringLoader(), null);
            Assert.Equal(1, composite.Loaders.Count);
        }
Beispiel #4
0
        public void CompositeLoader_Should_Be_Able_To_Contain_StringLoader()
        {
            var          loader         = new CompositeLoader(new StringLoader());
            const string template       = "{{foo}}";
            var          loadedTemplate = loader.Load("{{foo}}");

            Assert.Equal(template, loadedTemplate);
        }
Beispiel #5
0
        public void CompositeLoader_Should_Throw_Exception_If_No_Template_Found()
        {
            var loader = new CompositeLoader(new DictionaryLoader(new Dictionary <string, string>
            {
                { "test", "{{foo}}" }
            }));
            var ex = Assert.Throws <UnknownTemplateException>(() => loader.Load("test2"));

            Assert.Equal("No template was found with the name 'test2'", ex.Message);
        }
Beispiel #6
0
        private CompilerContext BuildCompilerContext(Type viewType, IDictionary <string, string> partials, CompilationSettings settings)
        {
            var partialsLoader = CompilerSettings.PartialTemplateLoader;

            if (partials != null && partials.Keys.Count > 0)
            {
                partialsLoader = new CompositeLoader(new DictionaryLoader(partials), CompilerSettings.PartialTemplateLoader);
            }

            return(new CompilerContext(viewType, Expression.Parameter(viewType, "src"), CompilerSettings, partialsLoader, settings ?? CompilerSettings.CompilationSettings));
        }
Beispiel #7
0
        public void CompositeLoader_Should_Fall_Through()
        {
            var loader = new CompositeLoader(
                new DictionaryLoader(new Dictionary <string, string>
            {
                { "test", "{{foo}}" }
            }), new StringLoader());
            const string template       = "{{foo}}";
            var          loadedTemplate = loader.Load("{{foo}}");

            Assert.Equal(template, loadedTemplate);
        }
Beispiel #8
0
        private TBuilder CombineLoaders(ref IStubbleLoader currentLoader, IStubbleLoader loader)
        {
            if (currentLoader is CompositeLoader compositeLoader)
            {
                var composite = compositeLoader;
                composite.AddLoader(loader);
            }
            else
            {
                var composite = new CompositeLoader(currentLoader, loader);
                currentLoader = composite;
            }

            return((TBuilder)this);
        }
Beispiel #9
0
        public void CompositeLoader_ThrowsOnNull()
        {
            var composite = new CompositeLoader();

            Assert.Throws <ArgumentNullException>(() => composite.AddLoader(null));
        }