Пример #1
0
        public static RazorProjectEngine Create(
            RazorConfiguration configuration,
            RazorProjectFileSystem fileSystem,
            Action <RazorProjectEngineBuilder> configure)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

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

            var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem);

            // The intialization order is somewhat important.
            //
            // Defaults -> Extensions -> Additional customization
            //
            // This allows extensions to rely on default features, and customizations to override choices made by
            // extensions.
            AddDefaultPhases(builder.Phases);
            AddDefaultsFeatures(builder.Features);

            LoadExtensions(builder, configuration.Extensions);

            configure?.Invoke(builder);

            return(builder.Build());
        }
Пример #2
0
        public static RazorProjectEngine Create(
            RazorProjectFileSystem fileSystem,
            RazorConfiguration configuration,
            Action <RazorProjectEngineBuilder> configure)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

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

            var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem);

            AddDefaults(builder);

            if (configuration.DesignTime)
            {
                AddDesignTimeDefaults(builder);
            }
            else
            {
                AddRuntimeDefaults(builder);
            }

            configure?.Invoke(builder);

            return(builder.Build());
        }
Пример #3
0
        internal static RazorProjectEngine CreateEmpty(Action <RazorProjectEngineBuilder> configure = null)
        {
            var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, RazorProjectFileSystem.Empty);

            configure?.Invoke(builder);

            return(builder.Build());
        }
Пример #4
0
        public void Build_CreatesProjectEngineWithFileSystem()
        {
            // Arrange
            var fileSystem = Mock.Of <RazorProjectFileSystem>();
            var builder    = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, fileSystem);

            // Act
            var projectEngine = builder.Build();

            // Assert
            Assert.Same(fileSystem, projectEngine.FileSystem);
        }
Пример #5
0
        public static RazorProjectEngine Create(
            RazorConfiguration configuration,
            RazorProjectFileSystem fileSystem,
            Action <RazorProjectEngineBuilder> configure)
        {
            if (fileSystem == null)
            {
                throw new ArgumentNullException(nameof(fileSystem));
            }

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

            var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem);

            // The intialization order is somewhat important.
            //
            // Defaults -> Extensions -> Additional customization
            //
            // This allows extensions to rely on default features, and customizations to override choices made by
            // extensions.
            AddDefaultPhases(builder.Phases);
            AddDefaultFeatures(builder.Features);

            if (configuration.LanguageVersion.CompareTo(RazorLanguageVersion.Version_5_0) >= 0)
            {
                builder.Features.Add(new ViewCssScopePass());
            }

            if (configuration.LanguageVersion.CompareTo(RazorLanguageVersion.Version_3_0) >= 0)
            {
                FunctionsDirective.Register(builder);
                ImplementsDirective.Register(builder);
                InheritsDirective.Register(builder);
                NamespaceDirective.Register(builder);
                AttributeDirective.Register(builder);

                AddComponentFeatures(builder, configuration.LanguageVersion);
            }

            LoadExtensions(builder, configuration.Extensions);

            configure?.Invoke(builder);

            return(builder.Build());
        }
        public void AddDirective_CreatesAndAddsToDirectiveFeatureIfItDoesNotExist()
        {
            // Arrange
            var builder           = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
            var expectedDirective = Mock.Of <DirectiveDescriptor>();

            // Act
            builder.AddDirective(expectedDirective);

            // Assert
            var feature          = Assert.Single(builder.Features);
            var directiveFeature = Assert.IsAssignableFrom <IRazorDirectiveFeature>(feature);
            var directive        = Assert.Single(directiveFeature.Directives);

            Assert.Same(expectedDirective, directive);
        }
        public void AddTargetExtension_CreatesAndAddsToTargetExtensionFeatureIfItDoesNotExist()
        {
            // Arrange
            var builder           = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
            var expectedExtension = Mock.Of <ICodeTargetExtension>();

            // Act
            builder.AddTargetExtension(expectedExtension);

            // Assert
            var feature = Assert.Single(builder.Features);
            var codeTargetExtensionFeature = Assert.IsAssignableFrom <IRazorTargetExtensionFeature>(feature);
            var extensions = Assert.Single(codeTargetExtensionFeature.TargetExtensions);

            Assert.Same(expectedExtension, extensions);
        }
Пример #8
0
        public void Build_AddsPhasesToRazorEngine()
        {
            // Arrange
            var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());

            builder.Phases.Add(Mock.Of <IRazorEnginePhase>());
            builder.Phases.Add(Mock.Of <IRazorEnginePhase>());

            var phases = builder.Phases.ToArray();

            // Act
            var projectEngine = builder.Build();

            // Assert
            Assert.Collection(projectEngine.Engine.Phases,
                              phase => Assert.Same(phases[0], phase),
                              phase => Assert.Same(phases[1], phase));
        }
        public void SetImportFeature_SetsTheImportFeature()
        {
            // Arrange
            var builder      = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
            var testFeature1 = Mock.Of <IImportProjectFeature>();
            var testFeature2 = Mock.Of <IImportProjectFeature>();

            builder.Features.Add(testFeature1);
            builder.Features.Add(testFeature2);
            var newFeature = Mock.Of <IImportProjectFeature>();

            // Act
            builder.SetImportFeature(newFeature);

            // Assert
            var feature = Assert.Single(builder.Features);

            Assert.Same(newFeature, feature);
        }
        public void AddDirective_UsesExistingFeatureIfExistsAndAddsTo()
        {
            // Arrange
            var builder          = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
            var directiveFeature = new DefaultRazorDirectiveFeature();

            builder.Features.Add(directiveFeature);
            var expecteDirective = Mock.Of <DirectiveDescriptor>();

            // Act
            builder.AddDirective(expecteDirective);

            // Assert
            var feature = Assert.Single(builder.Features);

            Assert.Same(directiveFeature, feature);
            var directive = Assert.Single(directiveFeature.Directives);

            Assert.Same(expecteDirective, directive);
        }
        public void AddTargetExtension_UsesExistingFeatureIfExistsAndAddsTo()
        {
            // Arrange
            var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>());
            var codeTargetExtensionFeature = new DefaultRazorTargetExtensionFeature();

            builder.Features.Add(codeTargetExtensionFeature);
            var expectedExtension = Mock.Of <ICodeTargetExtension>();

            // Act
            builder.AddTargetExtension(expectedExtension);

            // Assert
            var feature = Assert.Single(builder.Features);

            Assert.Same(codeTargetExtensionFeature, feature);
            var extensions = Assert.Single(codeTargetExtensionFeature.TargetExtensions);

            Assert.Same(expectedExtension, extensions);
        }