Add Tag Helper descriptors to the Tag Helper node
This commit is contained in:
parent
062d7561ae
commit
8649e1a4be
|
|
@ -642,12 +642,19 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
tagName = tagName.Substring(_tagHelperPrefix.Length);
|
tagName = tagName.Substring(_tagHelperPrefix.Length);
|
||||||
}
|
}
|
||||||
|
|
||||||
_builder.Push(new TagHelperIRNode()
|
var tagHelperNode = new TagHelperIRNode()
|
||||||
{
|
{
|
||||||
TagName = tagName,
|
TagName = tagName,
|
||||||
TagMode = tagHelperBlock.TagMode,
|
TagMode = tagHelperBlock.TagMode,
|
||||||
Source = BuildSourceSpanFromNode(block)
|
Source = BuildSourceSpanFromNode(block)
|
||||||
});
|
};
|
||||||
|
|
||||||
|
foreach (var tagHelper in tagHelperBlock.Binding.Descriptors)
|
||||||
|
{
|
||||||
|
tagHelperNode.TagHelpers.Add(tagHelper);
|
||||||
|
}
|
||||||
|
|
||||||
|
_builder.Push(tagHelperNode);
|
||||||
|
|
||||||
_builder.Push(new TagHelperBodyIRNode());
|
_builder.Push(new TagHelperBodyIRNode());
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@
|
||||||
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
||||||
|
|
||||||
using System;
|
using System;
|
||||||
|
using System.Collections.Generic;
|
||||||
|
|
||||||
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||||
{
|
{
|
||||||
|
|
@ -46,6 +47,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||||
|
|
||||||
public TagMode TagMode { get; set; }
|
public TagMode TagMode { get; set; }
|
||||||
|
|
||||||
|
public ICollection<TagHelperDescriptor> TagHelpers { get; } = new List<TagHelperDescriptor>();
|
||||||
|
|
||||||
public override void Accept(RazorIRNodeVisitor visitor)
|
public override void Accept(RazorIRNodeVisitor visitor)
|
||||||
{
|
{
|
||||||
if (visitor == null)
|
if (visitor == null)
|
||||||
|
|
|
||||||
|
|
@ -202,6 +202,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
n => TagHelper(
|
n => TagHelper(
|
||||||
"span",
|
"span",
|
||||||
TagMode.StartTagAndEndTag,
|
TagMode.StartTagAndEndTag,
|
||||||
|
tagHelpers,
|
||||||
n,
|
n,
|
||||||
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
||||||
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
||||||
|
|
@ -245,6 +246,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
n => TagHelper(
|
n => TagHelper(
|
||||||
"span", // Note: this is span not cool:span
|
"span", // Note: this is span not cool:span
|
||||||
TagMode.StartTagAndEndTag,
|
TagMode.StartTagAndEndTag,
|
||||||
|
tagHelpers,
|
||||||
n,
|
n,
|
||||||
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
||||||
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
||||||
|
|
@ -290,6 +292,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
c1 => TagHelper(
|
c1 => TagHelper(
|
||||||
"span",
|
"span",
|
||||||
TagMode.StartTagAndEndTag,
|
TagMode.StartTagAndEndTag,
|
||||||
|
tagHelpers,
|
||||||
c1,
|
c1,
|
||||||
c2 => Assert.IsType<TagHelperBodyIRNode>(c2),
|
c2 => Assert.IsType<TagHelperBodyIRNode>(c2),
|
||||||
c2 => Assert.IsType<CreateTagHelperIRNode>(c2),
|
c2 => Assert.IsType<CreateTagHelperIRNode>(c2),
|
||||||
|
|
@ -338,6 +341,7 @@ namespace Microsoft.AspNetCore.Razor.Language
|
||||||
n => TagHelper(
|
n => TagHelper(
|
||||||
"input",
|
"input",
|
||||||
TagMode.SelfClosing,
|
TagMode.SelfClosing,
|
||||||
|
tagHelpers,
|
||||||
n,
|
n,
|
||||||
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
c => Assert.IsType<TagHelperBodyIRNode>(c),
|
||||||
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
c => Assert.IsType<CreateTagHelperIRNode>(c),
|
||||||
|
|
|
||||||
|
|
@ -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);
|
var tagHelperNode = Assert.IsType<TagHelperIRNode>(node);
|
||||||
|
|
||||||
|
|
@ -350,6 +350,8 @@ namespace Microsoft.AspNetCore.Razor.Language.Intermediate
|
||||||
{
|
{
|
||||||
Assert.Equal(tagName, tagHelperNode.TagName);
|
Assert.Equal(tagName, tagHelperNode.TagName);
|
||||||
Assert.Equal(tagMode, tagHelperNode.TagMode);
|
Assert.Equal(tagMode, tagHelperNode.TagMode);
|
||||||
|
|
||||||
|
Assert.Equal(tagHelpers, tagHelperNode.TagHelpers);
|
||||||
}
|
}
|
||||||
catch (XunitException e)
|
catch (XunitException e)
|
||||||
{
|
{
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue