Revert "Add contracts for RazorProjectEngine."
This reverts commit 59f2cf8e66.
This commit is contained in:
parent
59f2cf8e66
commit
f301d92332
|
|
@ -1,15 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorImportFeature : IRazorImportFeature
|
||||
{
|
||||
public RazorProjectEngine ProjectEngine { get; set; }
|
||||
|
||||
public IReadOnlyList<RazorSourceDocument> GetImports(string sourceFilePath) => Array.Empty<RazorSourceDocument>();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,93 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorProjectEngine : RazorProjectEngine
|
||||
{
|
||||
public DefaultRazorProjectEngine(
|
||||
RazorEngine engine,
|
||||
RazorProjectFileSystem fileSystem,
|
||||
IReadOnlyList<IRazorProjectEngineFeature> features)
|
||||
{
|
||||
if (engine == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(engine));
|
||||
}
|
||||
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
if (features == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(features));
|
||||
}
|
||||
|
||||
Engine = engine;
|
||||
FileSystem = fileSystem;
|
||||
Features = features;
|
||||
|
||||
for (var i = 0; i < features.Count; i++)
|
||||
{
|
||||
features[i].ProjectEngine = this;
|
||||
}
|
||||
}
|
||||
|
||||
public override RazorProjectFileSystem FileSystem { get; }
|
||||
|
||||
public override RazorEngine Engine { get; }
|
||||
|
||||
public override IReadOnlyList<IRazorProjectEngineFeature> Features { get; }
|
||||
|
||||
public override RazorCodeDocument Process(string filePath)
|
||||
{
|
||||
if (string.IsNullOrEmpty(filePath))
|
||||
{
|
||||
throw new ArgumentException(Resources.ArgumentCannotBeNullOrEmpty, nameof(filePath));
|
||||
}
|
||||
|
||||
var projectItem = FileSystem.GetItem(filePath);
|
||||
var sourceDocument = RazorSourceDocument.ReadFrom(projectItem);
|
||||
var codeDocument = Process(sourceDocument);
|
||||
|
||||
return codeDocument;
|
||||
}
|
||||
|
||||
public override RazorCodeDocument Process(RazorSourceDocument sourceDocument)
|
||||
{
|
||||
if (sourceDocument == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(sourceDocument));
|
||||
}
|
||||
|
||||
var importFeature = GetRequiredFeature<IRazorImportFeature>();
|
||||
var imports = importFeature.GetImports(sourceDocument.FilePath);
|
||||
|
||||
var codeDocument = RazorCodeDocument.Create(sourceDocument, imports);
|
||||
|
||||
Engine.Process(codeDocument);
|
||||
|
||||
return codeDocument;
|
||||
}
|
||||
|
||||
private TFeature GetRequiredFeature<TFeature>() where TFeature : IRazorProjectEngineFeature
|
||||
{
|
||||
var feature = Features.OfType<TFeature>().FirstOrDefault();
|
||||
if (feature == null)
|
||||
{
|
||||
throw new InvalidOperationException(
|
||||
Resources.FormatRazorProjectEngineMissingFeatureDependency(
|
||||
typeof(RazorProjectEngine).FullName,
|
||||
typeof(TFeature).FullName));
|
||||
}
|
||||
|
||||
return feature;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,66 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
internal class DefaultRazorProjectEngineBuilder : RazorProjectEngineBuilder
|
||||
{
|
||||
public DefaultRazorProjectEngineBuilder(bool designTime, RazorProjectFileSystem fileSystem)
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
DesignTime = designTime;
|
||||
FileSystem = fileSystem;
|
||||
Features = new List<IRazorFeature>();
|
||||
Phases = new List<IRazorEnginePhase>();
|
||||
}
|
||||
|
||||
public override RazorProjectFileSystem FileSystem { get; }
|
||||
|
||||
public override ICollection<IRazorFeature> Features { get; }
|
||||
|
||||
public override IList<IRazorEnginePhase> Phases { get; }
|
||||
|
||||
public override bool DesignTime { get; }
|
||||
|
||||
public override RazorProjectEngine Build()
|
||||
{
|
||||
RazorEngine engine = null;
|
||||
|
||||
if (DesignTime)
|
||||
{
|
||||
engine = RazorEngine.CreateDesignTimeEmpty(ConfigureRazorEngine);
|
||||
}
|
||||
else
|
||||
{
|
||||
engine = RazorEngine.CreateEmpty(ConfigureRazorEngine);
|
||||
}
|
||||
|
||||
var projectEngineFeatures = Features.OfType<IRazorProjectEngineFeature>().ToArray();
|
||||
var projectEngine = new DefaultRazorProjectEngine(engine, FileSystem, projectEngineFeatures);
|
||||
|
||||
return projectEngine;
|
||||
}
|
||||
|
||||
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]);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -3,7 +3,7 @@
|
|||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public interface IRazorEngineFeature : IRazorFeature
|
||||
public interface IRazorEngineFeature
|
||||
{
|
||||
RazorEngine Engine { get; set; }
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,9 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public interface IRazorFeature
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -1,12 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public interface IRazorImportFeature : IRazorProjectEngineFeature
|
||||
{
|
||||
IReadOnlyList<RazorSourceDocument> GetImports(string sourceFilePath);
|
||||
}
|
||||
}
|
||||
|
|
@ -1,10 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public interface IRazorProjectEngineFeature : IRazorFeature
|
||||
{
|
||||
RazorProjectEngine ProjectEngine { get; set; }
|
||||
}
|
||||
}
|
||||
|
|
@ -1856,20 +1856,6 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
internal static string FormatPropertyMustNotBeNull(object p0, object p1)
|
||||
=> string.Format(CultureInfo.CurrentCulture, GetString("PropertyMustNotBeNull"), p0, p1);
|
||||
|
||||
/// <summary>
|
||||
/// The '{0}' is missing feature '{1}'.
|
||||
/// </summary>
|
||||
internal static string RazorProjectEngineMissingFeatureDependency
|
||||
{
|
||||
get => GetString("RazorProjectEngineMissingFeatureDependency");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// The '{0}' is missing feature '{1}'.
|
||||
/// </summary>
|
||||
internal static string FormatRazorProjectEngineMissingFeatureDependency(object p0, object p1)
|
||||
=> string.Format(CultureInfo.CurrentCulture, GetString("RazorProjectEngineMissingFeatureDependency"), p0, p1);
|
||||
|
||||
private static string GetString(string name, params string[] formatterNames)
|
||||
{
|
||||
var value = _resourceManager.GetString(name);
|
||||
|
|
|
|||
|
|
@ -3,8 +3,6 @@
|
|||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Diagnostics;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Razor.Language.Extensions;
|
||||
|
||||
|
|
@ -21,7 +19,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
var builder = new DefaultRazorEngineBuilder(designTime: false);
|
||||
AddDefaults(builder);
|
||||
AddDefaultRuntimeFeatures(builder.Features);
|
||||
AddRuntimeDefaults(builder);
|
||||
configure?.Invoke(builder);
|
||||
return builder.Build();
|
||||
}
|
||||
|
|
@ -35,73 +33,46 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
{
|
||||
var builder = new DefaultRazorEngineBuilder(designTime: true);
|
||||
AddDefaults(builder);
|
||||
AddDefaultDesignTimeFeatures(builder.Features);
|
||||
AddDesignTimeDefaults(builder);
|
||||
configure?.Invoke(builder);
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
public static RazorEngine CreateEmpty(Action<IRazorEngineBuilder> configure)
|
||||
{
|
||||
if (configure == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(configure));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorEngineBuilder(designTime: false);
|
||||
configure(builder);
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
public static RazorEngine CreateDesignTimeEmpty(Action<IRazorEngineBuilder> configure)
|
||||
{
|
||||
if (configure == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(configure));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorEngineBuilder(designTime: true);
|
||||
configure(builder);
|
||||
configure?.Invoke(builder);
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
internal static void AddDefaults(IRazorEngineBuilder builder)
|
||||
{
|
||||
AddDefaultPhases(builder.Phases);
|
||||
AddDefaultFeatures(builder.Features);
|
||||
}
|
||||
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());
|
||||
|
||||
internal static void AddDefaultPhases(IList<IRazorEnginePhase> phases)
|
||||
{
|
||||
phases.Add(new DefaultRazorParsingPhase());
|
||||
phases.Add(new DefaultRazorSyntaxTreePhase());
|
||||
phases.Add(new DefaultRazorTagHelperBinderPhase());
|
||||
phases.Add(new DefaultRazorIntermediateNodeLoweringPhase());
|
||||
phases.Add(new DefaultRazorDocumentClassifierPhase());
|
||||
phases.Add(new DefaultRazorDirectiveClassifierPhase());
|
||||
phases.Add(new DefaultRazorOptimizationPhase());
|
||||
phases.Add(new DefaultRazorCSharpLoweringPhase());
|
||||
}
|
||||
|
||||
internal static void AddDefaultFeatures(ICollection<IRazorEngineFeature> features)
|
||||
{
|
||||
// General extensibility
|
||||
features.Add(new DefaultRazorDirectiveFeature());
|
||||
var targetExtensionFeature = new DefaultRazorTargetExtensionFeature();
|
||||
features.Add(targetExtensionFeature);
|
||||
features.Add(new DefaultMetadataIdentifierFeature());
|
||||
builder.Features.Add(new DefaultRazorDirectiveFeature());
|
||||
builder.Features.Add(new DefaultRazorTargetExtensionFeature());
|
||||
builder.Features.Add(new DefaultMetadataIdentifierFeature());
|
||||
|
||||
// Syntax Tree passes
|
||||
features.Add(new DefaultDirectiveSyntaxTreePass());
|
||||
features.Add(new HtmlNodeOptimizationPass());
|
||||
builder.Features.Add(new DefaultDirectiveSyntaxTreePass());
|
||||
builder.Features.Add(new HtmlNodeOptimizationPass());
|
||||
|
||||
// Intermediate Node Passes
|
||||
features.Add(new DefaultDocumentClassifierPass());
|
||||
features.Add(new MetadataAttributePass());
|
||||
features.Add(new DirectiveRemovalOptimizationPass());
|
||||
features.Add(new DefaultTagHelperOptimizationPass());
|
||||
builder.Features.Add(new DefaultDocumentClassifierPass());
|
||||
builder.Features.Add(new MetadataAttributePass());
|
||||
builder.Features.Add(new DirectiveRemovalOptimizationPass());
|
||||
builder.Features.Add(new DefaultTagHelperOptimizationPass());
|
||||
|
||||
// Default Code Target Extensions
|
||||
targetExtensionFeature.TargetExtensions.Add(new MetadataAttributeTargetExtension());
|
||||
builder.AddTargetExtension(new MetadataAttributeTargetExtension());
|
||||
|
||||
// Default configuration
|
||||
var configurationFeature = new DefaultDocumentClassifierPassFeature();
|
||||
|
|
@ -126,42 +97,36 @@ namespace Microsoft.AspNetCore.Razor.Language
|
|||
method.Modifiers.Add("override");
|
||||
});
|
||||
|
||||
features.Add(configurationFeature);
|
||||
builder.Features.Add(configurationFeature);
|
||||
}
|
||||
|
||||
internal static void AddDefaultRuntimeFeatures(ICollection<IRazorEngineFeature> features)
|
||||
internal static void AddRuntimeDefaults(IRazorEngineBuilder builder)
|
||||
{
|
||||
// Configure options
|
||||
features.Add(new DefaultRazorParserOptionsFeature(designTime: false, version: RazorParserOptions.LatestRazorLanguageVersion));
|
||||
features.Add(new DefaultRazorCodeGenerationOptionsFeature(designTime: false));
|
||||
builder.Features.Add(new DefaultRazorParserOptionsFeature(designTime: false, version: RazorParserOptions.LatestRazorLanguageVersion));
|
||||
builder.Features.Add(new DefaultRazorCodeGenerationOptionsFeature(designTime: false));
|
||||
|
||||
// Intermediate Node Passes
|
||||
features.Add(new PreallocatedTagHelperAttributeOptimizationPass());
|
||||
builder.Features.Add(new PreallocatedTagHelperAttributeOptimizationPass());
|
||||
|
||||
// Code Target Extensions
|
||||
var targetExtension = features.OfType<IRazorTargetExtensionFeature>().FirstOrDefault();
|
||||
Debug.Assert(targetExtension != null);
|
||||
|
||||
targetExtension.TargetExtensions.Add(new DefaultTagHelperTargetExtension() { DesignTime = false });
|
||||
targetExtension.TargetExtensions.Add(new PreallocatedAttributeTargetExtension());
|
||||
builder.AddTargetExtension(new DefaultTagHelperTargetExtension() { DesignTime = false });
|
||||
builder.AddTargetExtension(new PreallocatedAttributeTargetExtension());
|
||||
}
|
||||
|
||||
internal static void AddDefaultDesignTimeFeatures(ICollection<IRazorEngineFeature> features)
|
||||
internal static void AddDesignTimeDefaults(IRazorEngineBuilder builder)
|
||||
{
|
||||
// Configure options
|
||||
features.Add(new DefaultRazorParserOptionsFeature(designTime: true, version: RazorParserOptions.LatestRazorLanguageVersion));
|
||||
features.Add(new DefaultRazorCodeGenerationOptionsFeature(designTime: true));
|
||||
features.Add(new SuppressChecksumOptionsFeature());
|
||||
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
|
||||
features.Add(new DesignTimeDirectivePass());
|
||||
builder.Features.Add(new DesignTimeDirectivePass());
|
||||
|
||||
// Code Target Extensions
|
||||
var targetExtension = features.OfType<IRazorTargetExtensionFeature>().FirstOrDefault();
|
||||
Debug.Assert(targetExtension != null);
|
||||
|
||||
targetExtension.TargetExtensions.Add(new DefaultTagHelperTargetExtension() { DesignTime = true });
|
||||
targetExtension.TargetExtensions.Add(new DesignTimeDirectiveTargetExtension());
|
||||
builder.AddTargetExtension(new DefaultTagHelperTargetExtension() { DesignTime = true });
|
||||
builder.AddTargetExtension(new DesignTimeDirectiveTargetExtension());
|
||||
}
|
||||
|
||||
public abstract IReadOnlyList<IRazorEngineFeature> Features { get; }
|
||||
|
|
|
|||
|
|
@ -1,129 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public abstract class RazorProjectEngine
|
||||
{
|
||||
public abstract RazorProjectFileSystem FileSystem { get; }
|
||||
|
||||
public abstract RazorEngine Engine { get; }
|
||||
|
||||
public abstract IReadOnlyList<IRazorProjectEngineFeature> Features { get; }
|
||||
|
||||
public abstract RazorCodeDocument Process(string filePath);
|
||||
|
||||
public abstract RazorCodeDocument Process(RazorSourceDocument sourceDocument);
|
||||
|
||||
public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem) => Create(fileSystem, configure: null);
|
||||
|
||||
public static RazorProjectEngine Create(RazorProjectFileSystem fileSystem, Action<RazorProjectEngineBuilder> configure)
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorProjectEngineBuilder(designTime: false, fileSystem: fileSystem);
|
||||
|
||||
AddDefaults(builder);
|
||||
AddRuntimeDefaults(builder);
|
||||
configure?.Invoke(builder);
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
public static RazorProjectEngine CreateDesignTime(RazorProjectFileSystem fileSystem) => CreateDesignTime(fileSystem, configure: null);
|
||||
|
||||
public static RazorProjectEngine CreateDesignTime(RazorProjectFileSystem fileSystem, Action<RazorProjectEngineBuilder> configure)
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorProjectEngineBuilder(designTime: true, fileSystem: fileSystem);
|
||||
|
||||
AddDefaults(builder);
|
||||
AddDesignTimeDefaults(builder);
|
||||
configure?.Invoke(builder);
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
public static RazorProjectEngine CreateEmpty(RazorProjectFileSystem fileSystem, Action<RazorProjectEngineBuilder> configure)
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
if (configure == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(configure));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorProjectEngineBuilder(designTime: false, fileSystem: fileSystem);
|
||||
|
||||
configure(builder);
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
public static RazorProjectEngine CreateDesignTimeEmpty(RazorProjectFileSystem fileSystem, Action<RazorProjectEngineBuilder> configure)
|
||||
{
|
||||
if (fileSystem == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(fileSystem));
|
||||
}
|
||||
|
||||
if (configure == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(configure));
|
||||
}
|
||||
|
||||
var builder = new DefaultRazorProjectEngineBuilder(designTime: true, fileSystem: fileSystem);
|
||||
|
||||
configure(builder);
|
||||
|
||||
return builder.Build();
|
||||
}
|
||||
|
||||
private static void AddDefaults(RazorProjectEngineBuilder builder)
|
||||
{
|
||||
builder.Features.Add(new DefaultRazorImportFeature());
|
||||
}
|
||||
|
||||
private static void AddDesignTimeDefaults(RazorProjectEngineBuilder builder)
|
||||
{
|
||||
var engineFeatures = new List<IRazorEngineFeature>();
|
||||
RazorEngine.AddDefaultFeatures(engineFeatures);
|
||||
RazorEngine.AddDefaultDesignTimeFeatures(engineFeatures);
|
||||
|
||||
AddEngineFeaturesAndPhases(builder, engineFeatures);
|
||||
}
|
||||
|
||||
private static void AddRuntimeDefaults(RazorProjectEngineBuilder builder)
|
||||
{
|
||||
var engineFeatures = new List<IRazorEngineFeature>();
|
||||
RazorEngine.AddDefaultFeatures(engineFeatures);
|
||||
RazorEngine.AddDefaultRuntimeFeatures(engineFeatures);
|
||||
|
||||
AddEngineFeaturesAndPhases(builder, engineFeatures);
|
||||
}
|
||||
|
||||
private static void AddEngineFeaturesAndPhases(RazorProjectEngineBuilder builder, IReadOnlyList<IRazorEngineFeature> engineFeatures)
|
||||
{
|
||||
for (var i = 0; i < engineFeatures.Count; i++)
|
||||
{
|
||||
var engineFeature = engineFeatures[i];
|
||||
builder.Features.Add(engineFeature);
|
||||
}
|
||||
|
||||
RazorEngine.AddDefaultPhases(builder.Phases);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Collections.Generic;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public abstract class RazorProjectEngineBuilder
|
||||
{
|
||||
public abstract RazorProjectFileSystem FileSystem { get; }
|
||||
|
||||
public abstract ICollection<IRazorFeature> Features { get; }
|
||||
|
||||
public abstract IList<IRazorEnginePhase> Phases { get; }
|
||||
|
||||
public abstract bool DesignTime { get; }
|
||||
|
||||
public abstract RazorProjectEngine Build();
|
||||
}
|
||||
}
|
||||
|
|
@ -1,33 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Linq;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public static class RazorProjectEngineBuilderExtensions
|
||||
{
|
||||
public static void SetImportFeature(this RazorProjectEngineBuilder builder, IRazorImportFeature feature)
|
||||
{
|
||||
if (builder == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
if (feature == null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(builder));
|
||||
}
|
||||
|
||||
// Remove any existing import features in favor of the new one we're given.
|
||||
var existingFeatures = builder.Features.OfType<IRazorImportFeature>().ToArray();
|
||||
foreach (var existingFeature in existingFeatures)
|
||||
{
|
||||
builder.Features.Remove(existingFeature);
|
||||
}
|
||||
|
||||
builder.Features.Add(feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public abstract class RazorProjectFileSystem : RazorProject
|
||||
{
|
||||
}
|
||||
}
|
||||
|
|
@ -533,7 +533,4 @@ Instead, wrap the contents of the block in "{{}}":
|
|||
<data name="PropertyMustNotBeNull" xml:space="preserve">
|
||||
<value>The '{0}.{1}' property must not be null.</value>
|
||||
</data>
|
||||
<data name="RazorProjectEngineMissingFeatureDependency" xml:space="preserve">
|
||||
<value>The '{0}' is missing feature '{1}'.</value>
|
||||
</data>
|
||||
</root>
|
||||
|
|
@ -1,65 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System.Linq;
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public class DefaultRazorProjectEngineBuilderTest
|
||||
{
|
||||
[Fact]
|
||||
public void Build_AddsFeaturesToRazorEngine()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of<RazorProjectFileSystem>());
|
||||
builder.Features.Add(Mock.Of<IRazorEngineFeature>());
|
||||
builder.Features.Add(Mock.Of<IRazorEngineFeature>());
|
||||
builder.Features.Add(Mock.Of<IRazorProjectEngineFeature>());
|
||||
|
||||
var features = builder.Features.ToArray();
|
||||
|
||||
// Act
|
||||
var projectEngine = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.Collection(projectEngine.Engine.Features,
|
||||
feature => Assert.Same(features[0], feature),
|
||||
feature => Assert.Same(features[1], feature));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_AddsPhasesToRazorEngine()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new DefaultRazorProjectEngineBuilder(false, 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));
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Build_CreatesProjectEngineWithFileSystem()
|
||||
{
|
||||
// Arrange
|
||||
var fileSystem = Mock.Of<RazorProjectFileSystem>();
|
||||
var builder = new DefaultRazorProjectEngineBuilder(false, fileSystem);
|
||||
|
||||
// Act
|
||||
var projectEngine = builder.Build();
|
||||
|
||||
// Assert
|
||||
Assert.Same(fileSystem, projectEngine.FileSystem);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,49 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public class DefaultRazorProjectEngineIntegrationTest
|
||||
{
|
||||
[Fact]
|
||||
public void Process_GetsImportsFromFeature()
|
||||
{
|
||||
// Arrange
|
||||
var sourceDocument = TestRazorSourceDocument.Create();
|
||||
var testImport = TestRazorSourceDocument.Create();
|
||||
var importFeature = new Mock<IRazorImportFeature>();
|
||||
importFeature.Setup(feature => feature.GetImports(It.IsAny<string>()))
|
||||
.Returns(new[] { testImport });
|
||||
var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty, builder =>
|
||||
{
|
||||
builder.SetImportFeature(importFeature.Object);
|
||||
});
|
||||
|
||||
// Act
|
||||
var codeDocument = projectEngine.Process(sourceDocument);
|
||||
|
||||
// Assert
|
||||
var import = Assert.Single(codeDocument.Imports);
|
||||
Assert.Same(testImport, import);
|
||||
}
|
||||
|
||||
[Fact]
|
||||
public void Process_GeneratesCodeDocumentWithValidCSharpDocument()
|
||||
{
|
||||
// Arrange
|
||||
var sourceDocument = TestRazorSourceDocument.Create();
|
||||
var projectEngine = RazorProjectEngine.Create(TestRazorProjectFileSystem.Empty);
|
||||
|
||||
// Act
|
||||
var codeDocument = projectEngine.Process(sourceDocument);
|
||||
|
||||
// Assert
|
||||
var csharpDocument = codeDocument.GetCSharpDocument();
|
||||
Assert.NotNull(csharpDocument);
|
||||
Assert.Empty(csharpDocument.Diagnostics);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,29 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public class DefaultRazorProjectEngineTest
|
||||
{
|
||||
[Fact]
|
||||
public void Process_AsksFileSystemForItems()
|
||||
{
|
||||
// Arrange
|
||||
var razorProjectItem = new TestRazorProjectItem("/some/path.cshtml");
|
||||
var testFileSystem = new Mock<RazorProjectFileSystem>();
|
||||
testFileSystem.Setup(fileSystem => fileSystem.GetItem("/some/path.cshtml"))
|
||||
.Returns(razorProjectItem)
|
||||
.Verifiable();
|
||||
var projectEngine = RazorProjectEngine.Create(testFileSystem.Object);
|
||||
|
||||
// Act
|
||||
projectEngine.Process("/some/path.cshtml");
|
||||
|
||||
// Assert
|
||||
testFileSystem.Verify();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,30 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using Moq;
|
||||
using Xunit;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public class RazorProjectEngineBuilderExtensionsTest
|
||||
{
|
||||
[Fact]
|
||||
public void SetImportFeature_SetsTheImportFeature()
|
||||
{
|
||||
// Arrange
|
||||
var builder = new DefaultRazorProjectEngineBuilder(false, Mock.Of<RazorProjectFileSystem>());
|
||||
var testFeature1 = Mock.Of<IRazorImportFeature>();
|
||||
var testFeature2 = Mock.Of<IRazorImportFeature>();
|
||||
builder.Features.Add(testFeature1);
|
||||
builder.Features.Add(testFeature2);
|
||||
var newFeature = Mock.Of<IRazorImportFeature>();
|
||||
|
||||
// Act
|
||||
builder.SetImportFeature(newFeature);
|
||||
|
||||
// Assert
|
||||
var feature = Assert.Single(builder.Features);
|
||||
Assert.Same(newFeature, feature);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,42 +0,0 @@
|
|||
// Copyright (c) .NET Foundation. All rights reserved.
|
||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
|
||||
namespace Microsoft.AspNetCore.Razor.Language
|
||||
{
|
||||
public class TestRazorProjectFileSystem : RazorProjectFileSystem
|
||||
{
|
||||
public static RazorProjectFileSystem Empty = new TestRazorProjectFileSystem();
|
||||
|
||||
private readonly Dictionary<string, RazorProjectItem> _lookup;
|
||||
|
||||
public TestRazorProjectFileSystem()
|
||||
: this(new RazorProjectItem[0])
|
||||
{
|
||||
}
|
||||
|
||||
public TestRazorProjectFileSystem(IList<RazorProjectItem> items)
|
||||
{
|
||||
_lookup = items.ToDictionary(item => item.FilePath);
|
||||
}
|
||||
|
||||
public override IEnumerable<RazorProjectItem> EnumerateItems(string basePath)
|
||||
{
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public override RazorProjectItem GetItem(string path)
|
||||
{
|
||||
if (!_lookup.TryGetValue(path, out var value))
|
||||
{
|
||||
value = new NotFoundProjectItem("", path);
|
||||
}
|
||||
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Reference in New Issue