Exemplo n.º 1
0
        public static void Register(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            EnsureDesignTime(builder);

            InjectDirective.Register(builder);
            ModelDirective.Register(builder);

            FunctionsDirective.Register(builder);
            InheritsDirective.Register(builder);

            builder.Features.Add(new DefaultTagHelperDescriptorProvider());

            // Register section directive with the 1.x compatible target extension.
            builder.AddDirective(SectionDirective.Directive);
            builder.Features.Add(new SectionDirectivePass());
            builder.AddTargetExtension(new LegacySectionTargetExtension());

            builder.AddTargetExtension(new TemplateTargetExtension()
            {
                TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult",
            });

            builder.Features.Add(new ModelExpressionPass());
            builder.Features.Add(new MvcViewDocumentClassifierPass());
        }
Exemplo n.º 2
0
        public static void Register(IRazorEngineBuilder builder)
        {
            InjectDirective.Register(builder);
            ModelDirective.Register(builder);
            NamespaceDirective.Register(builder);
            PageDirective.Register(builder);

            FunctionsDirective.Register(builder);
            InheritsDirective.Register(builder);
            SectionDirective.Register(builder);

            builder.AddTargetExtension(new TemplateTargetExtension()
            {
                TemplateTypeName = "global::Microsoft.AspNetCore.Mvc.Razor.HelperResult",
            });

            builder.Features.Add(new ModelExpressionPass());
            builder.Features.Add(new PagesPropertyInjectionPass());
            builder.Features.Add(new ViewComponentTagHelperPass());
            builder.Features.Add(new RazorPageDocumentClassifierPass());
            builder.Features.Add(new MvcViewDocumentClassifierPass());
            builder.Features.Add(new AssemblyAttributeInjectionPass());

            if (!builder.DesignTime)
            {
                builder.Features.Add(new InstrumentationPass());
            }
        }
Exemplo n.º 3
0
 public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
 {
     builder.AddDirective(Directive);
     builder.Features.Add(new Pass());
     builder.AddTargetExtension(new InjectTargetExtension());
     return(builder);
 }
        public static IRazorEngineBuilder ConfigureDocumentClassifier(this IRazorEngineBuilder builder)
        {
            var feature = builder.Features.OfType <DefaultDocumentClassifierPassFeature>().FirstOrDefault();

            if (feature == null)
            {
                feature = new DefaultDocumentClassifierPassFeature();
                builder.Features.Add(feature);
            }

            feature.ConfigureNamespace.Clear();
            feature.ConfigureClass.Clear();
            feature.ConfigureMethod.Clear();

            feature.ConfigureNamespace.Add((RazorCodeDocument codeDocument, NamespaceDeclarationIntermediateNode node) => node.Content = "Microsoft.AspNetCore.Razor.Language.IntegrationTests.TestFiles");

            feature.ConfigureClass.Add((RazorCodeDocument codeDocument, ClassDeclarationIntermediateNode node) =>
            {
                node.ClassName = IntegrationTestBase.FileName.Replace('/', '_');
                node.Modifiers.Clear();
                node.Modifiers.Add("public");
            });

            feature.ConfigureMethod.Add((RazorCodeDocument codeDocument, MethodDeclarationIntermediateNode node) =>
            {
                node.Modifiers.Clear();
                node.Modifiers.Add("public");
                node.Modifiers.Add("async");
                node.MethodName = "ExecuteAsync";
                node.ReturnType = typeof(Task).FullName;
            });

            return(builder);
        }
Exemplo n.º 5
0
        public static void RegisterViewComponentTagHelpers(IRazorEngineBuilder builder)
        {
            EnsureDesignTime(builder);

            builder.Features.Add(new ViewComponentTagHelperPass());
            builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
        }
Exemplo n.º 6
0
        private static void EnsureDesignTime(IRazorEngineBuilder builder)
        {
            if (builder.DesignTime)
            {
                return;
            }

            throw new NotSupportedException(Resources.RuntimeCodeGenerationNotSupported);
        }
Exemplo n.º 7
0
        public static void Register(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddDirective(Directive);
            builder.Features.Add(new FunctionsDirectivePass());
        }
