Add Tag Helper descriptors to the Tag Helper node

This commit is contained in:
Ryan Nowak 2017-06-20 22:38:13 -07:00
parent 062d7561ae
commit 8649e1a4be
4 changed files with 19 additions and 3 deletions

View File

@ -642,12 +642,19 @@ namespace Microsoft.AspNetCore.Razor.Language
tagName = tagName.Substring(_tagHelperPrefix.Length);
}
_builder.Push(new TagHelperIRNode()
var tagHelperNode = new TagHelperIRNode()
{
TagName = tagName,
TagMode = tagHelperBlock.TagMode,
Source = BuildSourceSpanFromNode(block)
});
};
foreach (var tagHelper in tagHelperBlock.Binding.Descriptors)
{
tagHelperNode.TagHelpers.Add(tagHelper);
}
_builder.Push(tagHelperNode);
_builder.Push(new TagHelperBodyIRNode());

View File

@ -2,6 +2,7 @@
// 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.Intermediate
{
@ -46,6 +47,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
public TagMode TagMode { get; set; }
public ICollection<TagHelperDescriptor> TagHelpers { get; } = new List<TagHelperDescriptor>();
public override void Accept(RazorIRNodeVisitor visitor)
{
if (visitor == null)

View File

@ -202,6 +202,7 @@ namespace Microsoft.AspNetCore.Razor.Language
n => TagHelper(
"span",
TagMode.StartTagAndEndTag,
tagHelpers,
n,
c => Assert.IsType<TagHelperBodyIRNode>(c),
c => Assert.IsType<CreateTagHelperIRNode>(c),
@ -245,6 +246,7 @@ namespace Microsoft.AspNetCore.Razor.Language
n => TagHelper(
"span", // Note: this is span not cool:span
TagMode.StartTagAndEndTag,
tagHelpers,
n,
c => Assert.IsType<TagHelperBodyIRNode>(c),
c => Assert.IsType<CreateTagHelperIRNode>(c),
@ -290,6 +292,7 @@ namespace Microsoft.AspNetCore.Razor.Language
c1 => TagHelper(
"span",
TagMode.StartTagAndEndTag,
tagHelpers,
c1,
c2 => Assert.IsType<TagHelperBodyIRNode>(c2),
c2 => Assert.IsType<CreateTagHelperIRNode>(c2),
@ -338,6 +341,7 @@ namespace Microsoft.AspNetCore.Razor.Language
n => TagHelper(
"input",
TagMode.SelfClosing,
tagHelpers,
n,
c => Assert.IsType<TagHelperBodyIRNode>(c),
c => Assert.IsType<CreateTagHelperIRNode>(c),

View File

@ -342,7 +342,7 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
}
}
internal static void TagHelper(string tagName, TagMode tagMode, RazorIRNode node, params Action<RazorIRNode>[] childValidators)
internal static void TagHelper(string tagName, TagMode tagMode, IEnumerable<TagHelperDescriptor> tagHelpers, RazorIRNode node, params Action<RazorIRNode>[] childValidators)
{
var tagHelperNode = Assert.IsType<TagHelperIRNode>(node);
@ -350,6 +350,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
{
Assert.Equal(tagName, tagHelperNode.TagName);
Assert.Equal(tagMode, tagHelperNode.TagMode);
Assert.Equal(tagHelpers, tagHelperNode.TagHelpers);
}
catch (XunitException e)
{