Remove ContentBehavior.

- Removed all tests and instances of ContentBehavior in preparation for moving to a non-ContentBehavior based design.
- Removed ContentBehavior specific CodeGeneration.

#221
This commit is contained in:
N. Taylor Mullen 2014-11-26 16:41:24 -08:00 committed by NTaylorMullen
parent de4cafa8cd
commit c38761f504
16 changed files with 49 additions and 438 deletions

View File

@ -1,31 +0,0 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using Microsoft.AspNet.Razor.TagHelpers;
namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
/// <summary>
/// Used to override <see cref="ITagHelper"/>'s behavior when its
/// <see cref="ITagHelper.ProcessAsync"/> is invoked.
/// </summary>
[AttributeUsage(AttributeTargets.Class, AllowMultiple = false, Inherited = false)]
public sealed class ContentBehaviorAttribute : Attribute
{
/// <summary>
/// Instantiates a new instance of the <see cref="ContentBehaviorAttribute"/> class.
/// </summary>
/// <param name="contentBehavior">The <see cref="Razor.TagHelpers.ContentBehavior"/> for the
/// <see cref="ITagHelper"/>.</param>
public ContentBehaviorAttribute(ContentBehavior contentBehavior)
{
ContentBehavior = contentBehavior;
}
/// <summary>
/// <see cref="Razor.TagHelpers.ContentBehavior"/> for the <see cref="ITagHelper"/>.
/// </summary>
public ContentBehavior ContentBehavior { get; private set; }
}
}

View File