Exemplo n.º 8
0
#pragma warning disable CS0618 // Type or member is obsolete
        private static void EnsureDesignTime(IRazorEngineBuilder builder)
#pragma warning restore CS0618 // Type or member is obsolete
        {
            if (builder.DesignTime)
            {
                return;
            }

            throw new NotSupportedException(Resources.RuntimeCodeGenerationNotSupported);
        }
Exemplo n.º 9
0
        public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddDirective(Directive);
            return(builder);
        }
Exemplo n.º 10
0
        internal static void AddDefaults(IRazorEngineBuilder builder)
        {
            builder.Phases.Add(new DefaultRazorParsingPhase());
            builder.Phases.Add(new DefaultRazorSyntaxTreePhase());
            builder.Phases.Add(new DefaultRazorTagHelperBinderPhase());
            builder.Phases.Add(new DefaultRazorIntermediateNodeLoweringPhase());
            builder.Phases.Add(new DefaultRazorDocumentClassifierPhase());
            builder.Phases.Add(new DefaultRazorDirectiveClassifierPhase());
            builder.Phases.Add(new DefaultRazorOptimizationPhase());
            builder.Phases.Add(new DefaultRazorCSharpLoweringPhase());

            // General extensibility
            builder.Features.Add(new DefaultRazorDirectiveFeature());
            builder.Features.Add(new DefaultRazorTargetExtensionFeature());
            builder.Features.Add(new DefaultMetadataIdentifierFeature());

            // Syntax Tree passes
            builder.Features.Add(new DefaultDirectiveSyntaxTreePass());
            builder.Features.Add(new HtmlNodeOptimizationPass());

            // Intermediate Node Passes
            builder.Features.Add(new DefaultDocumentClassifierPass());
            builder.Features.Add(new MetadataAttributePass());
            builder.Features.Add(new DirectiveRemovalOptimizationPass());
            builder.Features.Add(new DefaultTagHelperOptimizationPass());

            // Default Code Target Extensions
            builder.AddTargetExtension(new MetadataAttributeTargetExtension());

            // Default configuration
            var configurationFeature = new DefaultDocumentClassifierPassFeature();

            configurationFeature.ConfigureClass.Add((document, @class) =>
            {
                @class.ClassName = "Template";
                @class.Modifiers.Add("public");
            });

            configurationFeature.ConfigureNamespace.Add((document, @namespace) =>
            {
                @namespace.Content = "Razor";
            });

            configurationFeature.ConfigureMethod.Add((document, method) =>
            {
                method.MethodName = "ExecuteAsync";
                method.ReturnType = $"global::{typeof(Task).FullName}";

                method.Modifiers.Add("public");
                method.Modifiers.Add("async");
                method.Modifiers.Add("override");
            });

            builder.Features.Add(configurationFeature);
        }
Exemplo n.º 11
0
        public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddDirective(Directive);
            builder.Features.Add(new Pass(builder.DesignTime));
            return(builder);
        }
Exemplo n.º 12
0
        /// <summary>
        /// Sets the namespace for generated types.
        /// </summary>
        /// <param name="builder">The <see cref="IRazorEngineBuilder"/>.</param>
        /// <param name="namespaceName">The name of the namespace.</param>
        /// <returns>The <see cref="IRazorEngineBuilder"/>.</returns>
        public static IRazorEngineBuilder SetNamespace(this IRazorEngineBuilder builder, string namespaceName)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var configurationFeature = GetDefaultDocumentClassifierPassFeature(builder);

            configurationFeature.ConfigureNamespace.Add((document, @namespace) => @namespace.Content = namespaceName);
            return(builder);
        }
Exemplo n.º 13
0
        public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            builder.AddDirective(Directive);
            builder.Features.Add(new Pass());
            builder.AddTargetExtension(new InjectTargetExtension());
            return(builder);
        }
