Rename HtmlCase => HtmlConventions.

- Moved the invalid non-whitespace html character entries from the various builders into the new HtmlConventions class.
- Updated test file name.
This commit is contained in:
N. Taylor Mullen 2017-05-19 12:35:56 -07:00
parent 6b1117caa9
commit 9bc9f0ef05
8 changed files with 18 additions and 27 deletions

View File

@ -2,11 +2,12 @@
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
namespace Microsoft.AspNetCore.Razor.Language
{
public static class HtmlCase
public static class HtmlConventions
{
private const string HtmlCaseRegexReplacement = "-$1$2";
@ -20,6 +21,9 @@ namespace Microsoft.AspNetCore.Razor.Language
RegexOptions.None,
TimeSpan.FromMilliseconds(500));
public static IReadOnlyCollection<char> InvalidNonWhitespaceHtmlCharacters { get; } = new HashSet<char>(
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
/// <summary>
/// Converts from pascal/camel case to lower kebab-case.
/// </summary>

View File

@ -9,9 +9,6 @@ namespace Microsoft.AspNetCore.Razor.Language
{
public sealed class RequiredAttributeDescriptorBuilder
{
private static ICollection<char> InvalidNonWhitespaceAttributeNameCharacters { get; } = new HashSet<char>(
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
private string _name;
private RequiredAttributeDescriptor.NameComparisonMode _nameComparison;
private string _value;
@ -105,7 +102,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
foreach (var character in _name)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceAttributeNameCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedAttributeName(_name, character);

View File

@ -31,9 +31,6 @@ namespace Microsoft.AspNetCore.Razor.Language
[typeof(decimal).FullName] = "decimal",
};
private static ICollection<char> InvalidNonWhitespaceAttributeNameCharacters { get; } = new HashSet<char>(
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
private bool _isEnum;
private bool _hasIndexer;
private string _indexerValueTypeName;
@ -191,7 +188,7 @@ namespace Microsoft.AspNetCore.Razor.Language
foreach (var character in _name)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceAttributeNameCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributeName(
_containingTypeName,
@ -227,7 +224,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
foreach (var character in _indexerNamePrefix)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceAttributeNameCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidBoundAttributePrefix(
_containingTypeName,

View File

@ -12,10 +12,6 @@ namespace Microsoft.AspNetCore.Razor.Language
internal const string DescriptorKind = "ITagHelper";
internal const string TypeNameKey = "ITagHelper.TypeName";
private static ICollection<char> InvalidNonWhitespaceAllowedChildCharacters { get; } = new HashSet<char>(
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
private string _displayName;
private string _documentation;
private string _tagOutputHint;
@ -199,7 +195,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
foreach (var character in name)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceAllowedChildCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidRestrictedChild(name, _typeName, character);

View File

@ -10,9 +10,6 @@ namespace Microsoft.AspNetCore.Razor.Language
{
public sealed class TagMatchingRuleBuilder
{
private static ICollection<char> InvalidNonWhitespaceTagNameCharacters { get; } = new HashSet<char>(
new[] { '@', '!', '<', '/', '?', '[', '>', ']', '=', '"', '\'', '*' });
private string _tagName;
private string _parentTag;
private TagStructure _tagStructure;
@ -126,7 +123,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
foreach (var character in _tagName)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceTagNameCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedTagName(_tagName, character);
@ -147,7 +144,7 @@ namespace Microsoft.AspNetCore.Razor.Language
{
foreach (var character in _parentTag)
{
if (char.IsWhiteSpace(character) || InvalidNonWhitespaceTagNameCharacters.Contains(character))
if (char.IsWhiteSpace(character) || HtmlConventions.InvalidNonWhitespaceHtmlCharacters.Contains(character))
{
var diagnostic = RazorDiagnosticFactory.CreateTagHelper_InvalidTargetedParentTagName(_parentTag, character);

View File

@ -88,7 +88,7 @@ namespace Microsoft.CodeAnalysis.Razor
descriptorBuilder.TagMatchingRule(ruleBuilder =>
{
var htmlCasedName = HtmlCase.ToHtmlCase(name);
var htmlCasedName = HtmlConventions.ToHtmlCase(name);
ruleBuilder.RequireTagName(htmlCasedName);
});
@ -197,7 +197,7 @@ namespace Microsoft.CodeAnalysis.Razor
string.IsNullOrEmpty((string)attributeNameAttribute.ConstructorArguments[0].Value))
{
hasExplicitName = false;
attributeName = HtmlCase.ToHtmlCase(property.Name);
attributeName = HtmlConventions.ToHtmlCase(property.Name);
}
else
{

View File

@ -32,7 +32,7 @@ namespace Microsoft.CodeAnalysis.Razor
{
var assemblyName = type.ContainingAssembly.Name;
var shortName = GetShortName(type);
var tagName = $"vc:{HtmlCase.ToHtmlCase(shortName)}";
var tagName = $"vc:{HtmlConventions.ToHtmlCase(shortName)}";
var typeName = $"__Generated__{shortName}ViewComponentTagHelper";
var displayName = shortName + "ViewComponentTagHelper";
var descriptorBuilder = TagHelperDescriptorBuilder.Create(typeName, assemblyName)
@ -141,7 +141,7 @@ namespace Microsoft.CodeAnalysis.Razor
// because there are two ways of setting values for the attribute.
builder.RequireAttribute(attributeBuilder =>
{
var lowerKebabName = HtmlCase.ToHtmlCase(parameter.Name);
var lowerKebabName = HtmlConventions.ToHtmlCase(parameter.Name);
attributeBuilder.Name(lowerKebabName);
});
}
@ -152,7 +152,7 @@ namespace Microsoft.CodeAnalysis.Razor
{
foreach (var parameter in methodParameters)
{
var lowerKebabName = HtmlCase.ToHtmlCase(parameter.Name);
var lowerKebabName = HtmlConventions.ToHtmlCase(parameter.Name);
var typeName = parameter.Type.ToDisplayString(FullNameTypeDisplayFormat);
builder.BindAttribute(attributeBuilder =>
{

View File

@ -5,7 +5,7 @@ using Xunit;
namespace Microsoft.AspNetCore.Razor.Language
{
public class HtmlCaseTest
public class HtmlConventionsTest
{
public static TheoryData HtmlConversionData
{
@ -30,7 +30,7 @@ namespace Microsoft.AspNetCore.Razor.Language
public void ToHtmlCase_ReturnsExpectedConversions(string input, string expectedOutput)
{
// Arrange, Act
var output = HtmlCase.ToHtmlCase(input);
var output = HtmlConventions.ToHtmlCase(input);
// Assert
Assert.Equal(output, expectedOutput);