Change '?' in add and remove TagHelper to mean 1 character.

- Modified tests to account for new behavior of the '?' character in @addtaghelper and @removetaghelper.

#297
This commit is contained in:
N. Taylor Mullen 2015-02-16 14:55:15 -08:00
parent 1dd54e4331
commit f53b6bb0e3
7 changed files with 84 additions and 10 deletions

View File

@ -129,7 +129,8 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
// We surround the escaped with ^ and $ in order ot ensure a regex match matches the entire // We surround the escaped with ^ and $ in order ot ensure a regex match matches the entire
// string. We also replace any '*' or '?' characters with regex to match appropriate content. // string. We also replace any '*' or '?' characters with regex to match appropriate content.
var pattern = "^" + escaped.Replace(@"\?", ".?").Replace(@"\*", ".*?") + "$"; // '*' matches 0 or more characters lazily and '?' matches 1 character.
var pattern = "^" + escaped.Replace(@"\?", ".").Replace(@"\*", ".*?") + "$";
var regex = new Regex(pattern, RegexOptions.Singleline); var regex = new Regex(pattern, RegexOptions.Singleline);
return regex.IsMatch(descriptor.TypeName); return regex.IsMatch(descriptor.TypeName);

View File

@ -297,7 +297,7 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
new [] new []
{ {
new TagHelperDirectiveDescriptor( new TagHelperDirectiveDescriptor(
"?*?" + Valid_PlainTagHelperType.FullName + "?*?, " + assemblyA, "*" + Valid_PlainTagHelperType.FullName + "*, " + assemblyA,
TagHelperDirectiveType.AddTagHelper), TagHelperDirectiveType.AddTagHelper),
}, },
new [] { Valid_PlainTagHelperDescriptor } new [] { Valid_PlainTagHelperDescriptor }
@ -368,7 +368,20 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
new [] new []
{ {
new TagHelperDirectiveDescriptor("?*?, " + assemblyA, TagHelperDirectiveType.AddTagHelper), new TagHelperDirectiveDescriptor("?*?, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor("*?rin?g?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper) new TagHelperDirectiveDescriptor("*?r?n?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
},
new [] { Valid_PlainTagHelperDescriptor }
},
{
new Dictionary<string, IEnumerable<Type>>
{
{ assemblyA, new [] { Valid_PlainTagHelperType } },
{ assemblyB, new [] { stringType } }
},
new []
{
new TagHelperDirectiveDescriptor("?*TagHelper, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor("?" + stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.AddTagHelper)
}, },
new [] { Valid_PlainTagHelperDescriptor } new [] { Valid_PlainTagHelperDescriptor }
}, },
@ -400,6 +413,54 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
}, },
new [] { stringTagHelperDescriptor } new [] { stringTagHelperDescriptor }
}, },
{
new Dictionary<string, IEnumerable<Type>>
{
{ assemblyA, new [] { Valid_PlainTagHelperType, Valid_InheritedTagHelperType } },
{ assemblyB, new [] { stringType } }
},
new []
{
new TagHelperDirectiveDescriptor(
"*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor(
"*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor(
"?Microsoft*, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
new TagHelperDirectiveDescriptor(
"?" + stringType.FullName + ", " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
},
new []
{
Valid_InheritedTagHelperDescriptor,
Valid_PlainTagHelperDescriptor,
stringTagHelperDescriptor
}
},
{
new Dictionary<string, IEnumerable<Type>>
{
{ assemblyA, new [] { Valid_PlainTagHelperType, Valid_InheritedTagHelperType } },
{ assemblyB, new [] { stringType } }
},
new []
{
new TagHelperDirectiveDescriptor(
"*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor(
"*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor(
"Microsoft*TagHelper?, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
new TagHelperDirectiveDescriptor(
stringType.FullName + "?, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
},
new []
{
Valid_InheritedTagHelperDescriptor,
Valid_PlainTagHelperDescriptor,
stringTagHelperDescriptor
}
},
}; };
} }
} }
@ -566,9 +627,21 @@ namespace Microsoft.AspNet.Razor.Runtime.TagHelpers
new TagHelperDirectiveDescriptor("?icrosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper), new TagHelperDirectiveDescriptor("?icrosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor("?ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper), new TagHelperDirectiveDescriptor("?ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor("*?????r, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper), new TagHelperDirectiveDescriptor("*?????r, " + assemblyA, TagHelperDirectiveType.RemoveTagHelper),
new TagHelperDirectiveDescriptor("Sy????em.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper) new TagHelperDirectiveDescriptor("Sy??em.*, " + assemblyB, TagHelperDirectiveType.RemoveTagHelper)
} }
} },
{
new Dictionary<string, IEnumerable<Type>>
{
{ assemblyA, new [] { Valid_PlainTagHelperType, Valid_InheritedTagHelperType } },
{ assemblyB, new [] { stringType } },
},
new []
{
new TagHelperDirectiveDescriptor("?i?crosoft.*, " + assemblyA, TagHelperDirectiveType.AddTagHelper),
new TagHelperDirectiveDescriptor("??ystem.*, " + assemblyB, TagHelperDirectiveType.AddTagHelper),
}
},
}; };
} }
} }

View File

@ -12,7 +12,7 @@ namespace TestOutput
string __tagHelperDirectiveSyntaxHelper = null; string __tagHelperDirectiveSyntaxHelper = null;
__tagHelperDirectiveSyntaxHelper = __tagHelperDirectiveSyntaxHelper =
#line 1 "AddTagHelperDirective.cshtml" #line 1 "AddTagHelperDirective.cshtml"
"something, nice" "**??**??*, nice"
#line default #line default
#line hidden #line hidden

View File

@ -13,7 +13,7 @@ namespace TestOutput
string __tagHelperDirectiveSyntaxHelper = null; string __tagHelperDirectiveSyntaxHelper = null;
__tagHelperDirectiveSyntaxHelper = __tagHelperDirectiveSyntaxHelper =
#line 1 "ComplexTagHelpers.cshtml" #line 1 "ComplexTagHelpers.cshtml"
"something, nice" "T?g??lpe*, nice"
#line default #line default
#line hidden #line hidden

View File

@ -1,4 +1,4 @@
#pragma checksum "ComplexTagHelpers.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "34039b21327142e9261c7acb3bcd0a4365e0cfa2" #pragma checksum "ComplexTagHelpers.cshtml" "{ff1816ec-aa5e-4d10-87f7-6f4963833460}" "184461ac3cd2d1747e4480d78478e69dbf800e65"
namespace TestOutput namespace TestOutput
{ {
using Microsoft.AspNet.Razor.Runtime.TagHelpers; using Microsoft.AspNet.Razor.Runtime.TagHelpers;

View File

@ -1 +1 @@
@addTagHelper "something, nice" @addTagHelper "**??**??*, nice"

View File

@ -1,4 +1,4 @@
@addTagHelper "something, nice" @addTagHelper "T?g??lpe*, nice"
@if (true) @if (true)
{ {