@ -38,14 +38,12 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var tagNames = GetTagNames(type);
var typeName = type.FullName;
var attributeDescriptors = GetAttributeDescriptors(type);
var contentBehavior = GetContentBehavior(type);
var assemblyName = type.GetTypeInfo().Assembly.GetName().Name;
return tagNames.Select(tagName =>
new TagHelperDescriptor(tagName,
typeName,
assemblyName,
contentBehavior,
attributeDescriptors));
}
@ -89,16 +87,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
return new TagHelperAttributeDescriptor(attributeName, property.Name, property.PropertyType.FullName);
}
private static ContentBehavior GetContentBehavior(Type type)
{
var typeInfo = type.GetTypeInfo();
var contentBehaviorAttribute = typeInfo.GetCustomAttribute<ContentBehaviorAttribute>(inherit: false);
return contentBehaviorAttribute != null ?
contentBehaviorAttribute.ContentBehavior :
ContentBehavior.None;
}
private static bool IsValidProperty(PropertyInfo property)
{
return property.GetMethod != null &&

View File

@ -58,13 +58,6 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp
{
var tagHelperDescriptors = chunk.Descriptors;
// Find the first content behavior that doesn't have a content behavior of None.
// The resolver restricts content behavior collisions so the first one that's not None will be
// the content behavior we need to abide by. None can work in unison with other ContentBehaviors.
var contentBehavior = tagHelperDescriptors.Select(descriptor => descriptor.ContentBehavior)
.FirstOrDefault(
behavior => behavior != ContentBehavior.None);
RenderBeginTagHelperScope(chunk.TagName);
RenderTagHelpersCreation(chunk);
@ -78,42 +71,11 @@ namespace Microsoft.AspNet.Razor.Generator.Compiler.CSharp
RenderUnboundHTMLAttributes(unboundHTMLAttributes);
switch (contentBehavior)
{
case ContentBehavior.None:
RenderRunTagHelpers(bufferedBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
RenderTagHelperBody(chunk.Children, bufferBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
break;
case ContentBehavior.Append:
RenderRunTagHelpers(bufferedBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
RenderTagHelperBody(chunk.Children, bufferBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateContentMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
break;
case ContentBehavior.Prepend:
RenderRunTagHelpers(bufferedBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateContentMethodName);
RenderTagHelperBody(chunk.Children, bufferBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
break;
case ContentBehavior.Replace:
RenderRunTagHelpers(bufferedBody: false);
RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateContentMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
break;
case ContentBehavior.Modify:
RenderTagHelperBody(chunk.Children, bufferBody: true);
RenderRunTagHelpers(bufferedBody: true);
RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateContentMethodName);
RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
break;
}
// TODO: Modify code generation to handle all content modes
//RenderRunTagHelpers(bufferedBody: false);
//RenderTagOutput(_tagHelperContext.OutputGenerateStartTagMethodName);
//RenderTagHelperBody(chunk.Children, bufferBody: false);
//RenderTagOutput(_tagHelperContext.OutputGenerateEndTagMethodName);
RenderEndTagHelpersScope();
}

View File

@ -1,43 +0,0 @@
// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
namespace Microsoft.AspNet.Razor.TagHelpers
{
/// <summary>
/// Defines how a tag helper will utilize its inner HTML.
/// </summary>
public enum ContentBehavior
{
/// <summary>
/// Indicates that a tag helper will not modify its content in any way. This is the default
/// <see cref="ContentBehavior"/>.
/// </summary>
/// <remarks>Children of the current tag helper will execute after the current tag helper.</remarks>
None,
/// <summary>
/// Indicates the tag helper's content should be appended to what its children generate.
/// </summary>
/// <remarks>Children of the current tag helper will execute before the current tag helper.</remarks>
Append,
/// <summary>
/// Indicates that the tag helper will modify its HTML content. Therefore this <see cref="ContentBehavior"/>
/// enables the tag helper to examine the content its children generate.
/// </summary>
/// <remarks>Children of the current tag helper will execute before the current tag helper.</remarks>
Modify,
/// <summary>
/// Indicates the tag helper's content should be prepended to what its children generate.
/// </summary>
/// <remarks>Children of the current tag helper will execute after the current tag helper.</remarks>
Prepend,
/// <summary>
/// Indicates the tag helper's content should replace the HTML its children generate.
/// </summary>
/// <remarks>Children of the current tag helper will not execute.</remarks>
Replace,
}
}

View File

@ -16,12 +16,10 @@ namespace Microsoft.AspNet.Razor.TagHelpers
/// </summary>
internal TagHelperDescriptor([NotNull] string tagName,
[NotNull] string typeName,
[NotNull] string assemblyName,
ContentBehavior contentBehavior)
[NotNull] string assemblyName)
: this(tagName,
typeName,
assemblyName,
contentBehavior,
Enumerable.Empty<TagHelperAttributeDescriptor>())
{
}
@ -34,21 +32,17 @@ namespace Microsoft.AspNet.Razor.TagHelpers
/// <see cref="TagHelperDescriptor"/> which applies to every HTML tag.</param>
/// <param name="typeName">The full name of the tag helper class.</param>
/// <param name="assemblyName">The name of the assembly containing the tag helper class.</param>
/// <param name="contentBehavior">The <see cref="TagHelpers.ContentBehavior"/>
/// of the tag helper.</param>
/// <param name="attributes">
/// The <see cref="TagHelperAttributeDescriptor"/>s to request from the HTML tag.
/// </param>
public TagHelperDescriptor([NotNull] string tagName,
[NotNull] string typeName,
[NotNull] string assemblyName,
ContentBehavior contentBehavior,
[NotNull] IEnumerable<TagHelperAttributeDescriptor> attributes)
{
TagName = tagName;
TypeName = typeName;
AssemblyName = assemblyName;
ContentBehavior = contentBehavior;
Attributes = new List<TagHelperAttributeDescriptor>(attributes);
}
@ -67,11 +61,6 @@ namespace Microsoft.AspNet.Razor.TagHelpers
/// </summary>
public string AssemblyName { get; private set; }
/// <summary>
/// The <see cref="TagHelpers.ContentBehavior"/> of the tag helper.
/// </summary>
public ContentBehavior ContentBehavior { get; private set; }
/// <summary>
/// The list of attributes the tag helper expects.
/// </summary>

View File

@ -29,15 +29,13 @@ namespace Microsoft.AspNet.Razor.TagHelpers
/// <c>false</c> otherwise.</returns>
/// <remarks>
/// Determines equality based on <see cref="TagHelperDescriptor.TypeName"/>,
/// <see cref="TagHelperDescriptor.AssemblyName"/>, <see cref="TagHelperDescriptor.TagName"/> and
/// <see cref="TagHelperDescriptor.ContentBehavior"/>.
/// <see cref="TagHelperDescriptor.AssemblyName"/> and <see cref="TagHelperDescriptor.TagName"/>.
/// </remarks>
public bool Equals(TagHelperDescriptor descriptorX, TagHelperDescriptor descriptorY)
{
return string.Equals(descriptorX.TypeName, descriptorY.TypeName, StringComparison.Ordinal) &&
string.Equals(descriptorX.TagName, descriptorY.TagName, StringComparison.OrdinalIgnoreCase) &&
string.Equals(descriptorX.AssemblyName, descriptorY.AssemblyName, StringComparison.Ordinal) &&
descriptorX.ContentBehavior == descriptorY.ContentBehavior;
string.Equals(descriptorX.AssemblyName, descriptorY.AssemblyName, StringComparison.Ordinal);
}
/// <summary>
@ -51,7 +49,6 @@ namespace Microsoft.AspNet.Razor.TagHelpers
.Add(descriptor.TagName, StringComparer.OrdinalIgnoreCase)
.Add(descriptor.TypeName, StringComparer.Ordinal)
.Add(descriptor.AssemblyName, StringComparer.Ordinal)
.Add(descriptor.ContentBehavior)
.CombinedHash;
}
}

View File

@ -62,7 +62,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"overridden-attribute",
typeof(OverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("SomethingElse", validProperty1),
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
@ -89,7 +88,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"inherited-overridden-attribute",
typeof(InheritedOverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("valid-attribute1",
validProperty1),
@ -117,7 +115,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"inherited-not-overridden-attribute",
typeof(InheritedNotOverriddenAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("SomethingElse", validProperty1),
new TagHelperAttributeDescriptor("Something-Else", validProperty2)
@ -137,7 +134,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// Arrange
var objectAssemblyName = typeof(object).GetTypeInfo().Assembly.GetName().Name;
var expectedDescriptor =
new TagHelperDescriptor("object", "System.Object", objectAssemblyName, ContentBehavior.None);
new TagHelperDescriptor("object", "System.Object", objectAssemblyName);
// Act
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(typeof(object));
@ -157,7 +154,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"inherited-single-attribute",
typeof(InheritedSingleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("int-attribute", intProperty)
});
@ -179,7 +175,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"single-attribute",
typeof(SingleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("int-attribute", intProperty)
});
@ -202,7 +197,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"missing-accessor",
typeof(MissingAccessorTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("valid-attribute", validProperty)
});
@ -225,7 +219,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"private-accessor",
typeof(PrivateAccessorTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor(
"valid-attribute", validProperty)
@ -239,43 +232,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
Assert.Equal(expectedDescriptor, descriptor, CompleteTagHelperDescriptorComparer.Default);
}
[Fact]
public void CreateDescriptor_ResolvesCustomContentBehavior()
{
// Arrange
var expectedDescriptor = new TagHelperDescriptor(
"custom-content-behavior",
typeof(CustomContentBehaviorTagHelper).FullName,
AssemblyName,
ContentBehavior.Append);
// Act
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(typeof(CustomContentBehaviorTagHelper));
// Assert
var descriptor = Assert.Single(descriptors);
Assert.Equal(expectedDescriptor, descriptor, CompleteTagHelperDescriptorComparer.Default);
}
[Fact]
public void CreateDescriptor_DoesNotResolveInheritedCustomContentBehavior()
{
// Arrange
var expectedDescriptor = new TagHelperDescriptor(
"inherited-custom-content-behavior",
typeof(InheritedCustomContentBehaviorTagHelper).FullName,
AssemblyName,
ContentBehavior.None);
// Act
var descriptors = TagHelperDescriptorFactory.CreateDescriptors(
typeof(InheritedCustomContentBehaviorTagHelper));
// Assert
var descriptor = Assert.Single(descriptors);
Assert.Equal(expectedDescriptor, descriptor, CompleteTagHelperDescriptorComparer.Default);
}
[Fact]
public void CreateDescriptor_ResolvesMultipleTagHelperDescriptorsFromSingleType()
{
@ -286,7 +242,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"div",
typeof(MultiTagTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("valid-attribute", validProp)
}),
@ -294,7 +249,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"p",
typeof(MultiTagTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("valid-attribute", validProp)
})
@ -316,7 +270,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
"inherited-multi-tag",
typeof(InheritedMultiTagTagHelper).FullName,
AssemblyName,
ContentBehavior.None,
new[] {
new TagHelperAttributeDescriptor("valid-attribute", validProp)
});
@ -337,13 +290,11 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
new TagHelperDescriptor(
"p",
typeof(DuplicateTagNameTagHelper).FullName,
AssemblyName,
ContentBehavior.None),
AssemblyName),
new TagHelperDescriptor(
"div",
typeof(DuplicateTagNameTagHelper).FullName,
AssemblyName,
ContentBehavior.None)
AssemblyName)
};
// Act
@ -360,8 +311,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var expectedDescriptors = new[] {
new TagHelperDescriptor("data-condition",
typeof(OverrideNameTagHelper).FullName,
AssemblyName,
ContentBehavior.None),
AssemblyName),
};
// Act
@ -379,18 +329,15 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
new TagHelperDescriptor(
"span",
typeof(MultipleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None),
AssemblyName),
new TagHelperDescriptor(
"p",
typeof(MultipleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None),
AssemblyName),
new TagHelperDescriptor(
"div",
typeof(MultipleAttributeTagHelper).FullName,
AssemblyName,
ContentBehavior.None)
AssemblyName)
};
// Act
@ -400,15 +347,6 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
Assert.Equal(expectedDescriptors, descriptors, CompleteTagHelperDescriptorComparer.Default);
}
[ContentBehavior(ContentBehavior.Append)]
private class CustomContentBehaviorTagHelper
{
}
private class InheritedCustomContentBehaviorTagHelper : CustomContentBehaviorTagHelper
{
}
[HtmlElementName("p", "div")]
private class MultiTagTagHelper
{

View File

@ -27,8 +27,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
return new TagHelperDescriptor("valid_plain",
Valid_PlainTagHelperType.FullName,
AssemblyName,
ContentBehavior.None);
AssemblyName);
}
}
@ -38,8 +37,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
{
return new TagHelperDescriptor("valid_inherited",
Valid_InheritedTagHelperType.FullName,
AssemblyName,
ContentBehavior.None);
AssemblyName);
}
}
@ -75,8 +73,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var stringTagHelperDescriptor =
new TagHelperDescriptor("string",
"System.String",
assemblyB,
ContentBehavior.None);
assemblyB);
return new TheoryData<Dictionary<string, IEnumerable<Type>>, // descriptorAssemblyLookups
IEnumerable<TagHelperDirectiveDescriptor>, // directiveDescriptors
@ -230,8 +227,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
var stringTagHelperDescriptor =
new TagHelperDescriptor("string",
"System.String",
assemblyB,
ContentBehavior.None);
assemblyB);
return new TheoryData<Dictionary<string, IEnumerable<Type>>, // descriptorAssemblyLookups
IEnumerable<TagHelperDirectiveDescriptor>> // directiveDescriptors

