This commit is contained in:
Ryan Nowak 2017-05-08 09:21:50 -07:00
parent 1705888721
commit a570139b08
6 changed files with 22 additions and 49 deletions

View File

@ -17,6 +17,9 @@ namespace Microsoft.AspNetCore.Razor.Language
var syntaxTree = codeDocument.GetSyntaxTree(); var syntaxTree = codeDocument.GetSyntaxTree();
ThrowForMissingDependency(syntaxTree); ThrowForMissingDependency(syntaxTree);
// This might not have been set if there are no tag helpers.
var tagHelperContext = codeDocument.GetTagHelperContext();
var builder = RazorIRBuilder.Document(); var builder = RazorIRBuilder.Document();
var document = (DocumentIRNode)builder.Current; var document = (DocumentIRNode)builder.Current;
@ -46,7 +49,7 @@ namespace Microsoft.AspNetCore.Razor.Language
} }
} }
var tagHelperPrefix = codeDocument.GetTagHelperPrefix(); var tagHelperPrefix = tagHelperContext?.Prefix;
var visitor = new MainSourceVisitor(document, builder, namespaces, tagHelperPrefix) var visitor = new MainSourceVisitor(document, builder, namespaces, tagHelperPrefix)
{ {
FileName = syntaxTree.Source.FileName, FileName = syntaxTree.Source.FileName,

View File

@ -31,26 +31,6 @@ namespace Microsoft.AspNetCore.Razor.Language
document.Items[typeof(TagHelperDocumentContext)] = context; document.Items[typeof(TagHelperDocumentContext)] = context;
} }
public static string GetTagHelperPrefix(this RazorCodeDocument document)
{
if (document == null)
{
throw new ArgumentNullException(nameof(document));
}
return document.Items[TagHelperPrefixKey] as string;
}
public static void SetTagHelperPrefix(this RazorCodeDocument document, string tagHelperPrefix)
{
if (document == null)
{
throw new ArgumentNullException(nameof(document));
}
document.Items[TagHelperPrefixKey] = tagHelperPrefix;
}
public static RazorSyntaxTree GetSyntaxTree(this RazorCodeDocument document) public static RazorSyntaxTree GetSyntaxTree(this RazorCodeDocument document)
{ {
if (document == null) if (document == null)

View File

@ -106,7 +106,6 @@ namespace Microsoft.AspNetCore.Razor.Language
if (!string.IsNullOrEmpty(prefix)) if (!string.IsNullOrEmpty(prefix))
{ {
codeDocument.SetTagHelperPrefix(prefixDirective.DirectiveText);
return prefixDirective.DirectiveText; return prefixDirective.DirectiveText;
} }

View File

@ -691,7 +691,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
public void BasicTagHelpers_Prefixed_Runtime() public void BasicTagHelpers_Prefixed_Runtime()
{ {
// Arrange, Act & Assert // Arrange, Act & Assert
RunRuntimeTagHelpersTest(TestTagHelperDescriptors.DefaultPAndInputTagHelperDescriptors, tagHelperPrefix: "THS"); RunRuntimeTagHelpersTest(TestTagHelperDescriptors.DefaultPAndInputTagHelperDescriptors);
} }
[Fact] [Fact]
@ -1535,7 +1535,7 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
public void BasicTagHelpers_Prefixed_DesignTime() public void BasicTagHelpers_Prefixed_DesignTime()
{ {
// Arrange, Act & Assert // Arrange, Act & Assert
RunDesignTimeTagHelpersTest(TestTagHelperDescriptors.DefaultPAndInputTagHelperDescriptors, tagHelperPrefix: "THS"); RunDesignTimeTagHelpersTest(TestTagHelperDescriptors.DefaultPAndInputTagHelperDescriptors);
} }
[Fact] [Fact]
@ -1630,20 +1630,16 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
} }
#endregion #endregion
private void RunRuntimeTagHelpersTest(IEnumerable<TagHelperDescriptor> descriptors, string tagHelperPrefix = null) private void RunRuntimeTagHelpersTest(IEnumerable<TagHelperDescriptor> descriptors)
{ {
// Arrange // Arrange
var engine = RazorEngine.Create( var engine = RazorEngine.Create(builder =>
builder =>
{
builder.Features.Add(new ApiSetsIRTestAdapter());
builder.AddTagHelpers(descriptors);
});
var document = CreateCodeDocument();
if (tagHelperPrefix != null)
{ {
document.SetTagHelperPrefix(tagHelperPrefix); builder.Features.Add(new ApiSetsIRTestAdapter());
} builder.AddTagHelpers(descriptors);
});
var document = CreateCodeDocument();
// Act // Act
engine.Process(document); engine.Process(document);
@ -1653,20 +1649,16 @@ namespace Microsoft.AspNetCore.Razor.Language.IntegrationTests
AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument()); AssertCSharpDocumentMatchesBaseline(document.GetCSharpDocument());
} }
private void RunDesignTimeTagHelpersTest(IEnumerable<TagHelperDescriptor> descriptors, string tagHelperPrefix = null) private void RunDesignTimeTagHelpersTest(IEnumerable<TagHelperDescriptor> descriptors)
{ {
// Arrange // Arrange
var engine = RazorEngine.CreateDesignTime( var engine = RazorEngine.CreateDesignTime(builder =>
builder =>
{
builder.Features.Add(new ApiSetsIRTestAdapter());
builder.AddTagHelpers(descriptors);
});
var document = CreateCodeDocument();
if (tagHelperPrefix != null)
{ {
document.SetTagHelperPrefix(tagHelperPrefix); builder.Features.Add(new ApiSetsIRTestAdapter());
} builder.AddTagHelpers(descriptors);
});
var document = CreateCodeDocument();
// Act // Act
engine.Process(document); engine.Process(document);

View File

@ -877,7 +877,7 @@ namespace Microsoft.AspNetCore.Razor.Language
[Theory] [Theory]
[MemberData(nameof(ProcessTagHelperPrefixData))] [MemberData(nameof(ProcessTagHelperPrefixData))]
public void ProcessTagHelperPrefix_ParsesPrefixFromDirectives_SetsOnCodeDocument( public void ProcessTagHelperPrefix_ParsesPrefixFromDirectives(
object directiveDescriptors, object directiveDescriptors,
string expectedPrefix) string expectedPrefix)
{ {
@ -892,7 +892,6 @@ namespace Microsoft.AspNetCore.Razor.Language
// Assert // Assert
Assert.Empty(errorSink.Errors); Assert.Empty(errorSink.Errors);
Assert.Equal(expectedPrefix, prefix); Assert.Equal(expectedPrefix, prefix);
Assert.Equal(expectedPrefix, document.GetTagHelperPrefix());
} }
public static TheoryData ProcessDirectivesData public static TheoryData ProcessDirectivesData

View File

@ -15,7 +15,7 @@ namespace Microsoft.AspNetCore.Razor.Performance
{ {
public CodeGenerationBenchmark() public CodeGenerationBenchmark()
{ {
var current = new DirectoryInfo(Environment.CurrentDirectory); var current = new DirectoryInfo(AppContext.BaseDirectory);
while (current != null && !File.Exists(Path.Combine(current.FullName, "MSN.cshtml"))) while (current != null && !File.Exists(Path.Combine(current.FullName, "MSN.cshtml")))
{ {
current = current.Parent; current = current.Parent;