Exemplo n.º 14
0
        /// <summary>
        /// Sets the base type for generated types.
        /// </summary>
        /// <param name="builder">The <see cref="IRazorEngineBuilder"/>.</param>
        /// <param name="baseType">The name of the base type.</param>
        /// <returns>The <see cref="IRazorEngineBuilder"/>.</returns>
        public static IRazorEngineBuilder SetBaseType(this IRazorEngineBuilder builder, string baseType)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            var configurationFeature = GetDefaultDocumentClassifierPassFeature(builder);

            configurationFeature.ConfigureClass.Add((document, @class) => @class.BaseType = baseType);
            return(builder);
        }
Exemplo n.º 15
0
        public static void RegisterViewComponentTagHelpers(IRazorEngineBuilder builder)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

            EnsureDesignTime(builder);

            builder.Features.Add(new ViewComponentTagHelperPass());
            builder.AddTargetExtension(new ViewComponentTagHelperTargetExtension());
        }
Exemplo n.º 16
0
        private static IRazorTargetExtensionFeature GetTargetExtensionFeature(IRazorEngineBuilder builder)
        {
            var targetExtensionFeature = builder.Features.OfType <IRazorTargetExtensionFeature>().FirstOrDefault();

            if (targetExtensionFeature == null)
            {
                targetExtensionFeature = new DefaultRazorTargetExtensionFeature();
                builder.Features.Add(targetExtensionFeature);
            }

            return(targetExtensionFeature);
        }
Exemplo n.º 17
0
        private static IRazorDirectiveFeature GetDirectiveFeature(IRazorEngineBuilder builder)
        {
            var directiveFeature = builder.Features.OfType <IRazorDirectiveFeature>().FirstOrDefault();

            if (directiveFeature == null)
            {
                directiveFeature = new DefaultRazorDirectiveFeature();
                builder.Features.Add(directiveFeature);
            }

            return(directiveFeature);
        }
    public static IRazorEngineBuilder AddTagHelpers(this IRazorEngineBuilder builder, IEnumerable <TagHelperDescriptor> tagHelpers)
    {
        var feature = (TestTagHelperFeature)builder.Features.OfType <ITagHelperFeature>().FirstOrDefault();

        if (feature == null)
        {
            feature = new TestTagHelperFeature();
            builder.Features.Add(feature);
        }

        feature.TagHelpers.AddRange(tagHelpers);
        return(builder);
    }
Exemplo n.º 19
0
        private void ConfigureRazorEngine(IRazorEngineBuilder engineBuilder)
        {
            var engineFeatures = Features.OfType <IRazorEngineFeature>();

            foreach (var engineFeature in engineFeatures)
            {
                engineBuilder.Features.Add(engineFeature);
            }

            for (var i = 0; i < Phases.Count; i++)
            {
                engineBuilder.Phases.Add(Phases[i]);
            }
        }
Exemplo n.º 20
0
#pragma warning disable CS0618 // Type or member is obsolete
        private void ConfigureRazorEngine(IRazorEngineBuilder engineBuilder)
#pragma warning disable CS0618 // Type or member is obsolete
        {
            var engineFeatures = Features.OfType <IRazorEngineFeature>();

            foreach (var engineFeature in engineFeatures)
            {
                engineBuilder.Features.Add(engineFeature);
            }

            for (var i = 0; i < Phases.Count; i++)
            {
                engineBuilder.Phases.Add(Phases[i]);
            }
        }
Exemplo n.º 21
0
        internal static void AddRuntimeDefaults(IRazorEngineBuilder builder)
        {
            // Configure options
            builder.Features.Add(new DefaultRazorParserOptionsFeature(designTime: false, version: RazorParserOptions.LatestRazorLanguageVersion));
            builder.Features.Add(new DefaultRazorCodeGenerationOptionsFeature(designTime: false));

            // Intermediate Node Passes
            builder.Features.Add(new PreallocatedTagHelperAttributeOptimizationPass());

            // Code Target Extensions
            builder.AddTargetExtension(new DefaultTagHelperTargetExtension()
            {
                DesignTime = false
            });
            builder.AddTargetExtension(new PreallocatedAttributeTargetExtension());
        }