View File

@ -26,21 +26,18 @@ namespace Microsoft.AspNet.Razor.Test.Generator
new TagHelperDescriptor("p",
"PTagHelper",
"SomeAssembly",
ContentBehavior.None,
new [] {
new TagHelperAttributeDescriptor("age", pAgePropertyInfo)
}),
new TagHelperDescriptor("input",
"InputTagHelper",
"SomeAssembly",
ContentBehavior.None,
new TagHelperAttributeDescriptor[] {
new TagHelperAttributeDescriptor("type", inputTypePropertyInfo)
}),
new TagHelperDescriptor("input",
"InputTagHelper2",
"SomeAssembly",
ContentBehavior.None,
new TagHelperAttributeDescriptor[] {
new TagHelperAttributeDescriptor("type", inputTypePropertyInfo),
new TagHelperAttributeDescriptor("checked", checkedPropertyInfo)
@ -49,21 +46,6 @@ namespace Microsoft.AspNet.Razor.Test.Generator
}
}
private static IEnumerable<TagHelperDescriptor> ContentBehaviorTagHelperDescriptors
{
get
{
return new[]
{
new TagHelperDescriptor("modify", "ModifyTagHelper", "SomeAssembly", ContentBehavior.Modify),
new TagHelperDescriptor("none", "NoneTagHelper", "SomeAssembly", ContentBehavior.None),
new TagHelperDescriptor("append", "AppendTagHelper", "SomeAssembly", ContentBehavior.Append),
new TagHelperDescriptor("prepend", "PrependTagHelper", "SomeAssembly", ContentBehavior.Prepend),
new TagHelperDescriptor("replace", "ReplaceTagHelper", "SomeAssembly", ContentBehavior.Replace)
};
}
}
public static TheoryData TagHelperDescriptorFlowTestData
{
get
@ -109,13 +91,6 @@ namespace Microsoft.AspNet.Razor.Test.Generator
Enumerable.Empty<TagHelperDescriptor>(),
false
},
{
"ContentBehaviorTagHelpers",
"ContentBehaviorTagHelpers",
ContentBehaviorTagHelperDescriptors,
ContentBehaviorTagHelperDescriptors,
false
},
{
"ComplexTagHelpers",
"ComplexTagHelpers",
@ -144,7 +119,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
bool designTimeMode)
{
RunTagHelperTest(
testName,
testName,
baseLineName: baselineName,
tagHelperDescriptors: tagHelperDescriptors,
onResults: (results) =>
@ -203,20 +178,6 @@ namespace Microsoft.AspNet.Razor.Test.Generator
contentLength: 4)
}
},
{
"ContentBehaviorTagHelpers",
"ContentBehaviorTagHelpers.DesignTime",
ContentBehaviorTagHelperDescriptors,
new List<LineMapping>
{
BuildLineMapping(documentAbsoluteIndex: 14,
documentLineIndex: 0,
generatedAbsoluteIndex: 495,
generatedLineIndex: 15,
characterOffsetIndex: 14,
contentLength: 11)
}
},
{
"ComplexTagHelpers",
"ComplexTagHelpers.DesignTime",
@ -283,7 +244,6 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{ "SingleTagHelper", PAndInputTagHelperDescriptors },
{ "BasicTagHelpers", PAndInputTagHelperDescriptors },
{ "BasicTagHelpers.RemoveTagHelper", PAndInputTagHelperDescriptors },
{ "ContentBehaviorTagHelpers", ContentBehaviorTagHelperDescriptors },
{ "ComplexTagHelpers", PAndInputTagHelperDescriptors },
};
}
@ -339,7 +299,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
RunTagHelperTest("AddTagHelperDirective",
designTimeMode: true,
tagHelperDescriptors: new[] {
new TagHelperDescriptor("p", "pTagHelper", "SomeAssembly", ContentBehavior.None)
new TagHelperDescriptor("p", "pTagHelper", "SomeAssembly")
});
}
@ -355,12 +315,11 @@ namespace Microsoft.AspNet.Razor.Test.Generator
new TagHelperDescriptor("MyTagHelper",
"MyTagHelper",
"SomeAssembly",
ContentBehavior.None,
new [] {
new TagHelperAttributeDescriptor("BoundProperty",
propertyInfo)
}),
new TagHelperDescriptor("NestedTagHelper", "NestedTagHelper", "SomeAssembly", ContentBehavior.Modify)
new TagHelperDescriptor("NestedTagHelper", "NestedTagHelper", "SomeAssembly")
};
// Act & Assert

