public virtual RazorLightEngine Build()
        {
            var options = new RazorLightOptions();

            if (namespaces != null)
            {
                options.Namespaces = namespaces;
            }

            if (dynamicTemplates != null)
            {
                options.DynamicTemplates = dynamicTemplates;
            }

            if (metadataReferences != null)
            {
                options.AdditionalMetadataReferences = metadataReferences;
            }

            if (prerenderCallbacks != null)
            {
                options.PreRenderCallbacks = prerenderCallbacks;
            }

            var sourceGenerator          = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, options.Namespaces);
            var metadataReferenceManager = new DefaultMetadataReferenceManager(options.AdditionalMetadataReferences);

            var assembly = operatingAssembly ?? Assembly.GetEntryAssembly();

            var compiler = new RoslynCompilationService(metadataReferenceManager, assembly);
            var templateFactoryProvider = new TemplateFactoryProvider(sourceGenerator, compiler, options);

            return(new RazorLightEngine(options, templateFactoryProvider, cachingProvider));
        }
Esempio n. 2
0
        public EngineHandler(
            RazorLightOptions options,
            IRazorTemplateCompiler compiler,
            ITemplateFactoryProvider factoryProvider,
            ICachingProvider cache)
        {
            Options         = options ?? throw new ArgumentNullException(nameof(options));
            Compiler        = compiler ?? throw new ArgumentNullException(nameof(compiler));
            FactoryProvider = factoryProvider ?? throw new ArgumentNullException(nameof(factoryProvider));

            Cache = cache;
        }
Esempio n. 3
0
        public RazorLightEngine(
            RazorLightOptions options,
            IRazorTemplateCompiler templateCompiler,
            ITemplateFactoryProvider factoryProvider,
            ICachingProvider cachingProvider)
        {
            Options = options ?? throw new ArgumentNullException(nameof(options));
            TemplateFactoryProvider = factoryProvider ?? throw new ArgumentNullException(nameof(factoryProvider));
            TemplateCompiler        = templateCompiler ?? throw new ArgumentNullException(nameof(templateCompiler));

            TemplateCache = cachingProvider;
        }
Esempio n. 4
0
        /// <summary>
        ///Creates RazorLightEngine with a custom RazorLightProject
        /// </summary>
        /// <param name="project">The project</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine Create(RazorLightProject project, RazorLightOptions options = null)
        {
            var razorOptions = options ?? new RazorLightOptions();

            var sourceGenerator = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, razorOptions.Namespaces);

            var metadataReferenceManager = new DefaultMetadataReferenceManager(razorOptions.AdditionalMetadataReferences);
            var compiler = new RoslynCompilationService(metadataReferenceManager, Assembly.GetEntryAssembly());
            var templateFactoryProvider = new TemplateFactoryProvider(sourceGenerator, compiler, razorOptions);

            ICachingProvider cacheProvider = new MemoryCachingProvider();

            return(new RazorLightEngine(razorOptions, templateFactoryProvider, cacheProvider));
        }
Esempio n. 5
0
        public RazorLightEngine(
            RazorLightOptions options,
            ITemplateFactoryProvider factoryProvider,
            ICachingProvider cachingProvider)
        {
            if (options == null)
            {
                throw new ArgumentNullException(nameof(options));
            }

            if (factoryProvider == null)
            {
                throw new ArgumentNullException(nameof(factoryProvider));
            }

            Options = options;
            templateFactoryProvider = factoryProvider;
            cache = cachingProvider;
        }