Exemplo n.º 22
0
        internal static void AddDesignTimeDefaults(IRazorEngineBuilder builder)
        {
            // Configure options
            builder.Features.Add(new DefaultRazorParserOptionsFeature(designTime: true, version: RazorParserOptions.LatestRazorLanguageVersion));
            builder.Features.Add(new DefaultRazorCodeGenerationOptionsFeature(designTime: true));
            builder.Features.Add(new SuppressChecksumOptionsFeature());

            // Intermediate Node Passes
            builder.Features.Add(new DesignTimeDirectivePass());

            // Code Target Extensions
            builder.AddTargetExtension(new DefaultTagHelperTargetExtension()
            {
                DesignTime = true
            });
            builder.AddTargetExtension(new DesignTimeDirectiveTargetExtension());
        }
Exemplo n.º 23
0
        /// <summary>
        /// Adds the specified <see cref="DirectiveDescriptor"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IRazorEngineBuilder"/>.</param>
        /// <param name="directive">The <see cref="DirectiveDescriptor"/> to add.</param>
        /// <returns>The <see cref="IRazorEngineBuilder"/>.</returns>
        public static IRazorEngineBuilder AddDirective(this IRazorEngineBuilder builder, DirectiveDescriptor directive)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            var directiveFeature = GetDirectiveFeature(builder);

            directiveFeature.Directives.Add(directive);

            return(builder);
        }
Exemplo n.º 24
0
        /// <summary>
        /// Adds the specified <see cref="ICodeTargetExtension"/>.
        /// </summary>
        /// <param name="builder">The <see cref="IRazorEngineBuilder"/>.</param>
        /// <param name="extension">The <see cref="ICodeTargetExtension"/> to add.</param>
        /// <returns>The <see cref="IRazorEngineBuilder"/>.</returns>
        public static IRazorEngineBuilder AddTargetExtension(this IRazorEngineBuilder builder, ICodeTargetExtension extension)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            var targetExtensionFeature = GetTargetExtensionFeature(builder);

            targetExtensionFeature.TargetExtensions.Add(extension);

            return(builder);
        }
Exemplo n.º 25
0
        /// <summary>
        /// Registers a class configuration delegate that gets invoked during code generation.
        /// </summary>
        /// <param name="builder">The <see cref="IRazorEngineBuilder"/>.</param>
        /// <param name="configureClass"><see cref="Action"/> invoked to configure
        /// <see cref="ClassDeclarationIntermediateNode"/> during code generation.</param>
        /// <returns>The <see cref="IRazorEngineBuilder"/>.</returns>
        public static IRazorEngineBuilder ConfigureClass(
            this IRazorEngineBuilder builder,
            Action <RazorCodeDocument, ClassDeclarationIntermediateNode> configureClass)
        {
            if (builder == null)
            {
                throw new ArgumentNullException(nameof(builder));
            }

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

            var configurationFeature = GetDefaultDocumentClassifierPassFeature(builder);

            configurationFeature.ConfigureClass.Add(configureClass);
            return(builder);
        }
Exemplo n.º 26
0
 public static void Register(IRazorEngineBuilder builder)
 {
     builder.AddDirective(Directive);
     builder.Features.Add(new FunctionsDirectivePass());
 }
Exemplo n.º 27
0
#pragma warning disable CS0618 // Type or member is obsolete
        private static void AddDefaults(IRazorEngineBuilder builder)
#pragma warning restore CS0618 // Type or member is obsolete
        {
            AddDefaultPhases(builder.Phases);
            AddDefaultFeatures(builder.Features);
        }
Exemplo n.º 28
0
 public static IRazorEngineBuilder Register(IRazorEngineBuilder builder)
 {
     builder.AddDirective(Directive);
     builder.Features.Add(new Pass(builder.DesignTime));
     return(builder);
 }
Exemplo n.º 29
0
 public static void Register(IRazorEngineBuilder builder)
 {
     builder.AddDirective(Directive);
     builder.Features.Add(new SectionDirectivePass());
     builder.AddTargetExtension(new SectionTargetExtension());
 }
 public static void Register(IRazorEngineBuilder configuration)
 {
     configuration.Features.Add(new TemporaryImplementsPass());
 }