View File

@ -1,5 +1,4 @@
using System;
using System.Collections.Generic;
using System.Collections.Generic;
using Microsoft.AspNet.Razor.Generator;
using Microsoft.AspNet.Razor.Generator.Compiler;
using Microsoft.AspNet.Razor.Generator.Compiler.CSharp;
@ -16,7 +15,7 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var chunk = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
var codeRenderer = CreateCodeRenderer();
@ -32,8 +31,8 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var chunk = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None),
new TagHelperDescriptor("div", "Div2TagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName"),
new TagHelperDescriptor("div", "Div2TagHelper", "FakeAssemblyName")
});
var codeRenderer = CreateCodeRenderer();
@ -49,10 +48,10 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var chunk1 = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
var chunk2 = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
var codeRenderer = CreateCodeRenderer();
@ -69,10 +68,10 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var parentChunk = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
var childChunk = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
parentChunk.Children.Add(childChunk);
var codeRenderer = CreateCodeRenderer();
@ -89,10 +88,10 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var divChunk = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName")
});
var spanChunk = CreateTagHelperChunk("span", new[] {
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName")
});
var codeRenderer = CreateCodeRenderer();
@ -109,15 +108,15 @@ namespace Microsoft.AspNet.Razor.Test.Generator
{
// Arrange
var chunk1 = CreateTagHelperChunk("div", new[] {
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName", ContentBehavior.None),
new TagHelperDescriptor("div", "Div2TagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("div", "DivTagHelper", "FakeAssemblyName"),
new TagHelperDescriptor("div", "Div2TagHelper", "FakeAssemblyName")
});
var chunk2 = CreateTagHelperChunk("span", new[] {
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName")
});
var chunk3 = CreateTagHelperChunk("span", new[] {
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName", ContentBehavior.None),
new TagHelperDescriptor("span", "Span2TagHelper", "FakeAssemblyName", ContentBehavior.None)
new TagHelperDescriptor("span", "SpanTagHelper", "FakeAssemblyName"),
new TagHelperDescriptor("span", "Span2TagHelper", "FakeAssemblyName")
});
var codeRenderer = CreateCodeRenderer();

View File

@ -23,18 +23,16 @@ namespace Microsoft.AspNet.Razor.Test.Generator
var checkedPropertyInfo = typeof(TestType).GetProperty("Checked");
var tagHelperDescriptors = new TagHelperDescriptor[]
{
new TagHelperDescriptor("p", "PTagHelper", "SomeAssembly", ContentBehavior.None),
new TagHelperDescriptor("p", "PTagHelper", "SomeAssembly"),
new TagHelperDescriptor("input",
"InputTagHelper",
"SomeAssembly",
ContentBehavior.None,
new TagHelperAttributeDescriptor[] {
new TagHelperAttributeDescriptor("type", inputTypePropertyInfo)
}),
new TagHelperDescriptor("input",
"InputTagHelper2",
"SomeAssembly",
ContentBehavior.None,
new TagHelperAttributeDescriptor[] {
new TagHelperAttributeDescriptor("type", inputTypePropertyInfo),
new TagHelperAttributeDescriptor("checked", checkedPropertyInfo)

View File

@ -13,8 +13,8 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
public void TagHelperDescriptorProvider_GetTagHelpersReturnsNothingForUnregisteredTags()
{
// Arrange
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly", ContentBehavior.None);
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly", ContentBehavior.None);
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly");
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly");
var descriptors = new TagHelperDescriptor[] { divDescriptor, spanDescriptor };
var provider = new TagHelperDescriptorProvider(descriptors);
@ -29,9 +29,9 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
public void TagHelperDescriptorProvider_GetTagHelpersDoesNotReturnNonCatchAllTagsForCatchAll()
{
// Arrange
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly", ContentBehavior.None);
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly", ContentBehavior.None);
var catchAllDescriptor = new TagHelperDescriptor("*", "foo3", "SomeAssembly", ContentBehavior.None);
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly");
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly");
var catchAllDescriptor = new TagHelperDescriptor("*", "foo3", "SomeAssembly");
var descriptors = new TagHelperDescriptor[] { divDescriptor, spanDescriptor, catchAllDescriptor };
var provider = new TagHelperDescriptorProvider(descriptors);
@ -47,9 +47,9 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
public void TagHelperDescriptorProvider_GetTagHelpersReturnsCatchAllsWithEveryTagName()
{
// Arrange
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly", ContentBehavior.None);
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly", ContentBehavior.None);
var catchAllDescriptor = new TagHelperDescriptor("*", "foo3", "SomeAssembly", ContentBehavior.None);
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly");
var spanDescriptor = new TagHelperDescriptor("span", "foo2", "SomeAssembly");
var catchAllDescriptor = new TagHelperDescriptor("*", "foo3", "SomeAssembly");
var descriptors = new TagHelperDescriptor[] { divDescriptor, spanDescriptor, catchAllDescriptor };
var provider = new TagHelperDescriptorProvider(descriptors);
@ -73,7 +73,7 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
public void TagHelperDescriptorProvider_DuplicateDescriptorsAreNotPartOfTagHelperDescriptorPool()
{
// Arrange
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly", ContentBehavior.None);
var divDescriptor = new TagHelperDescriptor("div", "foo1", "SomeAssembly");
var descriptors = new TagHelperDescriptor[] { divDescriptor, divDescriptor };
var provider = new TagHelperDescriptorProvider(descriptors);

View File

@ -518,7 +518,7 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
// Arrange
var descriptors = new TagHelperDescriptor[]
{
new TagHelperDescriptor("person", "PersonTagHelper", "personAssembly", ContentBehavior.None,
new TagHelperDescriptor("person", "PersonTagHelper", "personAssembly",
attributes: new[]
{
new TagHelperAttributeDescriptor("age", "Age", typeof(int).FullName),
@ -1714,7 +1714,7 @@ namespace Microsoft.AspNet.Razor.Test.TagHelpers
foreach (var tagName in tagNames)
{
descriptors.Add(
new TagHelperDescriptor(tagName, tagName + "taghelper", "SomeAssembly", ContentBehavior.None));
new TagHelperDescriptor(tagName, tagName + "taghelper", "SomeAssembly"));
}
return new TagHelperDescriptorProvider(descriptors);

View File

@ -1,45 +0,0 @@
namespace TestOutput
{
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using System;
using System.Threading.Tasks;
public class ContentBehaviorTagHelpers
{
private static object @__o;
private void @__RazorDesignTimeHelpers__()
{
#pragma warning disable 219
string __tagHelperDirectiveSyntaxHelper = null;
__tagHelperDirectiveSyntaxHelper =
#line 1 "ContentBehaviorTagHelpers.cshtml"
"something"
#line default
#line hidden
;
#pragma warning restore 219
}
#line hidden
private ModifyTagHelper __ModifyTagHelper = null;
private NoneTagHelper __NoneTagHelper = null;
private AppendTagHelper __AppendTagHelper = null;
private PrependTagHelper __PrependTagHelper = null;
private ReplaceTagHelper __ReplaceTagHelper = null;
#line hidden
public ContentBehaviorTagHelpers()
{
}
#pragma warning disable 1998
public override async Task ExecuteAsync()
{
__ModifyTagHelper = CreateTagHelper<ModifyTagHelper>();
__NoneTagHelper = CreateTagHelper<NoneTagHelper>();
__AppendTagHelper = CreateTagHelper<AppendTagHelper>();
__PrependTagHelper = CreateTagHelper<PrependTagHelper>();
__ReplaceTagHelper = CreateTagHelper<ReplaceTagHelper>();
}
#pragma warning restore 1998
}
}

View File

@ -1,85 +0,0 @@
#pragma checksum "ContentBehaviorTagHelpers.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "5aeeb0a2b5283b353efaff2cd2fb0c739020b899"
namespace TestOutput
{
using Microsoft.AspNet.Razor.Runtime.TagHelpers;
using System;
using System.Threading.Tasks;
public class ContentBehaviorTagHelpers
{
#line hidden
#pragma warning disable 0414
private System.IO.TextWriter __tagHelperStringValueBuffer = null;
#pragma warning restore 0414
private TagHelperExecutionContext __tagHelperExecutionContext = null;
private TagHelperRunner __tagHelperRunner = new TagHelperRunner();
private TagHelperScopeManager __tagHelperScopeManager = new TagHelperScopeManager();
private ModifyTagHelper __ModifyTagHelper = null;
private NoneTagHelper __NoneTagHelper = null;
private AppendTagHelper __AppendTagHelper = null;
private PrependTagHelper __PrependTagHelper = null;
private ReplaceTagHelper __ReplaceTagHelper = null;
#line hidden
public ContentBehaviorTagHelpers()
{
}
#pragma warning disable 1998
public override async Task ExecuteAsync()
{
Instrumentation.BeginContext(27, 2, true);
WriteLiteral("\r\n");
Instrumentation.EndContext();
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("modify", "test");
__ModifyTagHelper = CreateTagHelper<ModifyTagHelper>();
__tagHelperExecutionContext.Add(__ModifyTagHelper);
StartWritingScope();
WriteLiteral("\r\n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("none", "test");
__NoneTagHelper = CreateTagHelper<NoneTagHelper>();
__tagHelperExecutionContext.Add(__NoneTagHelper);
__tagHelperExecutionContext.Output = __tagHelperRunner.RunAsync(__tagHelperExecutionContext).Result;
WriteLiteral(__tagHelperExecutionContext.Output.GenerateStartTag());
WriteLiteral("\r\n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("append", "test");
__AppendTagHelper = CreateTagHelper<AppendTagHelper>();
__tagHelperExecutionContext.Add(__AppendTagHelper);
__tagHelperExecutionContext.Output = __tagHelperRunner.RunAsync(__tagHelperExecutionContext).Result;
WriteLiteral(__tagHelperExecutionContext.Output.GenerateStartTag());
WriteLiteral("\r\n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("prepend", "test");
__PrependTagHelper = CreateTagHelper<PrependTagHelper>();
__tagHelperExecutionContext.Add(__PrependTagHelper);
__tagHelperExecutionContext.Output = __tagHelperRunner.RunAsync(__tagHelperExecutionContext).Result;
WriteLiteral(__tagHelperExecutionContext.Output.GenerateStartTag());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateContent());
WriteLiteral("\r\n ");
__tagHelperExecutionContext = __tagHelperScopeManager.Begin("replace", "test");
__ReplaceTagHelper = CreateTagHelper<ReplaceTagHelper>();
__tagHelperExecutionContext.Add(__ReplaceTagHelper);
__tagHelperExecutionContext.Output = __tagHelperRunner.RunAsync(__tagHelperExecutionContext).Result;
WriteLiteral(__tagHelperExecutionContext.Output.GenerateStartTag());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateContent());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateEndTag());
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("\r\n ");
WriteLiteral(__tagHelperExecutionContext.Output.GenerateEndTag());
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("\r\n ");
WriteLiteral(__tagHelperExecutionContext.Output.GenerateContent());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateEndTag());
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("\r\n ");
WriteLiteral(__tagHelperExecutionContext.Output.GenerateEndTag());
__tagHelperExecutionContext = __tagHelperScopeManager.End();
WriteLiteral("\r\n");
__tagHelperStringValueBuffer = EndWritingScope();
__tagHelperExecutionContext.Output = __tagHelperRunner.RunAsync(__tagHelperExecutionContext, __tagHelperStringValueBuffer).Result;
WriteLiteral(__tagHelperExecutionContext.Output.GenerateStartTag());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateContent());
WriteLiteral(__tagHelperExecutionContext.Output.GenerateEndTag());
__tagHelperExecutionContext = __tagHelperScopeManager.End();
}
#pragma warning restore 1998
}
}

View File

@ -1,11 +0,0 @@
@addtaghelper "something"
<modify>
<none>
<append>
<prepend>
<replace>This should not be in the output</replace>
</prepend>
</append>
</none>
</modify>