Esempio n. 6
0
        public virtual RazorLightEngine Build()
        {
            options = options ?? new RazorLightOptions();
            project = project ?? new NoRazorProject();

            if (namespaces != null)
            {
                if (namespaces.Count > 0 && options.Namespaces.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(namespaces));
                }

                options.Namespaces = namespaces;
            }

            if (dynamicTemplates != null)
            {
                if (dynamicTemplates.Count > 0 && options.DynamicTemplates.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(dynamicTemplates));
                }

                options.DynamicTemplates = dynamicTemplates;
            }

            if (metadataReferences != null)
            {
                if (metadataReferences.Count > 0 && options.AdditionalMetadataReferences.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(metadataReferences));
                }

                options.AdditionalMetadataReferences = metadataReferences;
            }

            if (excludedAssemblies != null)
            {
                if (excludedAssemblies.Count > 0 && options.ExcludedAssemblies.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(excludedAssemblies));
                }

                options.ExcludedAssemblies = excludedAssemblies;
            }

            if (prerenderCallbacks != null)
            {
                if (prerenderCallbacks.Count > 0 && options.PreRenderCallbacks.Count > 0)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(prerenderCallbacks));
                }

                options.PreRenderCallbacks = prerenderCallbacks;
            }

            if (cachingProvider != null)
            {
                if (options.CachingProvider != null)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(cachingProvider));
                }

                options.CachingProvider = cachingProvider;
            }

            if (disableEncoding.HasValue)
            {
                if (options.DisableEncoding != null)
                {
                    ThrowIfHasBeenSetExplicitly(nameof(disableEncoding));
                }

                options.DisableEncoding = options.DisableEncoding ?? disableEncoding ?? false;
            }
            else
            {
                if (!options.DisableEncoding.HasValue)
                {
                    options.DisableEncoding = false;
                }
            }

            if (enableDebugMode.HasValue && options.EnableDebugMode.HasValue)
            {
                ThrowIfHasBeenSetExplicitly(nameof(enableDebugMode));
            }
            else
            {
                options.EnableDebugMode = options.EnableDebugMode ?? enableDebugMode ?? false;
            }

            var metadataReferenceManager = new DefaultMetadataReferenceManager(options.AdditionalMetadataReferences, options.ExcludedAssemblies);
            var assembly = operatingAssembly ?? Assembly.GetEntryAssembly();
            var compiler = new RoslynCompilationService(metadataReferenceManager, assembly);

            var sourceGenerator         = new RazorSourceGenerator(DefaultRazorEngine.Instance, project, options.Namespaces);
            var templateCompiler        = new RazorTemplateCompiler(sourceGenerator, compiler, project, options);
            var templateFactoryProvider = new TemplateFactoryProvider();

            var engineHandler = new EngineHandler(options, templateCompiler, templateFactoryProvider, cachingProvider);

            return(new RazorLightEngine(engineHandler));
        }
Esempio n. 7
0
 public RazorLightEngineBuilder UseOptions(RazorLightOptions razorLightOptions)
 {
     options = razorLightOptions;
     return(this);
 }
Esempio n. 8
0
 /// <summary>
 /// Creates RazorLightEngine with a custom RazorLightProject
 /// </summary>
 /// <param name="project">The project</param>
 /// <param name="options">Options for configuring the RazorLightEngine.</param>
 /// <returns>Instance of RazorLightEngine</returns>
 public virtual RazorLightEngine Create(RazorLightProject project, RazorLightOptions options = null)
 {
     return(null);
 }
Esempio n. 9
0
 public RazorLightEngine Create(RazorLightOptions options = null)
 {
     return(Create(null, options));
 }
Esempio n. 10
0
        /// <summary>
        /// Creates RazorLightEngine with a embedded resource razor project
        /// </summary>
        /// <param name="rootType">Type of the root.</param>
        /// <param name="options">Engine options</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine ForEmbeddedResources(Type rootType, RazorLightOptions options)
        {
            var project = new EmbeddedRazorProject(rootType);

            return(Create(project, options));
        }
Esempio n. 11
0
        /// <summary>
        /// Creates RazorLightEngine with a filesystem razor project
        /// </summary>
        /// <param name="root">Root folder where views are stored</param>
        /// <param name="options">Engine options</param>
        /// <returns>Instance of RazorLightEngine</returns>
        public virtual RazorLightEngine ForFileSystem(string root, RazorLightOptions options)
        {
            var project = new FileSystemRazorProject(root);

            return(Create(project, options));
        }